文章目录

  • 1.CFF Explorer
  • 2.计算添加后的重定位大小
  • 3.作者答疑

1.CFF Explorer

  如果需要修改exe,dll等的二进制代码,遇到添加绝对地址时,需要将绝对地址的位置添加进重定位表,确保添加代码的正确。那如何手工添加?首先需要了解重定位表在PE文件中的解析,本文默认读者具有这方面功底。
  先采用CFF Explorer打开目标文件,找到重定位表,如下图所示;

2.计算添加后的重定位大小

  白色部分是可以修改的,灰色部分不能,由此可见,CFF Explorer是可以修改重定位表的,但是不能直接增加一个新的表单元及表项的。这时就必须进行二进制的修改。首先必须计算添加后的重定位表大小,如本文增加一个表含两项和在一个已知表中增加一项,就是一共增加0x0E个字节。修改如下位置:

  这里推荐的工具是WinHex,这个工具比较强大(也可以用CFF Explorer修改)。


  将地址3A04中表示个数的数据增加一个表项(注意字节是2个,所以要变成74)。如下所示:

  接着找到下一个表头位置,地址是3B72,复制整块数据,向后移动两个位置。然后空出来的两个位置改为0,并复制前面两个字节。这样添加一个表项的工作就已经完成。如下图所示:

  然后是增加一个表项,虚拟地址是3000,大小是12,目标地址是3200。定位到重定位表末尾地址3B98。写入对应的起始地址,大小和项(注意如果相对虚拟地址,没有这么大,这么改是没有意义的)如下图所示:

3.作者答疑

  如有疑问,敬请留言。

PE文件-手工修改重定位表-WinHex-CFF Explorer相关推荐

  1. exe文件解析_PE文件格式之重定位表

    一.重定向表的作用: 这个在网上有很多种解释,那我也说一下自己对这个表的解释,程序运行的时候一般有两种方式来调用函数就是OD的那个CALL,一个是基址+偏移,另一种就是写死的函数地址比如 CALL 0 ...

  2. Windows PE第6章 栈与重定位表

    第六章 栈与重定位表 本章主要介绍栈和代码重定位.站和重定位表两者并没有必然的联系,但都和代码有关.栈描述的是代码运行过程中,操作系统为调度程序之间相互调用关系,或临时存放操作数而设置的一种数据结构. ...

  3. PE结构基址重定位表

    PE体系 PE结构&整体叙述 PE结构&导入表 PE结构&导出表 PE结构&基址重定位表 PE结构&绑定导入实现 PE结构&延迟加载导入表 重定位表定位 ...

  4. 滴水逆向三期实践15:重定位表修正

    我们知道,重定位表是由于在代码中写入的绝对地址,而 DLL 不能按照设想的 ImageBase 作起始加载位置去了别的地方占坑,那么需要根据重定位表记录的这些绝对地址在内存中的位置(RVA),逐一去到 ...

  5. PE学习(六)第六章 栈与重定位表 实例栈溢出、模拟加载器加载DLL、遍历重定位表

    第六章 栈与重定位表 16bit OS 存在长调用 lcall push cs,ip    相应的iret pop ip, cs  而call/ret only focus ip register 3 ...

  6. PE格式第七讲,重定位表

    PE格式第七讲,重定位表 作者:IBinary 出处:http://www.cnblogs.com/iBinary/ 版权所有,欢迎保留原文链接进行转载:) 一丶何为重定位(注意,不是重定位表格) 首 ...

  7. 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc)

    系列汇总 写一个PE的壳_Part 1:加载PE文件到内存 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc) 写一个PE的壳_Part 3:Section里实 ...

  8. elf文件中代码段有绝对地址但重定位表中无.text.rel

    阅读<程序员的自我修改>第三章 中关于ELF 文件结构描述 关于重定位表 P79时候产生的问题. 文章中说只要有绝对地址的段,就会有重定位.但是readelf -S helloWorld. ...

  9. 操作系统是如何使用重定位表的

    一.重定位表的结构 重定位表是数据目录中第6项,它的结构如图示: 重定位表由多个块(block)组成,每个块内部由三部分组成--VirtualAddress.SizeOfBlock 和若干个2字节偏移 ...

最新文章

  1. 微软CEO纳德拉恢弘计划:让开发者始终忘不了微软
  2. python多进程并发与pool多线程
  3. Oracle dmp文件导入
  4. python数据可视化柱状图_python数据可视化示例柱状图
  5. 对香草冰淇淋过敏的汽车
  6. win10上卸载ubuntu
  7. 移动健康应用观察:快速问医生的“Web 10年功”
  8. 40个使用HDR的超棒夜景摄影照片展示
  9. matlab划分训练集验证和测试集代码_训练集、验证集和测试集
  10. 易语言新手入门教程第十三课 - 制作QQ自动登录器
  11. 计算机原理与结构 实验1《实验工具使用》
  12. lnmp 升级php后 502 bad gateway,lnmp 运行一段时间后出现nginx 502 Bad Gateway的解决方法...
  13. ALG:应用层网关(防火墙)
  14. Moore-Penrose 广义逆/伪逆 (The Moore-Penrose Pseudoinverse)
  15. 51单片机寻迹小车完整程序
  16. 计算机网络有哪些分类方式,计算机网络有哪些分类?
  17. 响应式网页设计的20个误区
  18. 金工如何运用计算机思维,金工的实习心得体会
  19. MySQL 行级锁(行锁、临键锁、间隙锁) 小白教程
  20. 操作系统实验六、系统内存使用统计

热门文章

  1. 09年相当有才的100句话
  2. vivoY53s和y52s区别
  3. Android使用POI操作excel(支持xls和xlsx)
  4. Celery 学习笔记(3)- 任务和任务执行
  5. 单片机定时器作用与优势
  6. 费米估算 | 产品面试中的估算问题解法
  7. 解决:QWidget: Cannot create a QWidget when no GUI is being used 程序异常结束
  8. 毕业季--Java基础面试题
  9. jquery双重循环
  10. 用Css+Div实现太极图自动旋转