使用JNI读取带有偏移量的内存

Reading memory with offsets using JNI

本文关键字:偏移量 内存 JNI 读取 使用      更新时间:2023-10-16

我正在尝试创造一个自定义系统,能够轻松地适应各种游戏,当你的HP达到一定水平时能够治疗你的角色。这将允许用户在面临死亡危险时使用药剂或治疗法术来治愈自己。到目前为止,我已经在《天际》中测试了它,并且我已经让它运行得相当好,但我想让这款游戏在java代码上运行,而不是在Visual Basic上。所以基本上我只需要一些帮助转换我的VB代码的一小部分,读取内存到Java代码。我也希望我将不得不使用JNI,但还没有做那么多JNI,所以请不要直接告诉我api。

    DWORD HpPointer = 0x007C5710; //example pointer
DWORD HpPointed;
WORD HpOffset = 0x07B4; //example offset
int CurrentHp = 0;      //variable that stores the integer value returned
ReadProcessMemory(hProc,(LPCVOID)(HpPointer), &HpPointed, 4, NULL);
ReadProcessMemory(hProc,(LPCVOID)(HpPointed+HpOffset), &CurrentHp, 4, NULL);
//end of hp section
return (CurrentHp);

谢谢

您需要使用以下内容:

public class Game {
    public native byte[] readMemory(int offset);
}

你会用

javah Game

创建标题

然后创建c++类并在程序中包含头文件

要加载Game类,您需要使用System.loadLibrary()或使用-D命令行参数。注意:系统。loadLibrary取决于你运行的操作系统。所以如果你在Windows下编译,它将是一个。dll文件。对于linux,它将是。so,对于mac,它将是。jilib扩展名