Malimali 发表于 2017-6-2 08:12:33

学习汇编_160个CrackMe之004(CKme)的实战分析

学习汇编_160个CrackMe之004(CKme)的实战分析
近来开端学习这160个CrackMe,今日晚上研讨这个004,完成后搜了论坛以前发的贴子,没有完好的对这个CRACKME的说明,所以将的的剖析进程共享一下,有不对的地方请纠正。
下载地址:
程序说明:没有按钮,只能两个文本框,一个用户名,一个注册码,作者提示:假如注册成功,程序中会呈现"朱茵"小姐的一幅靓照。
程序运行后界面如下:



输入用户名和注册码后,程序没反应,下断点:GetDlgItemTextA,GetDlgItemTextW,GetWindowTextA,GetWindowTextW无效,TranslateMessage断点,设置条件按键事情能够成功断下,但盯梢了几回没发现有用的代码。
还是用DeDe反编译看一下吧。


程序调用的进程很少,有用的只有Edit2的事情(chkcode)和panel1的两个事情(单击事情和双击事情。)


按DeDe中的反编译事情地址,先对Edit2的事情(chkcode)代码下断点,盯梢后,代码有一个跳转为要害跳转。



00457D2C|.8B45 E0       mov eax,                        ;输入的序列号
00457D2F|.8B93 18030000 mov edx,dword ptr ds:         ;黑头Sun Bird11dseloffc-012-OK+用户名
00457D35|.E8 52BFFAFF   call CKme.00403C8C    这个CALL里对序列号进行比照,
00457D3A|.75 0A         jnz short CKme.00457D46                  ;要害对比,这个地方会写入“准确”的象征
00457D3C|.C783 0C030000>mov dword ptr ds:,0x3E
这些代码现已能够看出,程序的准确注册码即是: 黑头Sun Bird11dseloffc-012-OK+用户名,输入准确后,把变量值改为0x3E,但接下来并没有显现图像。



接下来对panel1的两个事情(单击事情和双击事情。)代码别离下好断点,点击panel1触发:


00458031|.81BE 0C030000>cmp dword ptr ds:,0x85      ;对比注册象征,准确则调用显现图像代码
0045803B|.75 76         jnz short CKme.004580B3
0045803D|.33DB          xor ebx,ebx
这儿对比是否为0x85 ,而之前chkcode中的值是0x3E,所以程序没有什么反响。接下来,撤销单击事情的断点,对panel1双击,断了下来。




00457EF5|.83BE 0C030000>cmp dword ptr ds:,0x3E      ;查看注册标志,如果是3E则不跳转,改为85
00457EFC|.75 0A         jnz short CKme.00457F08                                 
00457EFE|.C786 0C030000>mov dword ptr ds:,0x85      ;改为85
这回看理解了,在双击事情中若地址值为0x3E则改为0x85刚好满意单击事情中对地址值的查看。接下来,继续进行程序,对panel1单击,图像显示出来了。



至些程序破解完结,注册码是:黑头Sun Bird11dseloffc-012-OK+你输入的用户名,输入注码有必要触发键盘事情(粘贴无效),后对图像框双击,此时如果在OD中对单击事情下了断点,则无法触发双击事情,也就不能把注册象征改为0x85,也就不能至达注册的最终步骤,或许这儿即是作者说的“其他这个CKme还作了一点其他四肢”,只要双击事情触发成功后,再点击图像框才干完结最终的注册效果,本程序的要点不在于注册码的算法,而是注册的进程。

页: [1]
查看完整版本: 学习汇编_160个CrackMe之004(CKme)的实战分析