PE 文件中.reloc节 删除记录

PE文件是windows 下的一种可移植执行体,其设计目的使用来解决跨平台问题(但实际上只是在windows下使用)。通常在windows下使用的.exe .dll .sys等文件都是PE文件,符合PE文件格式规范,有其自身的格式。不熟悉的朋友也可以网上查找相关资料。

PE文件的.reloc 节 即是使用了PE重定位技术。PE加载到进程虚拟地址时,会加载到PE中的IMAGE_OPTIONAL_HEADER结构体中ImageBase(DWORD)字段所指示的位置,一般.exe文件为4000000H,而.dll 文件为1000000H。但是一个PE依赖的DLL多数情况下不止一个!写一个简单的C程序,可能调用了kernel32.dll和User.dll等系统组件。而若先将kernel32.dll加载到1000000H的位置,User.dll 再加载到这个位置就会覆盖,所以加载器作了DLL重定位,将User.dll加载到其他位置,防止发生冲突。

win7与vista之前没有引入ASLR安全机制,所以.exe文件在加载后位置都是固定在ImageBase处。


windowsPE重定位操作基本步骤:

1、查找PE代码中硬编码的位置;

2、做相关运算,若地址值为x,ImageBase - x 进行Virtual Address 到 Relative Virtual Address 的运算,最后再加上实际加载的地址。


因为一般的.exe程序中reloc节几乎对运行无影响,可以直接删除(但dll和系统驱动好像都是必须的)。下面记录删除过程:

工具:任意一中PE查看器和十六进制编辑器(本文使用HexEdit和PETool&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值