手动脱壳中找到入口点后怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手动脱壳中找到入口点后怎么做相关的知识,希望对你有一定的参考价值。

突然有兴趣学脱壳,但是不会,所以请教

首先,选取工具。一般来说,查壳工具,PEiD(fi)也不错;调试工具OD(OICE也不错);找到入口点(OEP)之后LoadPE载入,Dump出,然后一般用ImportREC修复一下。
方法主要有一下几种:1,F8单步跟踪法,这个也是最常见的。2.内存镜像法。3,一步到达4,SFX法 5,最后一次异常法 6,模拟跟踪法 差不多就这些吧,主要是看你灵活运用了。

如果你真的想学的话,加我Q619685693 GoWithWind
参考技术A 首先你要懂得软件编程,不然看到的代码很让人头疼。知道你想修改的地方进行修改就好 参考技术B 客服 参考技术C 软件编程

记手动脱壳

其实之前也手脱过一些壳,但一直没仔细研究过。。。

#以下方法参考《加密与解密第四版》,程序可在随书文件里找到

EXE

一,寻找OEP

1,根据跨段指令寻找

入口处

技术图片

 技术图片

 技术图片

 技术图片

在401130处要用ctrl+A重新分析代码

其实这种方法只要f8不跑飞,一直f8就行

2,内存访问断点寻找

通过在.text段下内存访问断点后f9,运行到OEP时会断下来

但因为程序会先对.text段进行解密,所以感觉并不好用

3,根据栈平衡原理

因为要保护现场环境,通常会使用pushad/popad,pushfd/popad

pushad前的esp

技术图片

 pushad后

技术图片

(1) 在19ff54处下个硬件访问断点,f9

技术图片

 (2)在19ff70处下硬件写入断点,f9

技术图片

 两种方法区别不大

二,Dump与Anti-Dump

1,纠正SizeOfImage

程序MODULERNTRY32中modBaseSize被修改 

技术图片

可以看到镜像大小只有1000

技术图片

 技术图片

 注:如果用OllyDump直接默认dump即可

 2,修改内存属性

通过将部分地址设为不可读,

技术图片

 技术图片

 可以看到被设置成了无法访问

技术图片

 之后dump

三,重建输入表

1,寻找IAT

找到这样的指令

技术图片

 技术图片

这段就是IAT

2,重建输入表

(1)使用import REC

运行要脱壳的程序,attach process

填入OEP的RVA,使用IAT AutoSearch

技术图片

 点Get import

技术图片

 使用Fix Dump修复dump出的文件

技术图片

 可以看到多了一个.mackt段,输入表被放到了这里

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DLL

一,寻找OEP

和exe的方法几乎一致,但有可能不会在外壳的入口处停下来,可以先将入口处的数据改为 EB FE,运行后不断在入口处循环,f12停下后改为原数据后调试

技术图片

 

 dll被映射到了30000处,找到的OEP为31240,OEP的RVA为1240

寻找IAT:和exe一致

技术图片

 二,Dump

要修改Image Base的值为当前的值

技术图片

 

 三,修复输入表

管理员打开Import REC,attach到loaddll,pick dll

技术图片

 选择edrlib,填入OEP,IAT的RVA和size,fix dump

四,构建重定位表

找到重定位初始化的地方

技术图片

 (图不是一次截得,和下面地址不一样)

技术图片

 RVA为c000

 分配一段地址

技术图片

 打个补丁

技术图片

 技术图片

 跑出来(注:第一次的edx值要手动设置分配出来的地址)

技术图片

 二进制复制出来放进010editor(shift+ctrl+v复制hex,直接在菜单里好像找不到)存为Relo.bin

运行ReloRCE,把文件拖进去

技术图片

 fix Dump

技术图片

 

以上是关于手动脱壳中找到入口点后怎么做的主要内容,如果未能解决你的问题,请参考以下文章

有关OEP脱壳

如何对.EXE文件进行脱壳?

搬迁世博入口点后的空白屏幕

记手动脱壳

记手动脱壳

脱壳实践之寻找OEP——两次内存断点法