这个程序是自己手动写的一个小程序,然后用ACProtect加壳工具手动加科之后再脱的,之前在网上看过一些资料,在脱ACProtect’壳的时候,需要忽略异常什么的,但是我在脱这个壳的时候并没有碰到异常的情况,接下来就介绍一下脱壳过程。
0x00 查壳
0x01程序运行
0x02调试脱壳
此次脱壳使用的方法是内存镜像法,首先在数据段下断点,运行之后断下来,之后在text段下断点之后再运行(把数据段的断点取消),段下来之后就来到OEP:
到达OEP之后,可以先检查一下IAT表是否正常,当然检查IAT表是否正常这一步操作,也可以在修正转储的时候进行,这里就行查看主要是检查IAT表是否正常(有没有被加密)
可以很清晰的看出,这个时候的IAT表是异常的,也就是说IAT表是被加密过的,所以现在的问题就是修复IAT表,也就是相当于在与加密壳战斗,结合之前的几篇帖子的经验,在加密壳的脱壳过程中有三个地址是必要的:
1:获取源IAT表的地址
2:修改IAT表的地址
3:OEP
OEP我们已经找到,现在的任务就是查找剩下的两个地址,还是老办法,在IAT表里边下硬件写入断点:
也就是说现在我们已经找到修改IAT表的地址,接下来的任务就是找源IAT地址,根据之前的经验可以知道,获取源IAT的地址应该就在附近,我们产生尝试调试一下:
所以 现在获取源函数地址的地址也已经找到,所以下一步就是写脚本脱壳了:
到了OEP之后,直接dump,脱壳就好了.