首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JNI读取带有偏移量的内存

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

Stack Overflow用户
提问于 2013-03-02 05:12:57
回答 1查看 663关注 0票数 0

我正在尝试做一个自定义的系统,可以很容易地适应各种游戏,目的是当你的HP达到一定的分数时,治疗你的角色。这将是有用的,因为它将允许用户在面临死亡危险时使用药水或治疗法术进行自我治疗。到目前为止,我已经在skyrim上对它进行了测试,并且运行得相当好,但是我想让这个游戏在java代码上运行,而不是在Visual Basic上运行。所以基本上我只需要一些帮助,将我的一小部分读取内存的VB代码转换成Java代码。另外,我预计我将不得不使用JNI,但还没有做那么多的JNI,所以请不要直接将我引向api。

代码语言:javascript
运行
复制
    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);

谢谢

EN

Stack Overflow用户

发布于 2013-03-02 05:25:06

您需要在以下代码行中使用某些内容:

代码语言:javascript
运行
复制
public class Game {

    public native byte[] readMemory(int offset);

}

你会用到

代码语言:javascript
运行
复制
javah Game

创建标头的步骤

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

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

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15166972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档