首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果从PE报头中删除重定位表地址,会发生什么情况?

如果从PE报头中删除重定位表地址,会发生什么情况?
EN

Stack Overflow用户
提问于 2011-12-17 21:20:35
回答 3查看 3.6K关注 0票数 2

我正在分析一些裂缝,其中一个将重定位表的地址和大小更改为0。黑客想要用它来达到什么目的?

为了提供更多信息,破解的目标是加载另一个DLL,将加载表中以前的windows DLL名称更改为自定义名称。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-17 23:53:34

删除重定位表可以保证DLL不能被重定位。

因此新的代码(破解代码)不需要计算DLL中的任何地址,并且可以使用常量地址值。

另外,重定位表实际上并不是必需的,因此可以删除它来减小模块的大小,或者用一些数据来替换它。

票数 4
EN

Stack Overflow用户

发布于 2011-12-18 00:19:57

根据Portable Executable Specification的说法,只有当库必须在不同于其首选加载地址的地址上加载时,才需要重定位表。因此,只要在库的首选地址上加载库,从目录中删除重定位表就不会有任何影响(事实上,这是在映像不支持ASLR时发生的)。

票数 2
EN

Stack Overflow用户

发布于 2011-12-17 23:50:17

要更改要加载的DLL的名称,通常只需更改导入表。剩下的只是猜测工作,不知道有问题的二进制文件的细节。

我认为重要的是要认识到,并不是所有的“垃圾”都知道他们到底在做什么,也许你正在分析一些根本不应该分析的东西。

也就是说,出于以下几个原因,您可能想要删除位置调整:

在可执行文件中,重定位数据是无用的(并且可以安全地删除),除非它们是ASLR-aware.

  • possibly
  • 代码,这将需要重定位条目。而不是添加这些,黑客简单地删除reloc表完全(可能也禁用在标题中的ASLR )
  • 如果文件是打包的,您通常运行一个PE重建器在解压的文件,以删除无用的部分数据在磁盘上,并清理PE标题。默认情况下,这些工具中的大多数会从PE中剥离reloc数据。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8545023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档