手动脱壳(一)

                             手动脱壳

手动脱壳一般分为三种,一是查找真正的入口点;二是抓取内存镜像文件;三是重建PE文件
理论上,当程序执行时,外壳代码首先获得控制权,模拟Windows加载器,将原来的程序恢复到内存中。这时,内存中的数据就是加壳前的镜像文件了。适时将其抓取并修改,即可还原到加壳前的状态。
OEP理论:外壳程序负责在内存中把原程序解压,还原,并把控制权还给解压后的真正程序,再跳到原来的程序入口点。一般的壳在这里会有一个明显的“分界线”,这个解压后真正的程序入口点称为“”OEP”(Original Entry Point,原程序入口点)
所以手动脱壳最主要的就是找到OEP,只要找到OEP,就可以直接dump脱壳了

1, 首先最简单就是使用自动工具:OllyDbg的OllDumP插件,这个插件有两个显著的脱壳功能,它可以转储当前的内存,还可以搜索加壳可执行文件的OEP!在这里插入图片描述

程序在OEP运行前命中断点。命中断点。但是这种方法容易断错点,跟进call或者跳过call,可以相互尝试。
2.可以通过内存访问断点,寻找到OEP,在od中使用快捷组合键ALT+M打开内存模块对代码段用F2键进行设置内存断点,这个断点是一次性断点,中断发生后,断点就会被自动删除。(本例是text区块)
在这里插入图片描述

然后就是ctrl+F2重启程序,直接F9执行程序,因为当外壳跳到OEP返回代码段时即可对触发内存访问断点,从而产生中断。
二次断点法寻找OEP的关键是要等代码段解压完毕,再对代码段设置内存访问断点!一般的壳会依次对.text.rdata.data.rsrc区块进行解压处理,所以,可以先在.rdata.data等区块下内存访问断点,中断后,此时代码段已解压,接着再对代码段(.text块)下内存访问断点,即可到达OEP。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值