手脱PECompact v2.xx
个人认为这个壳对于新手有那么一点点难度,所以用单步和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的更多相关文章
- 手脱ASPack v2.12变形壳2
1.PEID载入 ASPack v2.12 2.载入OD,跟之前帖子的入口特征相同,都是一个pushad,但是请不要怀疑这是同一个壳,绝对不是,pushad下一行ESP定律下硬件断点,然后shift+ ...
- 手脱PEtite v2.1
1.载入PEID PEtite v2.1 2.载入OD,先F8跟一下 0042C10F > B8 00C04200 mov eax,跑跑排行.0042C000 ; //程序入口点 0042C11 ...
- 手脱ASPack v2.12
1.PEID查壳提示为: ASPack 2.12 -> Alexey Solodovnikov 2.载入OD,程序入口点是一个pushad,在他的下一行就可以进行ESP定律,下硬件访问断点然后s ...
- 手脱ACProtect V2.0(无Stolen Code)
1.载入PEID ACProtect V2.0 -> risco 2.载入OD > 00A04000 push ACP_Feed.0040A000 ; //入口点 0B104000 pus ...
- 手脱Aspack变形壳1
1.载入PEID Aspack v2.12 -> www.aspack.com 2.载入OD,不管是看查壳信息还是看入口特征都跟我上一次发的一个手脱Aspack v2.12的帖子相同http:/ ...
- 简单脱壳教程笔记(2)---手脱UPX壳(1)
本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...
- 简单脱壳教程笔记(7)---手脱PECompact2.X壳
本笔记是针对ximo早期发的脱壳基础视频教程.整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 简单介绍: F ...
- 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳
[个人笔记]ximo早期发的脱壳教程--手脱UPX壳 壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳. 手脱UPX壳: 工具:ExeinfoPE.OD 对象:rmvbfix 方法1:单 ...
- 手动脱PeCompact 2.20壳实战
作者:Fly2015 PeCompact壳又是一个没有听说过的壳,需要脱壳的程序是吾爱破解培训的第一课的选修作业四.最近对脱壳有点上瘾了,当然也遭受了脱壳受挫的无奈,但是比较幸运还是把这个壳给搞了. ...
随机推荐
- CS231n assignment2
preparation: solve the problem of `from builtins import rang` pip install future update_rule
- 获取label标签内for的属性值-js
<body> <div class="row_2" id="ass"> <label for="aaa"> ...
- Python 装饰器Decorator(二)
对于上一篇“”Python闭包“”随笔中提到的make_averager()函数的如下实现,我们把历史值保存在列表里,每次计算平均值都需要重新求和,当历史值较多时,需要占用比较多的空间并且效率也不高. ...
- 1.12Linux下软件安装(学习过程)
实验介绍 介绍 Ubuntu 下软件安装的几种方式,及 apt,dpkg 工具的使用. 一.Linux 上的软件安装 通常 Linux 上的软件安装主要有三种方式: 在线安装 从磁盘安装deb软件包 ...
- 20172305 2018-2019-1 《Java软件结构与数据结构》第九周学习总结
20172305 2018-2019-1 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 本周内容主要为书第十五章内容: 图(结点和结点之间的连接构成) 顶点:结点 边:结 ...
- snprintf vs sprintf
#include <stdio.h> int printf(const char *format, ...); int fprintf(FILE *stream, const char * ...
- python 为什么没有自增自减符
>>> b = 5 >>> a = 5 >>> id(a) 162334512 >>> id(b) 162334512 > ...
- 路由器DMZ功能
环境描述 172.17* 校园网 实验室路由器接入校园网,通过nat分化出网段 192.168.. 实验过程 主机A(windows)接入路由器(192.168.1.110),主机B(Ubuntu)接 ...
- ltnmp 3.0 发布,PHP 开发环境一键安装包
PHP 开发环境一键安装包, 有个叫lnmp.这个ltnmp看起来更新比较多,开发比较频繁,包括的组件更多. 安装和使用教程:http://www.moqifei.com/ltnmp 标记一下.
- bash编程2
bash基础编程 前言:条件测试语法有两种书写模式,一种时[expression] ,另外一种是[[exprssion]] ,为了在书写条件测试的过程中,不让大家将两种格式互相混淆,那么在这里只讲一种 ...