Jian丶ylt 发表于 2015-11-14 15:22

手脱PECompact v2.xx

声明:

       1.只为纪录自己成长历程,高手勿喷
       2.您的热心是新手持续发帖的动力

个人认为这个壳对于新手有那么一点点难度,所以用单步和ESP都跑一下,我觉得单步是最最基础的,所以一定要掌握

一、单步
1.PEID查壳

    PECompact v2.xx (16 ms)
   
2.载入OD,除了以下标注的几个位置外,其他的都使用F8

0040A86D >B8 74DE4500   mov eax,qqspirit.0045DE74         ; //入口点
0040A872    50            push eax                        
0040A873    64:FF35 0000000>push dword ptr fs:
0040A87A    64:8925 0000000>mov dword ptr fs:,esp
0040A881    33C0            xor eax,eax                     
0040A883    8908            mov dword ptr ds:,ecx
0040A885    50            push eax   

位置1:

778D711D    6A 00         push 0x0
778D711F    51            push ecx
778D7120    E8 2BE5FFFF   call ntdll.ZwContinue             ; //程序会跑飞F7跟进
778D7125    EB 0B         jmp short ntdll.778D7132
778D7127    5B            pop ebx                        
778D7128    59            pop ecx                           
778D7129    6A 00         push 0x0

位置2:

778D5650 >B8 3C000000   mov eax,0x3C                      ; //F7落脚点
778D5655    BA 0003FE7F   mov edx,0x7FFE0300
778D565A    FF12            call dword ptr ds:         ; //程序会跑飞F7跟进
778D565C    C2 0800         retn 0x8
778D565F    90            nop
778D5660 >B8 3D000000   mov eax,0x3D



778D71B0 >8BD4            mov edx,esp                     ; //第二个F7落脚点
778D71B2    0F34            sysenter
778D71B4 >C3            retn
778D71B5    8DA424 00000000 lea esp,dword ptr ss:
778D71BC    8D6424 00       lea esp,dword ptr ss:
778D71C0 >8D5424 08       lea edx,dword ptr ss:

3.找到了指向OEP的跳转

0045DF34    5B            pop ebx                           
0045DF35    5D            pop ebp                           
0045DF36- FFE0            jmp eax                           ; //指向OEP的跳转
0045DF38    6D            ins dword ptr es:,dx
0045DF39    A8 40         test al,0x40
0045DF3B    0000            add byte ptr ds:,al

4.来到OEP,脱壳吧

0040A86D >55            push ebp                        ; //来到OEP
0040A86E    8BEC            mov ebp,esp
0040A870    6A FF         push -0x1
0040A872    68 78794200   push qqspirit.00427978
0040A877    68 F4E14000   push qqspirit.0040E1F4
0040A87C    64:A1 00000000mov eax,dword ptr fs:
0040A882    50            push eax                        
0040A883    64:8925 0000000>mov dword ptr fs:,esp

5.运行查壳

    运行OK,查壳:Microsoft Visual C++ v6.0
   
二、ESP定律

1.载入OD,看到两个push入栈,下一行ESP定律下硬件访问断点然后shift+F9运行一次

0040A86D >B8 74DE4500   mov eax,qqspirit.0045DE74         ; //入口点
0040A872    50            push eax                        
0040A873    64:FF35 0000000>push dword ptr fs:
0040A87A    64:8925 0000000>mov dword ptr fs:,esp          ; //ESP定律一次
0040A881    33C0            xor eax,eax                     
0040A883    8908            mov dword ptr ds:,ecx

2.来到ESP的落脚点,单步F8跟下去就能到OEP了

0045DEA3    83C4 04         add esp,0x4                     ; //ESP落脚点
0045DEA6    55            push ebp
0045DEA7    53            push ebx
0045DEA8    51            push ecx
0045DEA9    57            push edi

3.来到关键跳,这就是指向OEP的跳转

0045DF34    5B            pop ebx                           
0045DF35    5D            pop ebp                           
0045DF36- FFE0            jmp eax                           ; //指向OEP的跳转
0045DF38    6D            ins dword ptr es:,dx
0045DF39    A8 40         test al,0x40

4.来到OEP,脱壳、运行、查壳

0040A86D >55            push ebp                        ; //OEP
0040A86E    8BEC            mov ebp,esp
0040A870    6A FF         push -0x1
0040A872    68 78794200   push qqspirit.00427978
0040A877    68 F4E14000   push qqspirit.0040E1F4
0040A87C    64:A1 00000000mov eax,dword ptr fs:
0040A882    50            push eax                        
0040A883    64:8925 0000000>mov dword ptr fs:,esp
0040A88A    83EC 58         sub esp,0x58

















                     



一生情独醉 发表于 2015-11-14 15:27

学习,学习!

Three_fish 发表于 2015-11-14 15:37

学习学习

永远向前看 发表于 2015-11-14 17:41

脱壳单步的过程中,怎么才能知道那个是关键点?{:301_1008:}

Jian丶ylt 发表于 2015-11-14 20:55

永远向前看 发表于 2015-11-14 17:41
脱壳单步的过程中,怎么才能知道那个是关键点?

跳向OEP的那个跳转不就是关键跳了{:301_997:}
这个需要多练习
没有公式一样的捷径
练多了就知道了
页: [1]
查看完整版本: 手脱PECompact v2.xx