ps520 发表于 2009-11-1 14:18

人肉复流:轻松蹂躏Chord的某CrackMe

【文章标题】: 人肉复流:轻松蹂躏Chord的某CrackMe
【文章作者】: Luck
【作者邮箱】: admin@sooluck.cn
【作者主页】: www.sooluck.cn
【作者QQ号】: 466748210
【软件名称】: CrackMe
【下载地址】: http://www.52pojie.cn/thread-23042-1-2.html
【加壳方式】: 什么都没找到 *
【保护方式】: 变异易格式+未知保护壳
【编写语言】: E language
【使用工具】: OllyDbg
【操作平台】: Win7
【软件介绍】: 就一个CrackMe,没啥好说的啦~
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
这个CrackMe,根据作者及后面的提示,我们可以知道是易的CrackMe。
既然是无法快速脱壳的,那么我们还脱它干嘛?直接上。
执行CrackMe,输入"Luck"。确认,提示失败。
于是想到用Bp MessageBoxA回溯到关键判断法.【见《易语言那点“破”事》中无视壳的破解方法】
OllyDbg加载,F9执行程序。下断Bp MessageBoxA。
点按钮,OllyDbg暂停了。
取消断点
76FFEA71 >8BFF            mov   edi, edi
76FFEA73    55            push    ebp
76FFEA74    8BEC            mov   ebp, esp
76FFEA76    833D 749A0077 0>cmp   dword ptr , 0x0
76FFEA7D    74 24         je      short 76FFEAA3
76FFEA7F    64:A1 18000000mov   eax, dword ptr fs:
76FFEA85    6A 00         push    0x0
76FFEA87    FF70 24         push    dword ptr
76FFEA8A    68 A49E0077   push    77009EA4
76FFEA8F    FF15 3414FA76   call    dword ptr [<&KERNEL32.Interlocke>; kernel32.InterlockedCompareExchange
76FFEA95    85C0            test    eax, eax
76FFEA97    75 0A         jnz   short 76FFEAA3
76FFEA99    C705 A09E0077 0>mov   dword ptr , 0x1
76FFEAA3    6A 00         push    0x0
76FFEAA5    FF75 14         push    dword ptr
76FFEAA8    FF75 10         push    dword ptr
76FFEAAB    FF75 0C         push    dword ptr
76FFEAAE    FF75 08         push    dword ptr
76FFEAB1    E8 73FFFFFF   call    MessageBoxExA
76FFEAB6    5D            pop   ebp
76FFEAB7    C2 1000         retn    0x10


于是F8,
76FFEAB1    E8 73FFFFFF   call    MessageBoxExA
76FFEAB6    5D            pop   ebp
76FFEAB7    C2 1000         retn    0x10

这里弹出信息框,确定。
继续F8,直到
10062E72    83F8 04         cmp   eax, 0x4
10062E75    0F95C2          setne   dl
10062E78    4A            dec   edx
10062E79    83E2 03         and   edx, 0x3
10062E7C    8BC2            mov   eax, edx
10062E7E    8901            mov   dword ptr , eax
10062E80    83C4 64         add   esp, 0x64
10062E83    C3            retn

观察数据窗口,得到:
0012F3E0   0040976ERETURN to Chord.0040976E from Chord.0040A452

0040976E即为我们的着手点
模块里选择Chord.exe,然后Ctrl+G输入0040976E

00409706   /0F84 35000000   je      00409741
0040970C   |6A 00         push    0x0
0040970E   |6A 00         push    0x0
00409710   |6A 00         push    0x0
00409712   |68 01030080   push    0x80000301
00409717   |6A 00         push    0x0
00409719   |68 00000000   push    0x0
0040971E   |68 04000080   push    0x80000004
00409723   |6A 00         push    0x0
00409725   |68 2C914000   push    0040912C
0040972A   |68 03000000   push    0x3
0040972F   |BB 00030000   mov   ebx, 0x300
00409734   |E8 190D0000   call    0040A452
00409739   |83C4 28         add   esp, 0x28
0040973C   |E9 30000000   jmp   00409771
00409741   \6A 00         push    0x0
00409743    6A 00         push    0x0
00409745    6A 00         push    0x0
00409747    68 01030080   push    0x80000301
0040974C    6A 00         push    0x0
0040974E    68 00000000   push    0x0
00409753    68 04000080   push    0x80000004
00409758    6A 00         push    0x0
0040975A    68 37914000   push    00409137
0040975F    68 03000000   push    0x3
00409764    BB 00030000   mov   ebx, 0x300
00409769    E8 E40C0000   call    0040A452
0040976E    83C4 28         add   esp, 0x28


应该没啥多说的了,嘿嘿。
爆破就在
00409706   /0F84 35000000   je      00409741

如果有兴趣也可以分析下流程,然后KeyGen就更完美了。
此文主旨是用于解释在《易语言那点“破”事》中无视壳类保护,因为这个是个难点,
很多朋友都认为必须脱了才能破,其实不然。此方法通用于使用超级伪装者的软件。

我们再用按钮法来分析下流程。
重新加载Chord.exe,并F9跑起。
模块中选择krnln.双击进入。Ctrl+B输入"FF 55 FC",来到
100290A6    FF55 FC         call    dword ptr

F2断下。切回程序,输入Luck,点按钮。
OD成功断下,F2取消断点,F7跟进。
004095FA    55            push    ebp
004095FB    8BEC            mov   ebp, esp
004095FD    81EC 18000000   sub   esp, 0x18
00409603    C745 FC 0000000>mov   dword ptr , 0x0
0040960A    68 00000000   push    0x0
0040960F    BB C4060000   mov   ebx, 0x6C4

F8会得到数字:
eax=001F2558, (ASCII "88892000")
Stack ss:=001DDA28

测试这个注册码是有效的


--------------------------------------------------------------------------------
【经验总结】
1.易语言的程序并非都是需要脱壳的
2.在熟悉一个东西以后再牛的东西也会程序虚设。正如Nooby对VMP的蹂躏

--------------------------------------------------------------------------------
【版权声明】: 本文原创于Luck, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年11月01日 14:14:10

ps520 发表于 2009-11-1 14:19

看着算法我就郁闷了、

如果需要KeyGen可以考虑用内存读取或逆算法~
页: [1]
查看完整版本: 人肉复流:轻松蹂躏Chord的某CrackMe