gpt4 book ai didi

java - JNA - 获取基地址

转载 作者:行者123 更新时间:2023-11-30 09:23:40 25 4
gpt4 key购买 nike

最近我一直在做我的一个小项目,它是用 java 为原生游戏(C/C++/等)读取/写入内存。

目前我有一个可以读取和写入游戏内存的基,但我现在需要一种方法来获取正在运行的应用程序的基地址。例如:

我有一个指针列表,是我使用 Cheat Engine 及其指针搜索器收集的。这些都是稳定的,每次重新加载游戏时都能正常工作。

我现在面临的问题是,第一个指针使用程序的基地址(每次程序重新启动时都会更改):"ac_client.exe"+000DF73C

我需要一种方法来使用 JNA 获取“ac_client.exe”的基值。

我做了很多研究并找到了一些用 C++ 实现的方法,但我对 C/C++ 的了解非常有限。我发现很难使用 JNA 将它转换为 Java,我想我会在这里询问,看看是否有人能够提供帮助或知道其他方法来完成这样的壮举。

提前感谢您的帮助,卡登。

[编辑]

阅读下面我的解决方案!感谢您的帮助。

最佳答案

在对 Alex 发布的内容进行了一些修改后,我让它开始工作,并设法让它工作。

对于任何其他想要获得类似功能的人,请查看 Alex 发布的那个项目,您将看到您需要的必需类。然后我就用了这个:

public int getBaseAddress() {
try {
Pointer hProcess = gethProcess();
List<Module> hModules = PsapiHandler.getInstance().EnumProcessModules(hProcess);

for(Module m: hModules){
if(m.getFileName().contains(exeName)){
misc.log(m.getFileName() + ": 0x" + Long.toHexString(Pointer.nativeValue(m.getEntryPoint())));
return Integer.valueOf("" + Pointer.nativeValue(m.getLpBaseOfDll()));
}
}
} catch (Exception e) { e.printStackTrace(); }
return -1;
}

关于java - JNA - 获取基地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15954142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com