xujunlin5588 发表于 2009-5-23 16:41

step by step 脱Aspr 1.23 RC4

这个壳真是花了我不少时间啊,一是对OD的不熟练,二是我脑子笨,假如可以的话我一定换过我的脑子,太笨了。

软件:crysb.exe
工具:OD,lord PEImportREC
调试平台:XP SP2
破解说明:谢谢天草老师,是他教会我很多关于破解的东西,这里向他致敬了!!

好吧,我们开始了!
1.OD载入,把除了内存异常外 其他全部忽略,(有脱过穿山甲的可以不把锁定的异常忽略掉,本人试过,没问题的)。载入后会看到这些代码:
00401000 >68 01009000   push    00900001
00401005    E8 01000000   call    0040100B
0040100A    C3            retn
0040100B    C3            retn
0040100C    EB 6E         jmp   short 0040107C
0040100E    C2 6873         retn    7368
00401011    DF            ???                                    ; 未知命令
00401012    49            dec   ecx
00401013    48            dec   eax
00401014    0BFE            or      edi, esi
00401016    DB            ???                                    ; 未知命令
00401017    3001            xor   byte ptr , al
00401019    6256 CD         bound   edx, qword ptr
0040101C- 70 95         jo      short 00400FB3
0040101E    CB            retf
0040101F    DA3D 52162291   fidivrdword ptr
00401025    07            pop   es
00401026    59            pop   ecx
00401027    2D 95311AA2   sub   eax, A21A3195
0040102C    B6 39         mov   dh, 39
0040102E    41            inc   ecx
0040102F    37            aaa
00401030    212E            and   dword ptr , ebp
00401032    55            push    ebp
00401033    53            push    ebx
00401034    43            inc   ebx
00401035    87F4            xchg    esp, esi
00401037- 73 B7         jnb   short 00400FF0
00401039    109B 8A5414CB   adc   byte ptr , bl
这些一大片东西可能会让菜鸟们看得眼花,当然,我也是菜鸟,我更眼花了,我脑子笨嘛!不过脱它不用理它们,让它们呆着吧!

好了,我们不是忽略了内存访问的异常吗?运行下试试!
一只按下去,汗,手挺软的,不过终于到了:
00F639EC    3100            xor   dword ptr , eax
00F639EE    64:8F05 0000000>pop   dword ptr fs:
00F639F5    58            pop   eax
00F639F6    833D B07EF600 0>cmp   dword ptr , 0
00F639FD    74 14         je      short 00F63A13                                  //0
00F639FF    6A 0C         push    0C
00F63A01    B9 B07EF600   mov   ecx, 0F67EB0
00F63A06    8D45 F8         lea   eax, dword ptr
00F63A09    BA 04000000   mov   edx, 4
00F63A0E    E8 2DD1FFFF   call    00F60B40                                 //1
00F63A13    FF75 FC         push    dword ptr
00F63A16    FF75 F8         push    dword ptr
00F63A19    8B45 F4         mov   eax, dword ptr
00F63A1C    8338 00         cmp   dword ptr , 0
00F63A1F    74 02         je      short 00F63A23                           //2
00F63A21    FF30            push    dword ptr
00F63A23    FF75 F0         push    dword ptr
00F63A26    FF75 EC         push    dword ptr
00F63A29    C3            retn                                                      //3


怎么到这里的呢?就是一直按的了,这是这个壳的标志:    2个je 夹着个call后面又来个retn,这是很明显的标志啊,大家一定要记住了。

2.然后呢,我们在retn下断点,并且运行到那里。观察堆栈窗口:
0012FF58   00F78238
0012FF5C   00400000crysb.00400000                  //这个是标志
0012FF60   574F42C8
0012FF64   0012FFA4                                        //通常标志下面的2个代码就是关键的代码了。


在命令行输入 hr 0012ff64运行:
到了下面的代码了。。
00F783B5   /EB 44         jmp   short 00F783FB
00F783B7   |EB 01         jmp   short 00F783BA
00F783B9   |9A 51579CFC BF0>call    far 00BF:FC9C5751
00F783C0   |0000            add   byte ptr , al
00F783C2   |00B9 00000000   add   byte ptr , bh
00F783C8   |F3:AA         rep   stos byte ptr es:
00F783CA   |9D            popfd
00F783CB   |5F            pop   edi
00F783CC   |59            pop   ecx
00F783CD   |C3            retn
00F783CE   |55            push    ebp
00F783CF   |8BEC            mov   ebp, esp
00F783D1   |53            push    ebx
00F783D2   |56            push    esi
00F783D3   |8B75 0C         mov   esi, dword ptr
00F783D6   |8B5D 08         mov   ebx, dword ptr
00F783D9   |EB 11         jmp   short 00F783EC
00F783DB   |0FB703          movzx   eax, word ptr
00F783DE   |03C6            add   eax, esi
00F783E0   |83C3 02         add   ebx, 2
00F783E3   |8BD0            mov   edx, eax
00F783E5   |8BC6            mov   eax, esi
00F783E7   |E8 0C000000   call    00F783F8
00F783EC   |66:833B 00      cmp   word ptr , 0
00F783F0^|75 E9         jnz   short 00F783DB
00F783F2   |5E            pop   esi
00F783F3   |5B            pop   ebx
00F783F4   |5D            pop   ebp
00F783F5   |C2 0800         retn    8
00F783F8   |0102            add   dword ptr , eax
00F783FA   |C3            retn
00F783FB   \03C3            add   eax, ebx
00F783FD    BB C4000000   mov   ebx, 0C4
00F78402    0BDB            or      ebx, ebx
00F78404    75 07         jnz   short 00F7840D

注意了,到了这里,就得用F7跟进,否则就无法脱了。然后就到了:
00F783FB    03C3            add   eax, ebx
00F783FD    BB C4000000   mov   ebx, 0C4
00F78402    0BDB            or      ebx, ebx
00F78404    75 07         jnz   short 00F7840D
00F78406    894424 1C       mov   dword ptr , eax
00F7840A    61            popad
00F7840B    50            push    eax
00F7840C    C3            retn
00F7840D    E8 00000000   call    00F78412
00F78412    5D            pop   ebp
00F78413    81ED 4DE14B00   sub   ebp, 4BE14D
00F78419    8D85 F2E04B00   lea   eax, dword ptr
00F7841F    8D8D 94E14B00   lea   ecx, dword ptr
00F78425    03CB            add   ecx, ebx
00F78427    8941 01         mov   dword ptr , eax
00F7842A    8D85 36E14B00   lea   eax, dword ptr
00F78430    8D8D FAE04B00   lea   ecx, dword ptr
00F78436    8901            mov   dword ptr , eax
00F78438    B8 5E140000   mov   eax, 145E
00F7843D    8D8D FFE04B00   lea   ecx, dword ptr
00F78443    8901            mov   dword ptr , eax
00F78445    8D8D 94E14B00   lea   ecx, dword ptr
00F7844B    8D85 94F34B00   lea   eax, dword ptr
00F78451    51            push    ecx
00F78452    50            push    eax
00F78453    E8 76FFFFFF   call    00F783CE
00F78458    61            popad                        //这里停止单步走,要F7跟进了(后面一直都要用到F7)
00F78459   /EB 02         jmp   short 00F7845D

然后就可以单不走了,一直走过了 popad,就要F7跟进了,去寻找stole code.
进去后,一直跟进,知道看到语言的特征(就是“头”)。我脱的这个软件是用C++写的,所以呢,
第一次捕获的stole code是:
00F784DF    55            push    ebp
00F784E0    8BEC            mov   ebp, esp
00F784E2    6A FF         push    -1
00F784E4    68 A8A44900   push    49A4A8
00F784E9    68 B8634300   push    4363B8
00F784EE    64:A1 00000000mov   eax, dword ptr fs:
第二次:
00F784F7    50            push    eax
00F784F8    64:8925 0000000>mov   dword ptr fs:, esp
00F784FF    83EC 58         sub   esp, 58
第三次:
00F78505    53            push    ebx
第四次:
00F78509    56            push    esi                              ; kernel32.7C809AE0
第五次:
00F7850D    57            push    edi                              ; kernel32.7C839AD8
00F7850E    8965 E8         mov   dword ptr , esp
捕获完毕。。。。。
然后呢就继续跟进,直到看见了:
00F76566    51            push    ecx
00F76567    57            push    edi
00F76568    9C            pushfd
00F76569    FC            cld
00F7656A    BF A765F700   mov   edi, 0F765A7
00F7656F    B9 5E140000   mov   ecx, 145E
00F76574    F3:AA         rep   stos byte ptr es:
00F76576    9D            popfd
00F76577    5F            pop   edi
00F76578    59            pop   ecx
00F76579    C3            retn
00F7657A    55            push    ebp
00F7657B    8BEC            mov   ebp, esp
00F7657D    53            push    ebx
00F7657E    56            push    esi
00F7657F    8B75 0C         mov   esi, dword ptr
00F76582    8B5D 08         mov   ebx, dword ptr

就可以单步走了,单步走过了retn后,你会看到这些代码:
004364B6    FF15 98224900   call    dword ptr
004364BC    33D2            xor   edx, edx
004364BE    8AD4            mov   dl, ah
004364C0    8915 C4CC4D00   mov   dword ptr , edx
004364C6    8BC8            mov   ecx, eax
004364C8    81E1 FF000000   and   ecx, 0FF
004364CE    890D C0CC4D00   mov   dword ptr , ecx
004364D4    C1E1 08         shl   ecx, 8
004364D7    03CA            add   ecx, edx
004364D9    890D BCCC4D00   mov   dword ptr , ecx
004364DF    C1E8 10         shr   eax, 10
004364E2    A3 B8CC4D00   mov   dword ptr , eax
004364E7    6A 01         push    1
004364E9    E8 93370000   call    00439C81
004364EE    59            pop   ecx
004364EF    85C0            test    eax, eax
004364F1    75 08         jnz   short 004364FB

呵呵,别以为一直往下看哈,其实看上面了,上面是一大排空代码,这是什么呢?那就是被抽取了的代码,我们把捕获的代码填上去,然后新建EIP,那么就搞顶了!
脱壳后,有个问题要说明的,用ImportREC修复时要注意,有几个指针是用专用插件修复的,那就是说,全部指针都有用,大家别乱剪了哈!

好了,我奉上软件:
http://www.namipan.com/d/CrystalButton2.rar/4673aa196d1863fe7f470c5f9ae66cd916ca0634f49a1f00

请高手指导下!!
页: [1]
查看完整版本: step by step 脱Aspr 1.23 RC4