当前位置:网站首页>PE文件-手工修改重定位表-WinHex-CFF Explorer
PE文件-手工修改重定位表-WinHex-CFF Explorer
2022-08-08 12:25:00 【插件开发】
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.作者答疑
如有疑问,敬请留言。
边栏推荐
猜你喜欢
安装MinGW-w64
如何在go重打印函数调用者信息Caller
五心红娘6月成功案列
The most complete JVM performance tuning in history: thread + subsystem + class loading + memory allocation + garbage collection
day01 - Introduction to Web API - Introduction to DOM - Getting Elements - Event Basics - Manipulating Elements - Exclusive Operations - Custom Attribute Operations - Node Operations - Cases: Dynamica
SQL实例 - 胜平负
[C language] file related operations
作为一个年薪50W阿里P7架构师的必备知识:并发+JVM+多线程+Netty+MySQL
【C语言】自定义类型详解:结构体、枚举、联合
In-depth analysis of the soul of C language -- pointer
随机推荐
STM32 entry development to make infrared remote control (smart home-universal remote control)
五心红娘6月成功案列
Jenkins - 持续集成介绍(1)
[C language] file related operations
迁移学习(Transfer Learning)的背景、历史及学习课
硬盘数据恢复工具
The maximum validity period of an SSL certificate is 13 months. Is it necessary to apply for multiple years at a time?
三个点语法和DOM观察者
尝试开发微信公众号消息推送功能并且和小程序关联
Fluorite, millet against smart camera
C语言小项目 -- 通讯录(静态版+动态版+文件版)
Replication监控及自动故障切换
【C语言】文件相关操作
程序环境和预处理
odps sql被删除了,能找回来吗
(8)FlinkSQL自定义UDF
Combining "xPlus" to discuss the innovation and change of software architecture
Jenkins-安装(2)
MeterSphere - open source test platform
MySQL安装及使用