- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试从我有句柄的进程中获取模块的基地址。我已经使用 CreateToolhelp32Snapshot 和 EnumProcessModules 方法尝试过此操作。
<小时/>问题是这两种方法都只返回这 5 个 DLL:
underrail.exe
ndll.dll
wow64.dll
wow64win.dll
wow64cpu.dll
<小时/>
我知道应该有更多模块,并且尝试在其他游戏中使用它会返回相同的 5 个模块。
我找到了同一问题的一些答案,但它们都不适合我:
第一个不起作用,因为我无法使用 TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32 作为方法中的标志。
第二个不起作用,因为我无法调用方法 EnumProcessModulesEx()当我尝试调用 Psapi.INSTANCE.EnumProcessModulesEx(...)
这是我的代码片段:
public static int getModuleBaseAddress(int process_id) {
DWORD pid = new DWORD(process_id);
HANDLE snapshot = null;
snapshot = kernel32.CreateToolhelp32Snapshot(Tlhelp32.TH32CS_SNAPMODULE, pid);
MODULEENTRY32W module = new MODULEENTRY32W();
while(Kernel32.INSTANCE.Module32NextW(snapshot, module)) {
String s = Native.toString(module.szModule);
Pointer x = module.modBaseAddr;
System.out.println(s);
System.out.println(x);
System.out.println("---");
}
return 0;
}
请注意,使用 Tlhelp32.TH32CS_SNAPMODULE32 不会返回任何内容,并且 Tlhelp32.TH32CS_SNAPALL 返回与 lhelp32.TH32CS_SNAPMODULE 相同的结果
最佳答案
感谢 Daniel Widdis,我得到了答案。
目前,方法 EnumProcessModulesEx 未映射到 JNA,因此您必须制作自己的 Psapi 自定义版本,在我的例子中,它看起来像这样:
import com.sun.jna.Native;
import com.sun.jna.platform.win32.Psapi;
import com.sun.jna.platform.win32.WinDef.HMODULE;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.W32APIOptions;
public interface CustomPsapi extends Psapi{
Psapi INSTANCE = Native.load("psapi", Psapi.class,
W32APIOptions.DEFAULT_OPTIONS);
public void EnumProcessModulesEx(HANDLE hProcess, HMODULE[] lphModule, int cb,
IntByReference lpcbNeeded, int dwFilterFlag);
}
然后您可以加载自定义类并使用您映射的方法。
public static CustomPsapi c_psapi = Native.load("psapi", CustomPsapi.class);
为了让所有 DLL 正确显示,您需要使用现在映射的 EnumProcessModulesEx 方法,并将所有模块的标志作为最后一个参数 (0x03)所以该方法应该如下所示:
c_psapi.EnumProcessModulesEx(process, modules, 1024, new IntByReference(1024), 0x03);
关于java - JNA - CreateToolhelp32Snapshot 未返回所有 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612128/
所以我有一个项目,我定期发布到 maven 没有问题。我现在想提供这个项目的 SNAPSHOT 版本。所以我做'mvn clean deploy'。一切正常,如下所示: [INFO] 从 sonaty
假设我有一个项目 A在依赖项目的开发中 B - 目前也在开发中,尚未发布。 所以,在 A的 POM 文件,我有以下部分: com.example project-b 1.0.0-SNAP
在我们的项目中,我们正在从 ant 脚本迁移到 gradle 构建。 我们将使用artifactory作为我们公司的 repo 管理器来存储artifacts。 我在神器中看到了一些存储库内容,其中包
我已经阅读了该网站上的许多帖子(尤其是:iOS 8 Snapshotting a view that has not been rendered results in an empty snapsho
我们将 SBT 与 sbt-git 结合使用,从 Git 修订版中获取构建版本。具体来说,我们使用 git describe 的输出作为版本号,并在当前修订未标记时附加“SNAPSHOT”限定符: v
我正在使用 bitlyj 快照 jar 从以下链接缩短 URL。 http://code.google.com/p/bitlyj/downloads/list 有人能给我解释一下snapshot.ja
我有点难以区分 SNAPSHOT 和 SNAPSHOT READ COMMITTED 之间的区别? READ COMMITTED 是一种悲观的并发方法,如何将其应用到乐观并发中?在这种情况下,在 SN
显然,如果 Artifact 在版本中没有 -SNAPSHOT,我的 Nexus 将拒绝我向他抛出的每一个部署。 数据: 失败 Artifact 的名称:entando-core-engine-exp
我有一个 UIBarButtonItem,它会打开一个像这样的弹出窗口: @IBAction func openAdmin(sender: UIBarButtonItem) { let ale
我能够以 快照 的形式获取我感兴趣的对象,如 CodePen 所示 以下是代码片段: $scope.post = {}; var postsRef = new Firebase('ht
我只在 iOS 7 中遇到此错误并且应用程序崩溃了。在 iOS 6 中,我从来没有收到任何错误,只有一次在打开相机时出现内存警告。 Snapshotting a view that has not b
我在我的快照版本(例如dependency-lib)上使用“mvn clean deploy”执行maven构建。构建成功, Artifact 成功部署在 Artifact 中。 然后,我在我的 de
我正忙于 iOS7 中的 UICollectionView。 我要在两种不同的布局之间更改我的 Collection View 的布局。它们是 UICollectionViewFlowLayout 的
我从 eclipse git 中查看了最新的源代码:git://git.eclipse.org/gitroot/platform/eclipse.platform.releng.aggregator.
我在 Amazon EC2 上有一个 postgresql 数据库,需要确定备份这些数据的最佳方式。我正在考虑两种选择: (1) 将 EBS 卷挂载到/pgsqldata 等目录,并将此目录用作 po
当我使用Jasper作为接口(interface)时,有时接口(interface)会调用jasper并生成报告,然后我们会得到如下异常: ==============================
我正在使用 Version Maven Plugin插件 use-latest-versions将 groupID=com.example* 内部依赖版本更新到最新版本的功能。这是使用 Jenkins
对于 SQL Server 2008 R2 中的 SNAPSHOt 隔离级别,MSDN ADO.Net 文档中提到了以下内容: Transactions that modify data do not
我在 Bitbucket 中创建了一个公共(public)存储库来为我保存所有版本和快照版本。 我正在使用 wagon-git 将 jar 上传到发布存储库。 这是我在 pom.xml 中的条目:
When starting the server, refuses to load my plugin with an error:启动服务器时,拒绝加载我的插件,并出现错误: Could n
我是一名优秀的程序员,十分优秀!