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

时间:2019-04-24 15:29:47

标签: c java-native-interface reverse-engineering

所以我试图对应用程序进行反向工程。

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

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

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

2 个答案:

答案 0 :(得分:1)

与特定Java本机方法相对应的本机函数的名称与Java方法名称,其所在类的标准名称及其参数类型(如果重载)确定性相关。具体内容在chapter 2 of the JNI specification中进行了描述,但与其进行分类,不如仅使用javac -h(JDK 8或更高版本)或javah工具(自JDK 8起已弃用)可能会更容易。但至少仍然存在于JDK 9中),以C或C ++头文件的形式为您生成它。

答案 1 :(得分:1)

查找DLL或此类文件的导出功能列表。如果它没有大量带有Java_com…前缀的函数,但是具有JNI_OnLoad,则您的本机库将使用RegisterNatives(),并且您必须找到{{1}的相关表}将本机方法映射到C函数的结构。