160个Crackme之028学习笔记

本帖最后由 海天一色001 于 2019-6-23 19:14 编辑

28CM程序,输入name/serial=52pojie/1234567890”,程序自动将小写字母转换成大写形式,点击“CHECK”按钮,弹出错误提示框:



第一步、查壳:



和上一个一样,无壳,VC++6.0编程:
第二步、爆破OD载入CoSH.2.exe,智能搜索字符串:



0040153D这一行双击进入CPU窗口:



在错误提示上面的00401536处是由7个地方跳转来的,走向错误,直接将这一行改成jmp 0040154D让它跳到正确提示,保存成可执行文件CoSH.2.jmp.exe,运行一下,不输入任何东西,点击“CHECK”按钮,弹出正确提示,爆破成功。



第三步、追码:00401536处的跳转指令撤消修改,观察代码,本以为是很复杂的算法,没想到出乎意料的简单,name最少5位字符,小写字母自动转化成大写字母,serial是固定的值6287-A!所以就没有注册机了。

具体分析过程如下:
[Asm] 纯文本查看 复制代码

004014CE   .  8DBE A0000000 lea edi,dword ptr ds:[esi+0xA0]
004014D4   .  8BCF          mov ecx,edi
004014D6   .  E8 6F030000   call <jmp.&MFC42.#CWnd::GetWindowTextLengthA_3876>         ;  得到name长度
004014DB   .  8B1D FC214000 mov ebx,dword ptr ds:[<&USER32.PostQuitMessage>]
004014E1   .  83F8 05       cmp eax,0x5                                                ;  name不少于5位
004014E4   .  7E 50         jle short CoSH_2.00401536
004014E6   .  8D6E 60       lea ebp,dword ptr ds:[esi+0x60]
004014E9   .  8BCD          mov ecx,ebp
004014EB   .  E8 5A030000   call <jmp.&MFC42.#CWnd::GetWindowTextLengthA_3876>         ;  得到假码长度
004014F0   .  83F8 05       cmp eax,0x5                                                ;  序列号不少于5位
004014F3   .  7E 41         jle short CoSH_2.00401536
004014F5   .  8D86 E0000000 lea eax,dword ptr ds:[esi+0xE0]
004014FB   .  8BCF          mov ecx,edi
004014FD   .  50            push eax
004014FE   .  E8 41030000   call <jmp.&MFC42.#CWnd::GetWindowTextA_3874>               ;  eax=len(name);[ecx]=name.text
00401503   .  8DBE E4000000 lea edi,dword ptr ds:[esi+0xE4]
00401509   .  8BCD          mov ecx,ebp
0040150B   .  57            push edi
0040150C   .  E8 33030000   call <jmp.&MFC42.#CWnd::GetWindowTextA_3874>               ;  [eax]=len(Serial);[ecx]=serial.text
00401511   .  8B07          mov eax,dword ptr ds:[edi]
00401513   .  8038 36       cmp byte ptr ds:[eax],0x36                                 ;  cmp(asc(serial(1),0x36):第一位与6比较,说明第一位是6
00401516   .  75 1E         jnz short CoSH_2.00401536
00401518   .  8078 01 32    cmp byte ptr ds:[eax+0x1],0x32                             ;  第二位与2比较,说明第二位是2
0040151C   .  75 18         jnz short CoSH_2.00401536
0040151E   .  8078 02 38    cmp byte ptr ds:[eax+0x2],0x38                             ;  第三位是8
00401522   .  75 12         jnz short CoSH_2.00401536
00401524   .  8078 03 37    cmp byte ptr ds:[eax+0x3],0x37                             ;  第四位是7
00401528   .  75 0C         jnz short CoSH_2.00401536
0040152A   .  8078 04 2D    cmp byte ptr ds:[eax+0x4],0x2D                             ;  第五位是“-”
0040152E   .  75 06         jnz short CoSH_2.00401536
00401530   .  8078 05 41    cmp byte ptr ds:[eax+0x5],0x41                             ;  第六位是A
00401534   .  74 17         je short CoSH_2.0040154D                                   ;  注册码应该是固定的:6287-A  关键跳
00401536      6A 00         push 0x0
00401538   .  68 64304000   push CoSH_2.00403064                                       ;  ERROR
0040153D   .  68 38304000   push CoSH_2.00403038                                       ;  One of the Details you entered was wrong
00401542   .  8BCE          mov ecx,esi
00401544   .  E8 F5020000   call <jmp.&MFC42.#CWnd::MessageBoxA_4224>
00401549   .  6A 00         push 0x0
0040154B   .  FFD3          call ebx                                                   ;  user32.PostQuitMessage
0040154D   >  8D8E E0000000 lea ecx,dword ptr ds:[esi+0xE0]
00401553   .  8D5424 14     lea edx,dword ptr ss:[esp+0x14]
00401557   .  51            push ecx
00401558   .  68 2C304000   push CoSH_2.0040302C                                       ;  Well done,

附件

028.zip

(72.38 KB, 下载次数: 0)

2019-6-23 19:09 上传
点击文件名下载附件

下载积分: 吾爱币 -1 CB

,含CM原程序、爆破后的程序、OD的调试文件等。百度链接是:http://pan.baidu.com/s/1skMkJY9,密码: 86pm160CM、我已练习过的前28crackme程序(不含012)都在里面。   

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消
    昵称