所以我试图对应用程序进行反向工程。
我正在跟踪一个名为Test_Method的JNI方法,该方法从共享库中调用C方法,
在共享库中,我可以看到方法名称Test_Method存在,但没有任何交叉引用。
如何从Java的JNI方法调用的共享对象中找到方法?
答案 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函数的结构。