我写的第一个crackme(没什么难度)
注册吾爱第一个帖子。也是我写的第一个crackme
快来破解看看吧!
1.搜索字符串,回车进去来到了
013525C1 /75 1E jnz short 52pojie_.013525E1
013525C3 |817D E8 6540351>cmp dword ptr ss:,0x1B354065
013525CA |75 15 jnz short 52pojie_.013525E1
013525CC |68 409B3501 push 52pojie_.01359B40 ; 破解成功,吾爱万岁!\n
013525D1 |A1 D0D03501 mov eax,dword ptr ds:[<&MSVCP140D.std::cou>
013525D6 |50 push eax ; msvcp140.std::cin
013525D7 |E8 31ECFFFF call 52pojie_.0135120D
013525DC |83C4 08 add esp,0x8
013525DF |EB 13 jmp short 52pojie_.013525F4
013525E1 \68 589B3501 push 52pojie_.01359B58 ; 破解失败,加油!\n
2.013525CA这一行直接改为jnz short 013525CC,爆破成功
isurreal 发表于 2020-3-31 10:21
确实挺简单的
大佬,厉害了,我找到关键跳后,直接用IDA分析41127B那个call去了,然后发现里面直接返回了,一脸懵逼,看了你的之后才想起来......{:1_893:}
字符串搜索进去后,直接找到段首
01352530 55 push ebp
01352531 8BEC mov ebp,esp
01352533 81EC DC000000 sub esp,0xDC
然后IDA搜索2530这个call,得到
int sub_412530()
{
int v0; // edx
int v2; //
int v3; //
int savedregs; //
sub_411271(&unk_41E025);
sub_41120D(std::cout, "输入1:");
std::basic_istream<char,std::char_traits<char>>::operator>>(std::cin, &v3);
sub_41127B();
sub_41120D(std::cout, "输入2:");
std::basic_istream<char,std::char_traits<char>>::operator>>(std::cin, &v2);
sub_41127B();
if ( v3 != 56256568 || v2 != 456474725 )
sub_41120D(std::cout, "破解失败,加油!\n");
else
sub_41120D(std::cout, "破解成功,吾爱万岁!\n");
system("pause");
sub_41127B();
sub_41129E(&savedregs, &dword_41263C, 0, v0);
return sub_41127B();
}
3.输入的数据1存在v3中,输入2存在v2中,那两个call是幌子,没干啥,然后直接比较等不等于两个常数。 破解完了,确实没有难度。
本来想跟出来注册码的,没跟出来。。。
确实挺简单的 厉害,再努力学习中 不知道为啥是这样{:301_983:}我哭 GJH588 发表于 2020-3-31 17:48
不知道为啥是这样我哭
你应该是32位的操作系统吧,可能不支持 本人正读初一,网课下课时写了这个软件,还请各位多多指教
页:
[1]
2