吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7557|回复: 4
收起左侧

[分享] 手脱PECompact v2.xx

[复制链接]
Jian丶ylt 发表于 2015-11-14 15:22
声明:

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

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

一、单步
1.PEID查壳

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

[Asm] 纯文本查看 复制代码
0040A86D >  B8 74DE4500     mov eax,qqspirit.0045DE74         ; //入口点
0040A872    50              push eax                          
0040A873    64:FF35 0000000>push dword ptr fs:[0]
0040A87A    64:8925 0000000>mov dword ptr fs:[0],esp
0040A881    33C0            xor eax,eax                       
0040A883    8908            mov dword ptr ds:[eax],ecx
0040A885    50              push eax  
   

位置1:

[Asm] 纯文本查看 复制代码
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:

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




[Asm] 纯文本查看 复制代码
778D71B0 >  8BD4            mov edx,esp                       ; //第二个F7落脚点
778D71B2    0F34            sysenter
778D71B4 >  C3              retn
778D71B5    8DA424 00000000 lea esp,dword ptr ss:[esp]
778D71BC    8D6424 00       lea esp,dword ptr ss:[esp]
778D71C0 >  8D5424 08       lea edx,dword ptr ss:[esp+0x8]


3.找到了指向OEP的跳转

[Asm] 纯文本查看 复制代码
0045DF34    5B              pop ebx                           
0045DF35    5D              pop ebp                           
0045DF36  - FFE0            jmp eax                           ; //指向OEP的跳转
0045DF38    6D              ins dword ptr es:[edi],dx
0045DF39    A8 40           test al,0x40
0045DF3B    0000            add byte ptr ds:[eax],al


4.来到OEP,脱壳

[Asm] 纯文本查看 复制代码
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 00000000  mov eax,dword ptr fs:[0]
0040A882    50              push eax                          
0040A883    64:8925 0000000>mov dword ptr fs:[0],esp


5.运行查壳

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

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

[Asm] 纯文本查看 复制代码
0040A86D >  B8 74DE4500     mov eax,qqspirit.0045DE74         ; //入口点
0040A872    50              push eax                          
0040A873    64:FF35 0000000>push dword ptr fs:[0]
0040A87A    64:8925 0000000>mov dword ptr fs:[0],esp          ; //ESP定律一次
0040A881    33C0            xor eax,eax                       
0040A883    8908            mov dword ptr ds:[eax],ecx


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

[Asm] 纯文本查看 复制代码
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的跳转

[Asm] 纯文本查看 复制代码
0045DF34    5B              pop ebx                           
0045DF35    5D              pop ebp                           
0045DF36  - FFE0            jmp eax                           ; //指向OEP的跳转
0045DF38    6D              ins dword ptr es:[edi],dx
0045DF39    A8 40           test al,0x40


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

[Asm] 纯文本查看 复制代码
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 00000000  mov eax,dword ptr fs:[0]
0040A882    50              push eax                          
0040A883    64:8925 0000000>mov dword ptr fs:[0],esp
0040A88A    83EC 58         sub esp,0x58


















                     



免费评分

参与人数 2热心值 +2 收起 理由
永远向前看 + 1 我很赞同!
Three_fish + 1 谢谢@Thanks!

查看全部评分

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

一生情独醉 发表于 2015-11-14 15:27
学习,学习!
Three_fish 发表于 2015-11-14 15:37
永远向前看 发表于 2015-11-14 17:41
脱壳单步的过程中,怎么才能知道那个是关键点?
 楼主| Jian丶ylt 发表于 2015-11-14 20:55
永远向前看 发表于 2015-11-14 17:41
脱壳单步的过程中,怎么才能知道那个是关键点?

跳向OEP的那个跳转不就是关键跳了
这个需要多练习
没有公式一样的捷径
练多了就知道了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 15:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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