Windows xp 32bits d3d9.dll vs Windows 7 64bits d3d9.dll

时间:2012-07-17 11:48:12

标签: c++ debugging direct3d

我有问题为我的黑客做代码洞。

windows xp 32bits d3d9.dll运行时返回地址

4fe50000 (base address)
4fe58840 (drawindexedprimitive virtual table address)
4fe571b0 (endscene virtual table address)

windows 7 64bits d3d9.dll运行时返回地址

72c30000 (base address)
72c5b6b1 (drawindexedprimitive virtual table address)
72c5279f (endscene virtual table address)

如果你仔细看,它的大小似乎不同。

好吧,我甚至试图调试这个=> “windows 7 x64的c:\ windows \ syswow64 \ d3d9.dll”,它返回不同的地址5e1cxxxx

我不确定我错过了什么。但返回为“72c30000”,我可以保证它是32位d3d9.dll

有任何解释吗?

1 个答案:

答案 0 :(得分:2)

如今,DirectX是Windows不可或缺的一部分。特别是Aero依赖它,d3d9.dll已预先安装。所以简单的解释是地址不同,因为DLL是不同的。通过查看Windows资源管理器中的“属性+详细信息”选项卡可以轻松查看的内容。请注意不同的文件版本。

在任何情况下,您都无法依赖不同Windows版本的功能的一致地址。或者就一个版本而言,安全补丁或服务包将改变地址。或者就一个特定文件版本而言,地址空间布局随机化功能专门用于阻止您进行尝试。