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

一、单步
1.PEID查壳

PECompact v2.xx (16 ms)

2.载入OD,除了以下标注的几个位置外,其他的都使用F8

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

位置1:

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

位置2:

778D5650 >  B8 3C000000     mov eax,0x3C                      ; //F7落脚点
778D5655 BA 0003FE7F mov edx,0x7FFE0300
778D565A FF12 call dword ptr ds:[edx] ; //程序会跑飞F7跟进
778D565C C2 retn 0x8
778D565F nop
778D5660 > B8 3D000000 mov eax,0x3D 778D71B0 > 8BD4 mov edx,esp ; //第二个F7落脚点
778D71B2 0F34 sysenter
778D71B4 > C3 retn
778D71B5 8DA424 lea esp,dword ptr ss:[esp]
778D71BC 8D6424 lea esp,dword ptr ss:[esp]
778D71C0 > 8D5424 lea edx,dword ptr ss:[esp+0x8]

3.找到了指向OEP的跳转

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

4.来到OEP,脱壳吧

0040A86D >                push ebp                          ; //来到OEP
0040A86E 8BEC mov ebp,esp
0040A870 6A FF push -0x1
0040A872 push qqspirit.
0040A877 F4E14000 push qqspirit.0040E1F4
0040A87C :A1 mov eax,dword ptr fs:[]
0040A882 push eax
0040A883 : >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 push eax
0040A873 :FF35 >push dword ptr fs:[]
0040A87A : >mov dword ptr fs:[],esp ; //ESP定律一次
0040A881 33C0 xor eax,eax
0040A883 mov dword ptr ds:[eax],ecx
 

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

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

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

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

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

0040A86D >                push ebp                          ; //OEP
0040A86E 8BEC mov ebp,esp
0040A870 6A FF push -0x1
0040A872 push qqspirit.
0040A877 F4E14000 push qqspirit.0040E1F4
0040A87C :A1 mov eax,dword ptr fs:[]
0040A882 push eax
0040A883 : >mov dword ptr fs:[],esp
0040A88A 83EC sub esp,0x58
 

手脱PECompact v2.xx的更多相关文章

  1. 手脱ASPack v2.12变形壳2

    1.PEID载入 ASPack v2.12 2.载入OD,跟之前帖子的入口特征相同,都是一个pushad,但是请不要怀疑这是同一个壳,绝对不是,pushad下一行ESP定律下硬件断点,然后shift+ ...

  2. 手脱PEtite v2.1

    1.载入PEID PEtite v2.1 2.载入OD,先F8跟一下 0042C10F > B8 00C04200 mov eax,跑跑排行.0042C000 ; //程序入口点 0042C11 ...

  3. 手脱ASPack v2.12

    1.PEID查壳提示为: ASPack 2.12 -> Alexey Solodovnikov 2.载入OD,程序入口点是一个pushad,在他的下一行就可以进行ESP定律,下硬件访问断点然后s ...

  4. 手脱ACProtect V2.0(无Stolen Code)

    1.载入PEID ACProtect V2.0 -> risco 2.载入OD > 00A04000 push ACP_Feed.0040A000 ; //入口点 0B104000 pus ...

  5. 手脱Aspack变形壳1

    1.载入PEID Aspack v2.12 -> www.aspack.com 2.载入OD,不管是看查壳信息还是看入口特征都跟我上一次发的一个手脱Aspack v2.12的帖子相同http:/ ...

  6. 简单脱壳教程笔记(2)---手脱UPX壳(1)

    本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...

  7. 简单脱壳教程笔记(7)---手脱PECompact2.X壳

    本笔记是针对ximo早期发的脱壳基础视频教程.整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 简单介绍: F ...

  8. 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳

    [个人笔记]ximo早期发的脱壳教程--手脱UPX壳   壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳.   手脱UPX壳: 工具:ExeinfoPE.OD 对象:rmvbfix 方法1:单 ...

  9. 手动脱PeCompact 2.20壳实战

    作者:Fly2015 PeCompact壳又是一个没有听说过的壳,需要脱壳的程序是吾爱破解培训的第一课的选修作业四.最近对脱壳有点上瘾了,当然也遭受了脱壳受挫的无奈,但是比较幸运还是把这个壳给搞了. ...

随机推荐

  1. python序列成员资格

    可以用做登录操作,判断用户名密码是否正确! 代码示例: database = [ ['], ['], ['], ['] ] username = input("UserName: " ...

  2. LCA(Tarjan算法)模板

    一.查询一组的LCA Nearest Common Ancestors A rooted tree is a well-known data structure in computer science ...

  3. struts传值方式ModelDriven的使用

    struts传值不需要用到request,struts会处理好. 1.不是面向对象直接在jsp页面和Java代码都写:name,password... 以下为面向对象 2.action类实现Model ...

  4. OOP 1.3 动态内存分配

    1.new运算符用法 分配一个变量:P=new T; T是任意类型名,P是类型为T的指针.动态分配出一片大小为sizeof(T)字节的内存空间,将该空间的起始地址赋值给P(new T的返回值为 T). ...

  5. 团队Alpha冲刺(一)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内 ...

  6. linux虚拟机发邮件给163邮件

    配置/etc/mail.rc文件 set from=xxxxxxxx@163.com smtp=smtp.163.com set smtp-auth-user=yinhuanyi_cn@163.com ...

  7. QSettings配置读写-win注册表操作-ini文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写     本文地址:http:// ...

  8. centOS7设置静态ip后无法上网的解决,【亲可测】

    最近在VMware虚拟机里玩Centos,装好后发现上不了网.经过一番艰辛的折腾,终于找到出解决问题的方法了.最终的效果是无论是ping内网IP还是ping外网ip,都能正常ping通.方法四步走: ...

  9. 为何php curl post模式发送数据速度变慢了?我来说说原因

    事例: 今天要向一台服务器上传文件,原版是curl的get模式,现在改用了post模式,按照原本的思想,代码如下 <?php $post['c'] = 'config'; $post['t'] ...

  10. js get selected text

    js get selected text https://stackoverflow.com/questions/3170648/how-to-get-javascript-select-boxs-s ...