1

我想使用的本机库有这样的方法:

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 中实现这一点的任何建议?

谢谢。

4

2 回答 2

1

如此多的游戏黑客不愿意进入肮脏的细节。

NativeLibrary提供对共享库导出的全局变量地址的访问。

NativeLibrary lib = NativeLibray.getInstance("mylib");
Pointer paddr = lib.getGlobalVariableAddress("Addr");
paddr.setInt(0, 1234);
于 2013-04-18T12:40:37.087 回答
0

你为什么不把你的“写”方法包装在另一个你可以通过Java/JNA调用的方法中。在那里,您首先设置这些全局变量,然后调用真正的变量。

于 2013-04-18T06:10:41.810 回答