-
-
为什么DLL的.reloc块中插入表项后加载时出错???
-
发表于:
2006-9-9 20:03
4483
-
为什么DLL的.reloc块中插入表项后加载时出错???
我在DLL的.text段插入了一行代码,如下:
mov [1001E56C],esi
该DLL的默认基址是10000000,但在win2K中被加载到14A000基址中去,
所以要改.reloc块.于是在.reloc块中相应的地方插入了一个表项,
同时修改了列表的长度(长度+2),原位置的列表内容相应后移,
但加载DLL时出错.于是不插入,在.reloc块的末尾添加一个新的列表,
列表只有一项.重新加载没有出错,但用OD查代码处的地址却没有被重定位时
修改.(我肯定插入的表项格式和位置正确,因为我将列表末尾的00项改成相应
的RVA项,加载后用OD查其新值,发觉已被重定位修改成功)
我查看过PE头的.reloc目录项的RVA长度比实际内容长好多.应该不会超出块长.
不知是什么原因, 请问各路高手: .reloc块是否不允许插入新的项吗?如果可以,
该如何办呢?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!