-
-
[旧帖] [原创]爆破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 ;(爆破点)
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直播授课
赞赏
谁下载
谁下载
看原图
赞赏
雪币:
留言: