首页
社区
课程
招聘
[原创]CrackMe技术等级自测系统(第三关)
发表于: 2012-6-27 13:16 6337

[原创]CrackMe技术等级自测系统(第三关)

2012-6-27 13:16
6337

【文章标题】: CrackMe技术等级自测系统(第三关)
【文章作者】: 李大春
【作者邮箱】: 目前木有
【软件名称】: crackme03
【下载地址】: crackme板块有
【加壳方式】: 无
【保护方式】: 无壳
【编写语言】: Borland Delphi 3.0
【使用工具】: OD1.10
【操作平台】: XP SP3
【软件介绍】: 是在论坛看到的crackme
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  看了一下,有位仁兄发了个贴,说过了3关开始给介绍工作,而且6K以上,呵呵!!!纯属给兄弟们添堵,没有作者说得那么难,估计是一种心理暗示。
  废话不多说,先说说这个crackme,前两关,无限简单,属于无知少女级别。如有需求再放出破解贴。
  开始:
  选择方式:追码(可以爆破,但是没有追码容易)
  PEID查壳,无壳,这个Crackme前三关(至少目前)是无壳的。
  运行一下程序见图1(不会插图还是算了吧)
  发现除About按钮外无任何按钮。根本无注册按钮,倒是有your name 和your key的提示。明显是隐藏了,只有输入正确用户名与注册码是才能显示过关提示。
  用pexploere打开程序,在RC数据的TFORM1中双击,找到SpeedButton1:TspeedButton里看到Rigister按钮,但是被False了
  改为Ture,然后保存退出,重新运行程序发现已有Rigister按钮(图2)。用DEDE载入程序,找到过程中的SpeedButton1Click事件
  双击得到按钮事件的地址。(00430E10)
  
  开始OD调试
  OD载入,直接Ctrl+g来到00430E10 F2下断,运行程序,输入用户名admin1(用户名最好是六位)与注册码123456,点Rigister按钮,程序断在00430E10处,
  00430E10  /.  55            push ebp
  00430E11  |.  8BEC          mov ebp,esp
  00430E13  |.  6A 00         push 0
  00430E15  |.  6A 00         push 0
  00430E17  |.  53            push ebx
  00430E18  |.  8BD8          mov ebx,eax
  00430E1A  |.  33C0          xor eax,eax
  00430E1C  |.  55            push ebp
  00430E1D  |.  68 AF0F4300   push CrackMe0.00430FAF
  00430E22  |.  64:FF30       push dword ptr fs:[eax]
  单步走,来到下面
  00430EAF  |.  E8 202AFDFF   call CrackMe0.004038D4
  00430EB4  |.  83F8 06       cmp eax,6
  00430EB7  |.  0F8C D4000000 jl CrackMe0.00430F91                             不能跳
  00430EBD  |.  8D55 FC       lea edx,dword ptr ss:[ebp-4]
  00430EC0  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+1DC]
  00430EC6  |.  E8 5585FEFF   call CrackMe0.00419420
  00430ECB  |.  837D FC 00    cmp dword ptr ss:[ebp-4],0
  00430ECF  |.  0F84 BC000000 je CrackMe0.00430F91                              不能跳
  00430ED5  |.  E8 A6010000   call CrackMe0.00431080
  00430EDA  |.  8D55 FC       lea edx,dword ptr ss:[ebp-4]
  00430EDD  |.  8B83 DC010000 mov eax,dword ptr ds:[ebx+1DC]
  00430EE3  |.  E8 3885FEFF   call CrackMe0.00419420
  00430EE8  |.  8B45 FC       mov eax,dword ptr ss:[ebp-4]
  00430EEB  |.  50            push eax
  00430EEC  |.  8D55 F8       lea edx,dword ptr ss:[ebp-8]
  00430EEF  |.  A1 A4474300   mov eax,dword ptr ds:[4347A4]
  00430EF4  |.  E8 5757FDFF   call CrackMe0.00406650                                             算法
  00430EF9  |.  8B55 F8       mov edx,dword ptr ss:[ebp-8]
  00430EFC  |.  58            pop eax
  00430EFD  |.  E8 E22AFDFF   call CrackMe0.004039E4
  00430F02  |.  0F85 89000000 jnz CrackMe0.00430F91                     必须不能跳,跳就Game Over了
  00430F08  |.  68 40200000   push 2040                                ; /Style = MB_OK|MB_ICONASTERISK|MB_TASKMODAL
  00430F0D  |.  68 30104300   push CrackMe0.00431030                   ; |Title = "You're now registered!"
  00430F12  |.  68 48104300   push CrackMe0.00431048                   ; |Text = "Thank you for registering..."
  00430F17  |.  6A 00         push 0                                   ; |hOwner = NULL
  00430F19  |.  E8 3648FDFF   call <jmp.&user32.MessageBoxA>           ; \MessageBoxA   提示出来了呵呵
  00430F1E  |.  8B83 F4010000 mov eax,dword ptr ds:[ebx+1F4]
  00430F24  |.  8B40 50       mov eax,dword ptr ds:[eax+50]
  00430F27  |.  BA 08000080   mov edx,80000008
  00430F2C  |.  E8 2309FEFF   call CrackMe0.00411854
  00430F31  |.  8D55 FC       lea edx,dword ptr ss:[ebp-4]
  00430F34  |.  8B83 E4010000 mov eax,dword ptr ds:[ebx+1E4]
  00430F3A  |.  E8 E184FEFF   call CrackMe0.00419420
  00430F3F  |.  8B4D FC       mov ecx,dword ptr ss:[ebp-4]
  00430F42  |.  8D45 F8       lea eax,dword ptr ss:[ebp-8]
  00430F45  |.  BA 70104300   mov edx,CrackMe0.00431070                ;  ASCII "registered to " O~~~YES
  00430F4A  |.  E8 D129FDFF   call CrackMe0.00403920
  
  
  发现00430F45有registered to  呵呵 快到了哦。
  呵呵所以呢,坚决不能让00430EB7处和00430ECF处的两处大跳转实现,呵呵
  00430EF4处的CALL为算法CALL能根据填写的用户名算出具体正确的注册码。我们就不进去晃悠了,单步走
  走到00430EF9处时,观察堆栈,呵呵我们的注册码登场!!!!!!
  
  0012FD08   009552F4  ASCII "123456"
  0012FD0C   0012FE18  指针到下一个 SEH 记录
  0012FD10   00430FAF  SE 句柄
  0012FD14   0012FD24
  0012FD18   00953AB8
  0012FD1C   00952690  ASCII "224646482"           呵呵注册码登场
  0012FD20   009552F4  ASCII "123456"              这是我们输入的假码
  0012FD24  /0012FD48
  0012FD28  |00419E1F  返回到 CrackMe0.00419E1F
  0012FD2C  |0042F688  CrackMe0.0042F688
  0012FD30  |0042F68D  返回到 CrackMe0.0042F68D 来自 CrackMe0.00419E04
  0012FD34  |0042F676  返回到 CrackMe0.0042F676 来自 CrackMe0.00402CD0
  
  自此追码过程结束呵呵
  付用户名与注册码
  your name:admin1
  your key :224646482
  直接在源程序中用得到过关提示 Thank you for registering...
  前两关比较简单大家练手,呵呵有需要再发上来吧。
  为了兄弟们观看方便,两张图片,图片1,2和两个附件,改动前和改动后都已经打包。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于大春, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2012年06月27日 下午 01:11:24


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (3)
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
2
果断沙发ing......................
2012-6-27 13:52
0
雪    币: 118
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
求样本···
2012-6-27 16:11
0
雪    币: 63
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
呵呵 已经打包未附件呵呵
2012-6-28 11:09
0
游客
登录 | 注册 方可回帖
返回
//