这个程序是自己手动写的一个小程序,然后用ACProtect加壳工具手动加科之后再脱的,之前在网上看过一些资料,在脱ACProtect’壳的时候,需要忽略异常什么的,但是我在脱这个壳的时候并没有碰到异常的情况,接下来就介绍一下脱壳过程。

0x00 查壳

ACProtect ——脱壳

0x01程序运行

ACProtect ——脱壳

0x02调试脱壳

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

相关文章:

  • 2021-08-10
  • 2021-08-01
  • 2021-05-09
  • 2021-12-23
  • 2021-10-19
  • 2021-06-14
  • 2022-01-14
  • 2021-10-14
猜你喜欢
  • 2022-12-23
  • 2021-09-02
  • 2021-10-06
  • 2022-12-23
  • 2021-04-22
  • 2021-08-01
  • 2021-04-22
相关资源
相似解决方案