我正在分析一些裂缝,其中一个将重定位表的地址和大小更改为0。黑客想要用它来达到什么目的?
为了提供更多信息,破解的目标是加载另一个DLL,将加载表中以前的windows DLL名称更改为自定义名称。
发布于 2011-12-17 23:53:34
删除重定位表可以保证DLL不能被重定位。
因此新的代码(破解代码)不需要计算DLL中的任何地址,并且可以使用常量地址值。
另外,重定位表实际上并不是必需的,因此可以删除它来减小模块的大小,或者用一些数据来替换它。
发布于 2011-12-18 00:19:57
根据Portable Executable Specification的说法,只有当库必须在不同于其首选加载地址的地址上加载时,才需要重定位表。因此,只要在库的首选地址上加载库,从目录中删除重定位表就不会有任何影响(事实上,这是在映像不支持ASLR时发生的)。
发布于 2011-12-17 23:50:17
要更改要加载的DLL的名称,通常只需更改导入表。剩下的只是猜测工作,不知道有问题的二进制文件的细节。
我认为重要的是要认识到,并不是所有的“垃圾”都知道他们到底在做什么,也许你正在分析一些根本不应该分析的东西。
也就是说,出于以下几个原因,您可能想要删除位置调整:
在可执行文件中,重定位数据是无用的(并且可以安全地删除),除非它们是ASLR-aware.
https://stackoverflow.com/questions/8545023
复制相似问题