手脱PESpin壳【06.exe】
1.查壳


2.LoradPE工具检查

3.查找OEP
①未发现pushad

②使用ESP定律

③开启异常处理

④插件忽略异常

⑤异常断点






⑥确定反调试位置

| 次数 | 执行点 | 结果 |
| 第一次异常 | 0043864D |
成功命中 |
| 第二次异常 |
00438863 |
成功命中 |
| 第三次异常 |
0043AF42 |
成功命中 |
| 第四次异常 |
0043AF77 |
程序执行 |
| 第五次异常 |
0043AF92 |
程序执行 |
| 第六次异常 |
00438863 |
程序执行 |

⑦再次查找OEP


4.查看IAT表(43CFCD=IAT被加密之一)


5.脱壳信息查找
| 作用 | 地址 |
| 异常处理函数的入口点 | 43AF42 |
| OEP | 409486 |
| IAT被加密的一个地址 | 43CFCD |




6.编写脱壳脚本
设置断点地址:
| 地址 | 作用 | |
| 1 | 00409486 | OEP |
| 2 | 0043AF59 | 函数内反硬件断点的位置 |
| 3 | 438F9F | 返回正确函数地址的位置 |
| 4 | 43918C | 写入IAT的位置 |
脚本思路:
脚本实现:
MOV dwSEHAddr,0043AF59
MOV dwGetProcAddress,438F9F
MOV dwWriteIAT,43918C
MOV dwOEP,00409486
MOV dwEAX,0
//清除断点
BPHWCALL//硬件断点
BPMC//内存断点
//异常处理函数,清除硬件断点的位置
BPHWS dwSEHAddr,"x"
//下断点
BPHWS dwGetProcAddress,"x"//GetProcAddress后面,保存EAX
BPHWS dwWriteIAT,"x"//填充IAT后面,将保存的EAX写入到[EDI]
//在OEP处下硬件执行断点
BPHWS dwOEP,"x"//OEP,弹出信息框,成功到达OEP
LOOP0:
RUN
CMP eip,dwSEHAddr
JNZ LOOP0
FILL dwSEHAddr,1A,90
LOOP1:
RUN
CMP eip,dwGetProcAddress
JNZ JMP1
MOV dwEAX,eax
JMP LOOP1
JMP1:
CMP eip,dwWriteIAT
JNZ JMP2
MOV [edi],dwEAX
JMP LOOP1
JMP2:
CMP eip,dwOEP
JNZ LOOP1
MSG "成功到达OEP!!!"
MOV dwSEHAddr,0043AF59
MOV dwGetProcAddress,438F9F
MOV dwWriteIAT,43918C
MOV dwOEP,00409486
MOV dwEAX,0
//清除断点
BPHWCALL//硬件断点
BPMC//内存断点
//异常处理函数,清除硬件断点的位置
BPHWS dwSEHAddr,"x"
//下断点
BPHWS dwGetProcAddress,"x"//GetProcAddress后面,保存EAX
BPHWS dwWriteIAT,"x"//填充IAT后面,将保存的EAX写入到[EDI]
//在OEP处下硬件执行断点
BPHWS dwOEP,"x"//OEP,弹出信息框,成功到达OEP
LOOP0:
RUN
CMP eip,dwSEHAddr
JNZ LOOP0
FILL dwSEHAddr,1A,90
LOOP1:
RUN
CMP eip,dwGetProcAddress
JNZ JMP1
MOV dwEAX,eax
JMP LOOP1
JMP1:
CMP eip,dwWriteIAT
JNZ JMP2
MOV [edi],dwEAX
JMP LOOP1
JMP2:
CMP eip,dwOEP
JNZ LOOP1
MSG "成功到达OEP!!!"
脚本运行:

7.修复IAT



Process ID----->所要脱壳的程序进程ID,可在任务管理器中查看,因为ID是十进制,所以取消勾选Hex
Code Start----->代码起始于地址
Code End------->代码终止于地址
New IAT VA----->新的IAT偏移
x
Process ID----->所要脱壳的程序进程ID,可在任务管理器中查看,因为ID是十进制,所以取消勾选Hex
Code Start----->代码起始于地址
Code End------->代码终止于地址
New IAT VA----->新的IAT偏移







手脱PESpin壳【06.exe】的更多相关文章
- 简单脱壳教程笔记(2)---手脱UPX壳(1)
本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...
- 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳
[个人笔记]ximo早期发的脱壳教程--手脱UPX壳 壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳. 手脱UPX壳: 工具:ExeinfoPE.OD 对象:rmvbfix 方法1:单 ...
- 填坑专记-手脱FSG壳
妈呀,脱FGS壳真的是坎坷颇多,多亏吾爱破解前辈们的帮忙.我一定要记录下来,省的以后再无法解决. 已经查看是FSG壳了.找到入口也容易了.重点就是脱壳并修复好它. 脱壳 OEP为: 使 ...
- 手脱NsPacK壳
1.查壳 使用PEiD未能检测到壳信息,这时,我们更换其他工具 从图中可以看到壳的信息为[NsPacK(3.x)[-]] 2.百度壳信息 北斗程序压缩(Nspack)是一款压缩壳.主要的选项是:压缩资 ...
- 深入底层逆向分析TDC‘s keygenme(手脱压缩壳)
系统 : Windows xp 程序 : TDC‘s keygenme 程序下载地址 :http://pan.baidu.com/s/1gdWyt6z 要求 : 脱壳 & 注册机编写 使用工具 ...
- 简单脱壳教程笔记(8)---手脱EZIP壳
本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 EZIP壳 : ...
- 手脱UPX壳的方法
0X00 了解 upx UPX作为一款元老级PE加密壳,在以前的那个年代盛行,著名病毒[熊猫烧香]就是使用这款加密壳. 0X01 单步跟踪法 就是使用ollydbg加载程序后,按F8进行单 ...
- 手脱无名壳tslgame_rl
1.使用Detect It Easy查壳,该壳未显示出壳信息,至于为何有壳,我们使用IDA打开,查看其的导入表,其中没有太多函数使用: 2.我们使用x32dbg打开,运行至入口点,此处没有pushad ...
- 手脱Aspack变形壳1
1.载入PEID Aspack v2.12 -> www.aspack.com 2.载入OD,不管是看查壳信息还是看入口特征都跟我上一次发的一个手脱Aspack v2.12的帖子相同http:/ ...
随机推荐
- window10使用putty传输文件到Linux服务器
由于Linux和Linux可以使用scp进行传输文件,而window系统无法向Linux传输文件,当然,有xshell等等类似的工具可以进行操作:putty工具就可以实现,毕竟zip压缩包也不大,启动 ...
- kafka producer 源码总结
kafka producer可以总体上分为两个部分: producer调用send方法,将消息存放到内存中 sender线程轮询的从内存中将消息通过NIO发送到网络中 1 调用send方法 其实在调用 ...
- python 保存图片被截断
运行如下代码发现横坐标属性值被截断 plt.savefig('D:\\project\\python\\zhifangtu\\a.png') plt.show() plt.savefig('D:\\p ...
- html5系列:form 2.0 新结构
以往的一个form表单,结构比较死板,所有的form元素都必须处在<form>和</form>之间才有效,这会造成一些麻烦,比如说:像bootstrap这种使用<div& ...
- HTML5 Performance
简介 performance是html5的新特性之一,通过它,页面的开发者们可以非常精确的统计到自己页面的表现情况,从而有针对性的进行优化,提升用户体验. 下面是小姐姐对performance相关AP ...
- 基于融云的IM通讯
一.业务场景 项目的发展需要吧原来自己的写的通讯换为第三方的,多家对比后选择了融云IM通讯,项目要实现的功能这要是单聊.群聊.聊天室.发送的内容为文字.图片.文件.语音通话与视频通话.听起来挺复杂的我 ...
- 一像素边框的问题(使不同dpr设备完美显示1px的border)
问题:不同dpr的屏幕有不同的屋里像素值,而我们css像素的1px由于不同屏幕的渲染会导致宽度并不一样: 例如: dpr为2的retina屏幕是有四个物理像素点(真实屏幕上的点)组成一个逻辑(css) ...
- AcWing 1220. 生命之树
题目链接 题目描述: 在X森林里,上帝创建了生命之树. 他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值. 上帝要在这棵树内选出一个非空节点集 S,使得对于 S 中的任 ...
- Spring-JdbcTemplate基本使用
概述:它是spring提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装,spring框架为我们提供了很多的操作模板类.例如操作关系型数据库JdbcTemplate和HibernateTem ...
- Android 环境搭建记录
Android 环境搭建记录 官网 https://developer.android.com/ studio 下载地址 官方下载 jikexueyuanwiki 国内镜像 studio历史版本 安装 ...