我正在分析一些裂缝,其中一个将重定位表地址和大小更改为0.破解者试图用这个来实现什么?
为了提供更多信息,破解的目的是加载另一个DLL,在加载表中更改以前的Windows DLL名称的名称,以便自定义。
答案 0 :(得分:3)
删除重定位表可确保无法重定位DLL 所以新代码(破解代码)不需要计算DLL中的任何地址,并且可以使用常量地址值。
实际上通常不需要重定位表,因此可以删除它以减小模块的大小,或者用一些数据替换它。
答案 1 :(得分:1)
要更改要加载的DLL的名称,通常只需更改导入表。其余的只是猜测工作,而不知道有问题的二进制文件的具体细节。
我认为重要的是要意识到并非所有'破解者'都知道他们究竟在做什么,也许你正在分析一些根本不应该分析的东西。
也就是说,您可能希望删除重定位,原因如下:
答案 2 :(得分:0)
根据Portable Executable Specification,只有在必须在另一个地址加载库而不是其首选加载地址时才需要重定位表。因此,只要将库加载到其首选地址(在图像不支持ASLR时就会发生这种情况),从目录中删除重定位表不会产生任何影响。