我要使用的本机库have方法如下:

extern unsigned long write(void);

但是,它要写的内容需要在几个全局变量中定义:
short int Addr; //the starting address it write to;
short int Length; //the length of the writing;
void * data; //the data it will write;

我知道在JNA中,NativeLibray有方法加载本地库中定义的全局引用,但这里似乎不需要它。实际上,我需要声明上述全局变量并对其进行写入,这样write()方法才能正常工作。
关于如何在JNA中实现这一点有什么建议吗?
谢谢。

最佳答案

所以很多游戏黑客不愿意进入肮脏的细节。
NativeLibrary提供对共享库导出的全局变量地址的访问。

NativeLibrary lib = NativeLibray.getInstance("mylib");
Pointer paddr = lib.getGlobalVariableAddress("Addr");
paddr.setInt(0, 1234);

关于java - 在JNA中创建全局引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16075674/

10-14 11:18
查看更多