PE文件-手工修改重定位表-WinHex-CFF Explorer
文章目录
- 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相关推荐
- exe文件解析_PE文件格式之重定位表
一.重定向表的作用: 这个在网上有很多种解释,那我也说一下自己对这个表的解释,程序运行的时候一般有两种方式来调用函数就是OD的那个CALL,一个是基址+偏移,另一种就是写死的函数地址比如 CALL 0 ...
- Windows PE第6章 栈与重定位表
第六章 栈与重定位表 本章主要介绍栈和代码重定位.站和重定位表两者并没有必然的联系,但都和代码有关.栈描述的是代码运行过程中,操作系统为调度程序之间相互调用关系,或临时存放操作数而设置的一种数据结构. ...
- PE结构基址重定位表
PE体系 PE结构&整体叙述 PE结构&导入表 PE结构&导出表 PE结构&基址重定位表 PE结构&绑定导入实现 PE结构&延迟加载导入表 重定位表定位 ...
- 滴水逆向三期实践15:重定位表修正
我们知道,重定位表是由于在代码中写入的绝对地址,而 DLL 不能按照设想的 ImageBase 作起始加载位置去了别的地方占坑,那么需要根据重定位表记录的这些绝对地址在内存中的位置(RVA),逐一去到 ...
- PE学习(六)第六章 栈与重定位表 实例栈溢出、模拟加载器加载DLL、遍历重定位表
第六章 栈与重定位表 16bit OS 存在长调用 lcall push cs,ip 相应的iret pop ip, cs 而call/ret only focus ip register 3 ...
- PE格式第七讲,重定位表
PE格式第七讲,重定位表 作者:IBinary 出处:http://www.cnblogs.com/iBinary/ 版权所有,欢迎保留原文链接进行转载:) 一丶何为重定位(注意,不是重定位表格) 首 ...
- 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc)
系列汇总 写一个PE的壳_Part 1:加载PE文件到内存 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc) 写一个PE的壳_Part 3:Section里实 ...
- elf文件中代码段有绝对地址但重定位表中无.text.rel
阅读<程序员的自我修改>第三章 中关于ELF 文件结构描述 关于重定位表 P79时候产生的问题. 文章中说只要有绝对地址的段,就会有重定位.但是readelf -S helloWorld. ...
- 操作系统是如何使用重定位表的
一.重定位表的结构 重定位表是数据目录中第6项,它的结构如图示: 重定位表由多个块(block)组成,每个块内部由三部分组成--VirtualAddress.SizeOfBlock 和若干个2字节偏移 ...
最新文章
- 微软CEO纳德拉恢弘计划:让开发者始终忘不了微软
- python多进程并发与pool多线程
- Oracle dmp文件导入
- python数据可视化柱状图_python数据可视化示例柱状图
- 对香草冰淇淋过敏的汽车
- win10上卸载ubuntu
- 移动健康应用观察:快速问医生的“Web 10年功”
- 40个使用HDR的超棒夜景摄影照片展示
- matlab划分训练集验证和测试集代码_训练集、验证集和测试集
- 易语言新手入门教程第十三课 - 制作QQ自动登录器
- 计算机原理与结构 实验1《实验工具使用》
- lnmp 升级php后 502 bad gateway,lnmp 运行一段时间后出现nginx 502 Bad Gateway的解决方法...
- ALG:应用层网关(防火墙)
- Moore-Penrose 广义逆/伪逆 (The Moore-Penrose Pseudoinverse)
- 51单片机寻迹小车完整程序
- 计算机网络有哪些分类方式,计算机网络有哪些分类?
- 响应式网页设计的20个误区
- 金工如何运用计算机思维,金工的实习心得体会
- MySQL 行级锁(行锁、临键锁、间隙锁) 小白教程
- 操作系统实验六、系统内存使用统计