2015-03-19 25 views
0

我有一个关于JNI实现的问题。 我了解如何在Java中实现它的概念,但是如果您不知道例如DLL等任何事情,会发生什么情况。JNI执行

如果您只是将DLL作为文件,是否有机会知道要实现哪种方法?像Java中的反射?

+0

一般情况 - 不,你可以尝试不同的逆向工程技术,但没有明显的防弹法 – 2015-03-19 00:32:55

回答

0

如果你只是有一个任意的DLL,你想从Java调用它,你需要:

  • 知道由DLL
  • 远销写一个或多个本地方法的入口点,和一个或更多相应的JNI方法调用导出的入口点。

不能做的是通过JNI从Java中的任意DLL导出函数直接调用任意的。 [你也许可以用一些JNA来管理它]

0

如果你有一个Dll文件并且你希望你使用它但你不知道什么方法被实现了,那没问题,但是问题在于Dll文件不是为Java本地接口(JNI)编译的。 但如果Dll是为jni创建的,你可以在知道你可以很容易地使用为jni创建的dll的方法后,使用dependency walker或者dll export或者使用其他工具找到它的方法。