【发布时间】:2011-12-18 00:19:57
【问题描述】:
我正在分析一些破解,其中一个将重定位表地址和大小更改为 0。破解者试图用这个来达到什么目的?
为了提供更多信息,破解的目的是加载另一个 DLL,将加载表中以前的 windows DLL 名称更改为自定义的名称。
【问题讨论】:
标签: windows exe portable-executable ollydbg
我正在分析一些破解,其中一个将重定位表地址和大小更改为 0。破解者试图用这个来达到什么目的?
为了提供更多信息,破解的目的是加载另一个 DLL,将加载表中以前的 windows DLL 名称更改为自定义的名称。
【问题讨论】:
标签: windows exe portable-executable ollydbg
删除重定位表保证DLL不能被重定位。
所以新代码(破解代码)不需要计算DLL中的任何地址,可以使用常量地址值。
通常重定位表实际上并不是必需的,因此可以将其删除以减小模块的大小,或者用一些数据替换它。
【讨论】:
根据Portable Executable Specification,仅当一个库必须在另一个地址而不是其首选加载地址加载时才需要重定位表。因此,从目录中删除重定位表不会有任何影响,只要库是在其首选地址加载的(这实际上是在映像不支持 ASLR 时发生的)。
【讨论】:
要更改要加载的 DLL 的名称,通常只需更改导入表。其余的只是猜测工作,不知道相关二进制文件的细节。
我认为重要的是要意识到并非所有“破解者”都知道他们到底在做什么,也许你正在分析一些根本不应该分析的东西。
也就是说,您可能出于以下几个原因想要删除重定位:
【讨论】: