逆向-PE重定位表
2024-09-03 00:45:09
重定位表
当链接器生成一个PE文件时,会假设这个文件在执行时被装载到默认的基地址处(基地址+RVA就是VA)。并把code和data的相关地址写入PE文件。如果像EXE一样首先加载就是它imageBase没问题能算出真正的VA,但是要有多个DLL文件,就会出现基址不对的问题,通过基址+RVA算出来的数据地址和函数地址就会出问题(链接器算的)需要重定位表来调整。在PE文件中重定位表往往单独作为一个节用“.reloc”表示。
#define IMAGE_DIRECTORY_ENTRY_BASERELOC //重定位表地址
重定位表位于.reloc节内通过_IMAGE_BASE_RELOCATION来组织
typedef struct _IMAGE_BASE_RELOCATION {
DWORD VirtualAddress;
DWORD SizeOfBlock;
// WORD TypeOffset[1];
} IMAGE_BASE_RELOCATION;
- VirtualAddress:指的是下面这组数据(4KB页内需要重定位的数据个数)的开始RVA地址也就是说这个内存页基址。下面的是RVA的RVA大小为2个字节(后面12个位)。
- SizeOfBlock:当前重定位结构的大小,这个值减去2个DWORD(VirtualAddress和SizeOfBlock)就是下面需要重定位的地址数组大小。
重定位表只是让本PE能够正确运行的东西。修正本PE的值。
最新文章
- NUOJ 88
- C# Excel处理工具
- Lock读写锁技术的妙用
- apache AllowEncodedSlashes 允许URL中对路径分隔符进行编码
- sql索引组织
- Node.js:util.inherits 面向对象特性【原型】
- WebBrowser控件应用:弹出新窗体和关闭窗口
- [转]JAVA三大框架SSH和MVC
- python 自动化之路 day 01 人生若只如初见
- W3C vs. WHATWG HTML5 Specs – The Differences Documented
- python2.7学习记录之二
- 从并发处理谈PHP进程间通信(一)外部介质
- 51Nod - 1384 正常解法
- pom.xml中添加远程仓库
- Magento 2数据库EAV模型结构
- Linux下的两个经典宏定义 转
- 总结day24 ---- socket ,struct 的学习
- JS正则表达式的分组匹配
- thinkjphp 模板中获取url中的action
- 深入理解Redis主键失效原理及实现机制(转)