如何跟踪从Java到C的JNI方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何跟踪从Java到C的JNI方法?相关的知识,希望对你有一定的参考价值。

所以我正在尝试对应用程序进行逆向工程。

我正在跟踪一个名为Test_Method的JNI方法,该方法从共享对象调用C方法,

在共享对象中,我可以看到方法名称Test_Method存在,但它没有任何交叉引用。

如何从共享对象中找到Java的JNI方法调用的方法?

答案

与特定Java本机方法对应的本机函数的名称确定性地与Java方法名称,它所在的类的完全限定名称以及如果它被重载的参数类型相关。具体内容在chapter 2 of the JNI specification中描述,但不是通过排序,可能更容易使用javac -h(JDK 8或更高版本)或javah工具(自JDK 8以来已弃用,但至少在JDK 9中仍然存在)来生成它为您,以C或C ++头文件的形式。

另一答案

查找DLL或其他文件的导出函数列表。如果它没有Java_com…前缀的许多函数,而是有JNI_OnLoad,那么你的本地库然后使用RegisterNatives(),你必须找到JNINativeMethod结构的相关表,它将本机方法映射到C函数。

以上是关于如何跟踪从Java到C的JNI方法?的主要内容,如果未能解决你的问题,请参考以下文章

JNI维数组:将二维数组从java传递给c

如何使用JNI管理C ++代码中的静态变量?

如何使用 JNI 从本机 c 库将 double 和 unsigned int 返回到 java

通过JNI从C ++发送Intent

将参数从 C/C++ JNI 传递到 Java 并获取修改后的值

如何使用 JNI 从 JAVA 调用带有 C++ 参数的函数?