吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4635|回复: 0
收起左侧

[分享] step by step 脱Aspr 1.23 RC4

[复制链接]
xujunlin5588 发表于 2009-5-23 16:41
这个壳真是花了我不少时间啊,一是对OD的不熟练,二是我脑子笨,假如可以的话我一定换过我的脑子,太笨了。

软件:crysb.exe
工具:OD,lord PE  ImportREC
调试平台: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 [ecx], al
00401019    6256 CD         bound   edx, qword ptr [esi-33]
0040101C  - 70 95           jo      short 00400FB3
0040101E    CB              retf
0040101F    DA3D 52162291   fidivr  dword ptr [91221652]
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 [esi], 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 [ebx+CB14548A], bl
这些一大片东西可能会让菜鸟们看得眼花,当然,我也是菜鸟,我更眼花了,我脑子笨嘛!不过脱它不用理它们,让它们呆着吧!

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


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

2.然后呢,我们在retn下断点,并且运行到那里。观察堆栈窗口:
0012FF58   00F78238
0012FF5C   00400000  crysb.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 [eax], al
00F783C2   |00B9 00000000   add     byte ptr [ecx], bh
00F783C8   |F3:AA           rep     stos byte ptr es:[edi]
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 [ebp+C]
00F783D6   |8B5D 08         mov     ebx, dword ptr [ebp+8]
00F783D9   |EB 11           jmp     short 00F783EC
00F783DB   |0FB703          movzx   eax, word ptr [ebx]
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 [ebx], 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 [edx], 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 [esp+1C], 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 [ebp+4BE0F2]
00F7841F    8D8D 94E14B00   lea     ecx, dword ptr [ebp+4BE194]
00F78425    03CB            add     ecx, ebx
00F78427    8941 01         mov     dword ptr [ecx+1], eax
00F7842A    8D85 36E14B00   lea     eax, dword ptr [ebp+4BE136]
00F78430    8D8D FAE04B00   lea     ecx, dword ptr [ebp+4BE0FA]
00F78436    8901            mov     dword ptr [ecx], eax
00F78438    B8 5E140000     mov     eax, 145E
00F7843D    8D8D FFE04B00   lea     ecx, dword ptr [ebp+4BE0FF]
00F78443    8901            mov     dword ptr [ecx], eax
00F78445    8D8D 94E14B00   lea     ecx, dword ptr [ebp+4BE194]
00F7844B    8D85 94F34B00   lea     eax, dword ptr [ebp+4BF394]
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 00000000  mov     eax, dword ptr fs:[0]
第二次:
00F784F7    50              push    eax
00F784F8    64:8925 0000000>mov     dword ptr fs:[0], 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 [ebp-18], 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:[edi]
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 [ebp+C]
00F76582    8B5D 08         mov     ebx, dword ptr [ebp+8]

就可以单步走了,单步走过了retn后,你会看到这些代码:
004364B6    FF15 98224900   call    dword ptr [492298]
004364BC    33D2            xor     edx, edx
004364BE    8AD4            mov     dl, ah
004364C0    8915 C4CC4D00   mov     dword ptr [4DCCC4], edx
004364C6    8BC8            mov     ecx, eax
004364C8    81E1 FF000000   and     ecx, 0FF
004364CE    890D C0CC4D00   mov     dword ptr [4DCCC0], ecx
004364D4    C1E1 08         shl     ecx, 8
004364D7    03CA            add     ecx, edx
004364D9    890D BCCC4D00   mov     dword ptr [4DCCBC], ecx
004364DF    C1E8 10         shr     eax, 10
004364E2    A3 B8CC4D00     mov     dword ptr [4DCCB8], 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/Crystal ... cd916ca0634f49a1f00

请高手指导下!!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 01:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表