如何跟踪从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 从本机 c 库将 double 和 unsigned int 返回到 java