我想使用的本机库有这样的方法:
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中实现此功能的任何建议?
感谢。
答案 0 :(得分:1)
许多游戏黑客不愿意陷入肮脏的细节。
NativeLibrary
提供对共享库导出的全局变量地址的访问。
NativeLibrary lib = NativeLibray.getInstance("mylib");
Pointer paddr = lib.getGlobalVariableAddress("Addr");
paddr.setInt(0, 1234);
答案 1 :(得分:0)
为什么不将“write”方法包装在另一个可以通过Java / JNA调用的方法中。在那里,你首先设置那些全局变量,然后调用真实变量。