-
-
[旧帖]
[原创]自己写个重定位表重建工具
0.00雪花
-
2010-12-28 18:58
2379
-
[旧帖] [原创]自己写个重定位表重建工具
0.00雪花
菜鸟最近在努力学习《加密》,
在DLL脱壳的重建重定位表环节遇到个坎。。。。。。
为了突破者坎,
跟着13章的思路自己写了个重定位工具,
其中也参考了《加密》的PE分析工具源码 。
*************************************
下面写下大概的思路。。。
这个工具需要输入带有重定位RVA的BIN文件,每个RVA以DWORD对齐,最后以一个为0的DWORD结束
程序循环读取每个重定位RVA,计算得到IMAGE_BASE_RELOCATION中的VirtualAddress、TypeOffset和SizeOfBlock;
typedef struct _IMAGE_BASE_RELOCATION {
DWORD VirtualAddress;
DWORD SizeOfBlock;
// WORD TypeOffset[1];
} IMAGE_BASE_RELOCATION;
其中,
VirtualAddress=重定位RVA/0x1000*0x1000;
TypeOffset=重定位RVA%0x1000+0x3000; 0x3000表示高 4位的标志
SizeOfBlock为整个重定位块的大小
以链表的形式储存以上数据
再写入到文件的指定RVA处
最后修改下OPTIONAL_HEADER中的重定位数据目录的地址和偏移;
总之,菜鸟表示很努力学习,求鼓励,求邀请码。。。。
[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。