脱壳学习之 -- 步骤总结

脱壳步骤

最近在学习脱壳的教程,接下来总结一下手动脱壳的方式

1. 使用OD调试

常用的方式有以下

  1. 单步跟踪法: 这个方法是万能的, 思路就是, 碰到向上跳转, F4执行到下一步;如果函数中断, 则步入函数,继续单步, 一直到找到入口
  2. ESP定律法: 找到开头关键的push后的一句,然后数据窗口跟随到 ESP寄存器的地址,在数据窗口的地址处右键下访问断点,然后直接运行,如果不是真正的入口,则继续单步寻找入口

2. 脱壳

脱壳是比较麻烦的,因为可能一种方法行不通,那就需要使用其他的方法,接下来是总结的几种方式(找到OEP(入口)之后)

  1. 右键选中“用ollyDump调试进程”, 然后另存文件
  2. 使用loadPE,首先选中进程,修正镜像大小,然后右键完整转存
  3. 如果使用loadPE,则需要手动修复文件(使用工具:import reconstructor)
    1. 选中进程
    2. 查找API
    3. 获取输入表
    4. 获取无效函数
    5. 删除无效函数
    6. 转存到文件
    7. 如果还是不行,则需要手动获取 RVA和Size,方法是:
      1. 在入口之后找一个函数的地址addr
      2. 使用 d addr, 找到地址数据
      3. 向上滚动到00000000处,记录当前地址addr1
      4. 向下滚动到00000000处,记录当前地址addr2
      5. RVA即是addr1
      6. Size即是addr2-addr1
  4. 如果修正完文件之后,还是运行报错,可以使用loadPE重建PE尝试一下

猜你喜欢

转载自blog.csdn.net/cs840610862/article/details/88074485