我正在尝试对 Android 框架代码执行静态分析,并且遇到了一些调用 JNI 函数的 Java 方法。如何确定这些函数驻留在哪些本机库中?
谢谢。
我正在尝试对 Android 框架代码执行静态分析,并且遇到了一些调用 JNI 函数的 Java 方法。如何确定这些函数驻留在哪些本机库中?
谢谢。
我已经快一年没有接触过 Android 了,但是 IIRC:
所有 JNI 库都需要首先从 Java 端加载,例如
System.loadLibrary("hello-jni");
转换为已invoke-virtual编译的 Java。
此外,IDA Pro 在.so它反编译的 s 中识别完全限定名称,因此您将能够找出那些 JNI 函数的 Java 名称。另见http://www.hexblog.com/?p=809。
这个工具也可能有帮助,虽然它很旧https://github.com/maaaaz/jnianalyzer。
已经有一段时间了,但是应该有一个带有 .so 他们正在调用的静态代码块。我需要使用共享库反汇编文件。
它类似于:https : //stackoverflow.com/questions/8437106/java-jni-call-to-load-library