如何确定本机 JNI 函数正在调用哪个库?

逆向工程 安卓 图书馆
2021-06-21 08:38:21

我正在尝试对 Android 框架代码执行静态分析,并且遇到了一些调用 JNI 函数的 Java 方法。如何确定这些函数驻留在哪些本机库中?

谢谢。

2个回答

我已经快一年没有接触过 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