蓝橘子园

生活属于我,来去要自如

« 三个诡异的QQ号码手脱按键精灵6.31.1602版UPX+PEBundle的壳之视频教程 »

利用按键精灵辅助脱壳—ASPACK变形壳

                         今天在脱一个ASPACK变形壳的时候,发现中间有一步很繁琐,需要重复N遍!有时候数错了又得重来,很不爽,于是就想到了利用按键精灵来帮忙完成!过程如下---->>

          首先用OD载入被加壳文件,停在了这里
 

00410944 >- E9 327E0000     jmp     0041877B                           ;停在这里
00410949    C7              ???                                      ; 未知命令
0041094A    4E              dec     esi
0041094B    FFC3            inc     ebx

然后F8单步,直到这里开始使用ESP定律

0041877B    68 13884100     push    00418813
00418780    E8 84FEFFFF     call    00418609            ;到这里使用ESP定律
00418785    41              inc     ecx

运行后就转到了这里
 

0041861B    89E5            mov     ebp, esp                     ;这个位置
0041861D    81EC C0000000   sub     esp, 0C0
00418623    89E7            mov     edi, esp

然后开始单步,到0041862E  ^ FF2485 2B814100 jmp     dword ptr [eax*4+41812B]这里

0041862A    46              inc     esi
0041862B    0FB6C0          movzx   eax, al
0041862E  ^ FF2485 2B814100 jmp     dword ptr [eax*4+41812B]         ; Aspack变.004185DC

      ;到这里
00418635    66:8B45 00      mov     ax, word ptr [ebp]

在这里如果直接让程序运行到 00418635    66:8B45 00      mov     ax, word ptr [ebp] 这里的话,程序就会跑起来!
   这里需要在 0041862E  ^ FF2485 2B814100 jmp     dword ptr [eax*4+41812B] 下断点,然后按F9,看看按多少次程序会跑起来!
我按了五十多下程序终于跑起来了,然后重新再来一次,按五十多减一下(比如按56下程序跑起来,那么就只按55下),再取消断点,F8单步走,程序跳到这里

004185FC    89EC            mov     esp, ebp             ;跳到这里,继续单步
004185FE    5A              pop     edx
004185FF    5A              pop     edx
00418600    5D              pop     ebp

接着继续F8单步走,>>>>>>一直到这里
 

00410B19    9C              pushfd        
00410B1A    60              pushad
00410B1B    E8 00000000     call    00410B20      
;这里停下来,再使用ESP定律


 

00410B1B    E8 00000000     call    00410B20  停下来继续使用ESP定律,运行后程序就到了这儿>>
 

00410B7C    9D              popfd                 ;到了这儿    继续F8单步
00410B7D    EB 4E           jmp     short 00410BCD
00410B7F    F4              hlt

停下来后,继续F8单步走,走几次后可能会到这个地方
 

004022C0      E8            db      E8                          ;到这里
004022C1      97            db      97
004022C2      0B            db      0B
004022C3      00            db      00
004022C4      00            db      00
004022C5      E8            db      E8
004022C6      C6            db      C6
004022C7      0A            db      0A
004022C8      00            db      00
004022C9      00            db      00
004022CA      8B            db      8B
004022CB      F0            db      F0
004022CC      6A            db      6A                               ;  CHAR 'j'
004022CD      00            db      00
004022CE      68            db      68                               ;  CHAR 'h'
004022CF      B3            db      B3
004022D0      53            db      53                               ;  CHAR 'S'


 

其实004022C0      E8            db      E8      这里就是OEP了,使用鼠标右键,选择分析,从模块中删除分析,就变成了这样

004022C0    E8 970B0000     call    00402E5C                         ; jmp 到     COMCTL32.InitCommonControls
004022C5    E8 C60A0000     call    00402D90                         ; jmp 到 kernel32.GetCommandLineA
004022CA    8BF0            mov     esi, eax

 

停在了004022C0    E8 970B0000     call    00402E5C     这个位置,这里就是OEP,从这里脱壳就可以了!

脱壳后程序无法运行,使用importREC修复下就可以了!

 

   在上面0041862E  ^ FF2485 2B814100 jmp     dword ptr [eax*4+41812B]这里的时候,由于重复的次数太多,所以这里可以请 按键精灵 上场
打开按键精灵,新建一个任务,插入组合键,Shift+F9 然后在后面插入个延迟时间,我设置的是200毫秒,不插入延迟时间的话中途会出现问题!
接着循环这段代码,程序跑起来的次数减一次就可以了,到了0041862E  ^ FF2485 2B814100 jmp     dword ptr [eax*4+41812B]的时候下断点,然后运行按键精灵的脚本就搞定了。呵呵
很方便

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense  theme by BokeZhuti

Copyright 2007-2009 www.lanjuzi.com. Some Rights Reserved.备案号:湘ICP备08103976号