我有问题为我的黑客做代码洞。
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
有任何解释吗?
答案 0 :(得分:2)
如今,DirectX是Windows不可或缺的一部分。特别是Aero依赖它,d3d9.dll已预先安装。所以简单的解释是地址不同,因为DLL是不同的。通过查看Windows资源管理器中的“属性+详细信息”选项卡可以轻松查看的内容。请注意不同的文件版本。
在任何情况下,您都无法依赖不同Windows版本的功能的一致地址。或者就一个版本而言,安全补丁或服务包将改变地址。或者就一个特定文件版本而言,地址空间布局随机化功能专门用于阻止您进行尝试。