我有问题要为我的hack做代码破解。
Windows XP 32位d3d9.dll运行时返回地址
4fe50000 (base address)
4fe58840 (drawindexedprimitive virtual table address)
4fe571b0 (endscene virtual table address)
Windows 7 64位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
有什么解释吗?
最佳答案
如今,DirectX已成为Windows不可或缺的一部分。特别是Aero依赖于此,d3d9.dll是预安装的。因此,简单的解释是,由于DLL不同,所以地址也不同。通过查看Windows资源管理器中的“属性+详细信息”选项卡,您可以轻松看到某些内容。注意不同的文件版本。
在任何情况下,您都不能依靠不同Windows版本上功能的一致地址。或就一个版本而言,安全补丁或Service Pack都会更改地址。或者就某个特定文件版本而言,“地址空间布局随机化”功能是专门为阻止您尝试执行的操作而设计的。
关于c++ - Windows XP 32位d3d9.dll与Windows 7 64位d3d9.dll,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11521856/