|
|
发表于 2012-8-15 14:04:24
|
显示全部楼层
本帖最后由 メ㊣逆ご帅☆ 于 2012-8-16 11:02 编辑
时间关系,我不进行算法跟踪
查了下,该程序用了CRC32进行效验
只要代码内部代码有改动(比如int3断点,或者汇编修改)
我没学过破解只是了解过所以无法解决
抱歉。。。
勉强在OD环境下能爆破但不能保存到可执行文件
如果有高手真正解决了,分你给他把,如果没有回答比我有用一点的
分给我吧{:7_158:}
我去百度查了几种MFC获取编辑框内容的方式
并一一试了,发现他用了GetWindowTextA
OK,我们bp GetWindowTextA
F8向下跑, 跑很多条指令,其实很多我们不用管,我们只管找到计算RegKey的地方执行爆破,一般都是循环在计算RegKey
00401554 . 68 EC404000 push CrackMe.004040EC ; /s2 = ""
00401559 . 50 push eax ; |s1
0040155A . FFD5 call ebp ; \_mbscmp
中途我们发现这里
0040155F . 85C0 test eax,eax
在其后两条指令中发现test eax,eax
我们将ZF取反,运行后可以发现这里是检测是否输入了用户名和RegKey
以上红色部分可无需留意
继续向下跑
发现
并看到循环指令
0040157B . 33C0 xor eax,eax
0040157D > 0FBE1401 movsx edx,byte ptr ds:[ecx+eax]
00401581 . 81F2 AA000000 xor edx,0xAA
00401587 . 03FA add edi,edx
00401589 . 40 inc eax
0040158A . 83F8 09 cmp eax,0x9
0040158D .^ 7C EE jl XCrackMe.0040157D
这里0040157D > 0FBE1401 movsx edx,byte ptr ds:[ecx+eax]
很明显涉及对RegKey进行计算处理
由于我们不做注册机,直接跟到循环结束找关键点(应该会有一个寄存器存放计算正确或错误的返回值)
004015A4 . 85C0 test eax,eax
找到了这个,我们猜测这是返回值
F8执行完这个test eax,eax后
发现两个标志位出现修改
我们对ZF位进行取反操作(双击取反)
然后F9跑起来
OK,注册码正确
|
评分
-
查看全部评分
|