【问题标题】:How to track JNI method from Java to C?如何跟踪从 Java 到 C 的 JNI 方法?
【发布时间】:2019-09-13 23:11:23
【问题描述】:

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

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

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

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

【问题讨论】:

  • 术语:C 没有方法,它有函数

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


【解决方案1】:

a 对应于特定 Java 本地方法的本地函数的名称与 Java 方法名称、它所在的类的完全限定名称以及它的参数类型(如果它被重载)确定性相关。具体细节在chapter 2 of the JNI specification 中进行了描述,但与其对其进行排序,不如使用javac -h(JDK 8 或更高版本)或javah 工具(自JDK 8 起已弃用,但至少在JDK 9) 以 C 或 C++ 头文件的形式为您生成它。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 2015-06-05
      • 2011-09-07
      相关资源
      最近更新 更多