我正在使用JNA编写一个Java程序,它应该将自己附加到另一个进程并在该进程内存空间中的各个地址调用函数。
我已将JNA设置为依赖项以及作为JNA项目一部分的平台contrib,但是我注意到在Kernel32类中没有映射到VirtualAllocEx
,WriteProcessMemory
和其他一些人。我相信这项任务需要这些功能,但也许有更好的方法,或者可能已在其他地方实施。
有没有办法使用win32平台contrib?如果是这样我应该在哪里看?如果没有其他选项,或者我必须自己在Kernel32中映射这些函数吗?
答案 0 :(得分:1)
要扩展现有的库映射,只需扩展接口并生成新实例:
public interface MyLibrary extends OriginalLibrary {
MyLibrary INSTANCE = (MyLibrary)Native.loadLibrary("name"[, options]);
void extensionFunction();
}
您现在拥有一个库映射,其中包含所有原始内容以及您的方法。请注意,在扩展w32 API映射时,您应该传递相同的选项(通常为W32API_DEFAULT_OPTIONS
);有关详细信息,请参阅相应的库映射对Native.loadLibrary()
的调用。