- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从游戏中读取坐标。当我在通过 OpenProcess 收到的 HANDLE 上使用 ReadProcessMemory 时,这工作得很好,我在 CheatEngine 中找到了内存。例如,如果我知道正在运行的进程中的浮点值是 0x5AB38F68,我就可以读取它。
但是,每次重新启动游戏时,地址都会发生变化。它依赖于名为 AkSoundEngine.dll 的模块。所以基本上地址是 AkSoundEngine.dll+0x168F68。但是,我终生无法找到所述 DLL 的基地址。它在 CE 中显示:Click for Image
但是,当像以前一样在同一个 HANDLE 上使用 EnumProcessModules() 时,结果如下:
[2015-02-08 09:26:09][INFO][Game:59] - C:\Windows\SYSTEM32\ntdll.dll
[2015-02-08 09:26:09][INFO][Game:59] - C:\Windows\SYSTEM32\wow64.dll
[2015-02-08 09:26:09][INFO][Game:59] - C:\Windows\SYSTEM32\wow64win.dll
[2015-02-08 09:26:09][INFO][Game:59] - C:\Windows\SYSTEM32\wow64cpu.dll
[2015-02-08 09:26:09][INFO][Game:59] - F:\Steam\steamapps\common\TheLongDark\tld.exe
[2015-02-08 09:26:09][INFO][Game:59] - F:\Steam\steamapps\common\TheLongDark\tld.exe
[2015-02-08 09:26:09][INFO][Game:59] - F:\Steam\steamapps\common\TheLongDark\tld.exe
[2015-02-08 09:26:09][INFO][Game:59] - F:\Steam\steamapps\common\TheLongDark\tld.exe
[2015-02-08 09:26:09][INFO][Game:59] - F:\Steam\steamapps\common\TheLongDark\tld.exe
DLL 未显示。因此我的假设是,它可能在 tld.exe 模块之一中。如果是这样,我将如何迭代模块的模块然后接收它的基地址?我假设我还必须添加 tld.exe 的基地址是否正确,如下所示:tld.exe+AkSoundEngine.dll+0x168F68
?
您可能还注意到,它作为一个模块显示了 5 次 tld.exe,但其中只有 2 次返回 BaseOfDll,作为 GetModuleInformation() 返回的 LPMODULEINFO
的一部分。
会不会是我刚刚遇到了 JNA 中可行的东西(我对此表示怀疑,因为我只是调用 C 代码)?
我不确定如何更具体地询问,但您可以在 my GitHub 查看完整代码.大部分发生在 Game.java 的 updatePosition() 方法中。
最佳答案
解决方案是使用带有 32 位标志的 EnumProcessModulesEx()。我还被告知,如果 Java 是 64 位的,那么每个 HMODULE 都是 8 个字节长。此外,在较新的系统上使用 EnumProcessModulesEx() 时,PROCESS_ALL_ACCESS 标志存在一些问题。
关于java - JNA - EnumProcessModules() 不返回所有 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28394955/
我正在尝试调用 ;EnumProcessModules;使用给定句柄的 Go var ( psapi = syscall.NewLazyDLL("Psapi.dll") procEnu
我试图从游戏中读取坐标。当我在通过 OpenProcess 收到的 HANDLE 上使用 ReadProcessMemory 时,这工作得很好,我在 CheatEngine 中找到了内存。例如,如果我
我正在编写一个枚举进程基地址的函数。这是通过几个 Windows API 调用完成的,但是,我相信是我对 EnumProcessModules 的调用造成了错误。 还应注意,并非每个进程都会出现此错误
我目前正在尝试枚举我之前从我的 32 位程序创建的 supsended 32 位进程的所有模块,我的 Windows 是 64 位的。 (我已经阅读了有关该问题的所有其他主题)。 这是代码: let
我在 Windows 服务中执行了以下代码在 Windows XP 32 位上: HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_
我的代码在win7 32bit上运行,但是当我使用EnumProcessModules时,它返回false,getlasterror()返回错误代码299,声明程序是32bit的,这条语句不能运行在
我是一名优秀的程序员,十分优秀!