0

我有问题要为我的 hack 做代码洞穴。

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's c:\windows\syswow64\d3d9.dll",它返回不同的地址 5e1cxxxx

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

有什么解释吗?

4

1 回答 1

2

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

在不同的 Windows 版本中,您不能指望函数的地址一致。或者在一个版本上,安全补丁或服务包会改变地址。或者就某个特定文件版本而言,地址空间布局随机化功能专门设计用于阻止您尝试执行的操作。

于 2012-07-17T12:11:43.867 回答