本帖最后由 coolszy 于 2010-2-22 20:22 编辑
【文章标题】: 一个Delphi写的CrackMe分析
【文章作者】: coolszy
【软件名称】: CrackMe
【下载地址】: 附件中
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
1.PEID查壳:Borland Delphi 6.0
2.运行程序输入用户名和密码,但是没有【确定】等按钮,OD载入查找字符串也无果。
3.观察程序,未输入注册码时在用户名下面有如下字符串“Hello...”,但是输入注册码后,字符串消失了,估计如果输入
正确的注册码应该在该处会提示注册码正确等类似的提示。
4.懂得编程的都知道在注册码输入内容后会引发一个Change事件,由此我想到下该断点,但是才疏学浅,不知道是哪个断点,
百度也无果。
5.无法解决,怎么办呢,突然想到是Delphi的,于是用DeDe试试。
6.载入DeDe分析完毕后,点击“过程”,选中“TForm1”后看到事件窗口中存在一个Edt2Change事件,并发现RVA=00452ED0,OK,
7.OD载入,来到00452ED0,下断,F9运行,输入用户名,刚输入注册码OD断下。
00452ED0 /. 55 push ebp ; 下断
00452ED1 |. 8BEC mov ebp,esp
00452ED3 |. 33C9 xor ecx,ecx
00452ED5 |. 51 push ecx
00452ED6 |. 51 push ecx
00452ED7 |. 51 push ecx
00452ED8 |. 51 push ecx
F8单步走,
00452EF1 |. 8B83 00030000 mov eax,dword ptr ds:[ebx+300]
00452EF7 |. E8 20EDFDFF call Project1.00431C1C
00452EFC |. 8B45 F4 mov eax,[local.3] ; 读取用户名
00452EFF |. E8 CC11FBFF call Project1.004040D0
00452F04 |. 69C0 B2E42E01 imul eax,eax,12EE4B2
00452F0A |. 05 AE0D2F01 add eax,12F0DAE
00452F0F |. 8D55 F8 lea edx,[local.2]
00452F12 |. E8 414CFBFF call Project1.00407B58
00452F17 |. FF75 F8 push [local.2]
00452F1A |. 8D55 EC lea edx,[local.5] ; 一数字串
00452F1D |. 8B83 00030000 mov eax,dword ptr ds:[ebx+300]
00452F23 |. E8 F4ECFDFF call Project1.00431C1C
00452F28 |. 8B45 EC mov eax,[local.5] ; 读取用户名
00452F2B |. E8 A011FBFF call Project1.004040D0
在往下走,来到该处
00452F59 |. BA 03000000 mov edx,3
00452F5E |. E8 2D12FBFF call Project1.00404190 ; 进入
00452F63 |. 8B45 FC mov eax,[local.1] ; 在该处有一字符串有数字和用户名组成,进入上面的Call分析看看
00452F66 |. E8 6511FBFF call Project1.004040D0
00452F6B |. 8D55 E4 lea edx,[local.7]
F7进入到00452F5E处Call,具体内容自己进去分析,出Call后eax=1588138361coolszy,即为注册码。
继续往下走可找到爆破的地方。
00452F7F |. E8 9812FBFF call Project1.0040421C
00452F84 |. 75 1E jnz short Project1.00452FA4 ; 关键跳,Nop掉即可爆破
00452F86 |. 8D55 E0 lea edx,[local.8]
00452F89 |. 8B83 10030000 mov eax,dword ptr ds:[ebx+310]
分析完毕,我们再试试我们找到的注册码是否正确。
--------------------------------------------------------------------------------
【经验总结】
第一次接触没有按钮的CrackMe,因此输入用户名和密码后不知怎么办,幸好这个是Delphi写的,因此知道使用DeDe,但是
如果是其他语言,下断点还要多动脑筋了。总之多动手,多总结,多分析方可提高水平。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于coolszy, 转载请注明作者并保持文章的完整, 谢谢!
2010年02月22日 20:31:06 |