首页
社区
课程
招聘
[旧帖] [原创]爆破Crackme.rar_469 0.00雪花
发表于: 2016-1-17 11:21 1649

[旧帖] [原创]爆破Crackme.rar_469 0.00雪花

2016-1-17 11:21
1649
crackme提供者:aqtata
http://bbs.pediy.com/showthread.php?t=6870

工具:od
平台:winxpsp3

这个程序有壳,有上次脱壳的经验这次也顺利的脱掉了壳,脱壳后的文件显著增大了。脱壳不是我现在关注的重点,下面开始爆破。
单独运行脱壳后的程序会闪退,od载入运行会报堆栈溢出错,正如作者所说程序有防止脱壳爆破的文件校验。
00404D59   .  50            push    eax                              ; /FileName
00404D5A   .  E8 C5C6FFFF   call    <jmp.&MSVBVM60.rtcFileLen>       ; \rtcFileLen
00404D5F   .  33C9          xor     ecx, ecx
00404D61   .  3D 69420000   cmp     eax, 4269                        ;校验文件大小
00404D66   .  8D45 D4       lea     eax, dword ptr [ebp-2C]
00404D69   .  50            push    eax
00404D6A   .  8D45 D8       lea     eax, dword ptr [ebp-28]
00404D6D   .  50            push    eax
00404D6E   .  8D45 E0       lea     eax, dword ptr [ebp-20]
00404D71   .  50            push    eax
00404D72   .  8D45 DC       lea     eax, dword ptr [ebp-24]
00404D75   .  50            push    eax
00404D76   .  8D45 E4       lea     eax, dword ptr [ebp-1C]
00404D79   .  0F9FC1        setg    cl                               ;利用校验结果(爆破点)
00404D7C   .  F7D9          neg     ecx
00404D7E   .  50            push    eax
00404D7F   .  6A 05         push    5
00404D81   .  8BF9          mov     edi, ecx                         ;传到edi   
00404D83   .  E8 D2C6FFFF   call    <jmp.&MSVBVM60.__vbaFreeStrList>
00404D88   .  8D45 CC       lea     eax, dword ptr [ebp-34]
00404D8B   .  50            push    eax
00404D8C   .  8D45 D0       lea     eax, dword ptr [ebp-30]
00404D8F   .  50            push    eax
00404D90   .  6A 02         push    2
00404D92   .  E8 7BC6FFFF   call    <jmp.&MSVBVM60.__vbaFreeObjList>
00404D97   .  83C4 24       add     esp, 24
00404D9A      66:3BFB       cmp     di, bx                           ;检测校验(爆破点)
00404D9D      74 59         je      short 00404DF8                   ;(爆破点)

在我标注的爆破点都可以爆破校验,大家可根据自己的习惯采取自己惯用的指令爆破。在此,我就不罗嗦了。爆破后保存的文件就可以正常运行了。
作者说程序还有反调试代码,我仅看到有检测ollydbg的代码。我用的是看雪下载的ollyice未触发反调试,具体原因未深究。
00403E5B   > \FF75 DC       push    dword ptr [ebp-24]
00403E5E   .  68 24274000   push    00402724
00403E63   .  E8 E6D5FFFF   call    <jmp.&MSVBVM60.__vbaStrCmp>
00403E68   .  8BD8          mov     ebx, eax
00403E6A   .  8D4D DC       lea     ecx, dword ptr [ebp-24]
00403E6D   .  F7DB          neg     ebx
00403E6F   .  1BDB          sbb     ebx, ebx
00403E71   .  43            inc     ebx
00403E72   .  F7DB          neg     ebx
00403E74   .  E8 C9D5FFFF   call    <jmp.&MSVBVM60.__vbaFreeStr>
00403E79   .  8D4D CC       lea     ecx, dword ptr [ebp-34]
00403E7C   .  E8 BBD5FFFF   call    <jmp.&MSVBVM60.__vbaFreeObj>
00403E81   .  66:3BDF       cmp     bx, di                         ;检查是否输入了注册码(爆破点)
00403E84   .  0F85 4E050000 jnz     004043D8                       ;(爆破点)

我喜欢爆破后输不输信息都可以,所以有了上面的爆破点。
0040971B   .  FF75 E4       push    dword ptr [ebp-1C]                      ; /String = "REQBMVRUNZ"
0040971E   .  E8 C17DFFFF   call    <jmp.&MSVBVM60.__vbaLenBstr>            ; \__vbaLenBstr
00409723   .  FF75 E8       push    dword ptr [ebp-18]                      ; /String = NULL
00409726   .  8BD8          mov     ebx, eax                                ; |
00409728   .  E8 B77DFFFF   call    <jmp.&MSVBVM60.__vbaLenBstr>            ; \__vbaLenBstr
0040972D   .  3BC3          cmp     eax, ebx                                ;检查注册码长度是否匹配
0040972F   .  0F85 F4000000 jnz     00409829                                ;(爆破点)

这里可以看到程序计算的注册码和我们输入的注册码,因为我没有任何输入,所以上面用户输入的注册码为空。如果不想在上面推荐的爆破点爆破,也可以在下面推荐的爆破点爆破。
00409735   .  FF75 E4       push    dword ptr [ebp-1C]                      ; /String
00409738   .  E8 A77DFFFF   call    <jmp.&MSVBVM60.__vbaLenBstr>            ; \__vbaLenBstr
0040973D   .  8BC8          mov     ecx, eax
0040973F   .  E8 A67DFFFF   call    <jmp.&MSVBVM60.__vbaI2I4>
00409744   .  8985 48FFFFFF mov     dword ptr [ebp-B8], eax
0040974A   .  8975 D8       mov     dword ptr [ebp-28], esi
0040974D   .  BB 08400000   mov     ebx, 4008
00409752   >  8B45 D8       mov     eax, dword ptr [ebp-28]
00409755   .  66:3B85 48FFF>cmp     ax, word ptr [ebp-B8]                   ;检查注册码是否全部对比完毕
0040975C   .  0F8F C2000000 jg      00409824                                ;(爆破点)

程序在注册码比对之后再次校验文件
00409A41   .  50            push    eax                                     ; /FileName
00409A42   .  E8 DD79FFFF   call    <jmp.&MSVBVM60.rtcFileLen>              ; \rtcFileLen
00409A47   .  8BF0          mov     esi, eax
00409A49   .  8D45 D4       lea     eax, dword ptr [ebp-2C]
00409A4C   .  50            push    eax
00409A4D   .  8D45 D8       lea     eax, dword ptr [ebp-28]
00409A50   .  50            push    eax
00409A51   .  8D45 E0       lea     eax, dword ptr [ebp-20]
00409A54   .  50            push    eax
00409A55   .  8D45 DC       lea     eax, dword ptr [ebp-24]
00409A58   .  50            push    eax
00409A59   .  8D45 E4       lea     eax, dword ptr [ebp-1C]
00409A5C   .  50            push    eax
00409A5D   .  6A 05         push    5
00409A5F   .  E8 F679FFFF   call    <jmp.&MSVBVM60.__vbaFreeStrList>
00409A64   .  8D45 CC       lea     eax, dword ptr [ebp-34]
00409A67   .  50            push    eax
00409A68   .  8D45 D0       lea     eax, dword ptr [ebp-30]
00409A6B   .  50            push    eax
00409A6C   .  6A 02         push    2
00409A6E   .  E8 9F79FFFF   call    <jmp.&MSVBVM60.__vbaFreeObjList>
00409A73   .  83C4 24       add     esp, 24
00409A76   .  81FE 00400000 cmp     esi, 4000                                ;校验文件长度
00409A7C   .  0F85 FD010000 jnz     00409C7F                                 ;(爆破点)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//