工具

JNIAnalyzer Ghidra 扩展

Terry Chia(Ayrx)编写的 Ghidra 扩展,包含用于分析 Android NDK 应用原生库的脚本。JNIAnalyzer.java 使用随附的 JADX 反编译器从 APK 中提取所有原生方法的签名,并把返回类型、参数名和参数类型应用到已加载 .so 中的匹配函数。RegisterNatives.java 借助 Ghidra 的 P-Code API 查找 RegisterNatives 调用,为动态注册的方法铺设 JNINativeMethod 结构;TraceRegisterNatives.java 则应用作者 trace_registernatives 工具的输出。随附的 JNI 数据类型归档用于设置 jni.h 类型。

目标
应用 · 二进制
类别
Android 工具
关联
基础工具
来源复核于

使用条件与局限

  • 审阅基于 master 分支 7170ce6(2023-01-02);项目没有发布版本,默认分支自该日期起再无提交,应视为缺乏维护,并自行核实与当前 Ghidra 的兼容性。使用 Gradle 针对某个 Ghidra 安装构建扩展(gradle -PGHIDRA_INSTALL_DIR=<目录>),再通过 Ghidra 的 Install Extensions 对话框安装生成的 zip 并重启。
  • 分析在 Ghidra 中进行,针对分析者已加载且有权分析的 Android 原生库。JNIAnalyzer.java 通过 JADX 读取所提供的 APK 以恢复原生方法签名;README 提醒它会覆盖已有的函数返回类型、参数名和参数类型,并会跳过注释为 JNIAnalyzer:IGNORE 的函数。RegisterNatives.java 标注为实验性。
  • 仓库未提交任何第三方目标文件。它将 Java 构建依赖以 JAR 形式收录在 JNIAnalyzer/lib/ 下,包括 JADX、smali/baksmali、dexlib2、dx、apksig、Guava、ANTLR、RxJava、logback 等,各自保留其开源许可;其中提交的 android-5.1.jar 只有 4 个条目(一个 android/R$style 类加若干 JADX 资源),并非 Android SDK。Gradle wrapper JAR 也被提交,data/jni_all.gdt 是 JNI 类型的 Ghidra 数据类型归档。
  • 仓库没有许可证文件,复用条款未作说明;审阅者应向作者确认授权情况,收录的依赖 JAR 仍适用各自的许可。作者另有一个 Binary Ninja 移植版,位于其独立的 binja-JNIAnalyzer 仓库。
  • 本合集在所审阅提交中阅读了 README、脚本源码、构建文件和所收录库的清单,没有构建或运行该扩展,也未分析任何 APK 或原生库。项目中未提及 AI 或 REA,因此不构成与 REA 的关联。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · Ayrx/JNIAnalyzer · 修订 7170ce6
  2. JNIAnalyzer/ghidra_scripts/JNIAnalyzer.java GitHub · Ayrx/JNIAnalyzer · 修订 7170ce6
  3. JNIAnalyzer/ghidra_scripts/RegisterNatives.java GitHub · Ayrx/JNIAnalyzer · 修订 7170ce6
  4. JNIAnalyzer/ghidra_scripts/TraceRegisterNatives.java GitHub · Ayrx/JNIAnalyzer · 修订 7170ce6
  5. JNIAnalyzer/lib GitHub · Ayrx/JNIAnalyzer · 修订 7170ce6
  6. JNIAnalyzer/data/README.txt GitHub · Ayrx/JNIAnalyzer · 修订 7170ce6

同分区更多条目:应用

应用分区全部 136 项资源