# 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 工具
- 关联：基础工具
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始资源：<https://github.com/Ayrx/JNIAnalyzer>
- 一手来源：<https://github.com/Ayrx/JNIAnalyzer/blob/7170ce6bd138caa6be702e357b3aeb74231ae12f/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/jnianalyzer/>
- 记录 JSON：<https://awesomerea.org/resources/jnianalyzer/record.json>
- 英文版：[English](https://awesomerea.org/resources/jnianalyzer/index.md)

## 使用条件与局限

- 审阅基于 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 仓库。

## 一手来源

1. <https://github.com/Ayrx/JNIAnalyzer/blob/7170ce6bd138caa6be702e357b3aeb74231ae12f/README.md>
2. <https://github.com/Ayrx/JNIAnalyzer/blob/7170ce6bd138caa6be702e357b3aeb74231ae12f/JNIAnalyzer/ghidra_scripts/JNIAnalyzer.java>
3. <https://github.com/Ayrx/JNIAnalyzer/blob/7170ce6bd138caa6be702e357b3aeb74231ae12f/JNIAnalyzer/ghidra_scripts/RegisterNatives.java>
4. <https://github.com/Ayrx/JNIAnalyzer/blob/7170ce6bd138caa6be702e357b3aeb74231ae12f/JNIAnalyzer/ghidra_scripts/TraceRegisterNatives.java>
5. <https://github.com/Ayrx/JNIAnalyzer/tree/7170ce6bd138caa6be702e357b3aeb74231ae12f/JNIAnalyzer/lib>
6. <https://github.com/Ayrx/JNIAnalyzer/blob/7170ce6bd138caa6be702e357b3aeb74231ae12f/JNIAnalyzer/data/README.txt>

## 同分区更多条目：应用

- [Android Reverse 设备端逆向套件](https://awesomerea.org/zh/resources/ultrasina-android-reverse/index.md) · 工具
- [jsc-decompile-mozjs-34 SpiderMonkey 字节码反编译器](https://awesomerea.org/zh/resources/jsc-decompile-mozjs-34/index.md) · 工具
- [Andromeda Android 应用交互式逆向工具](https://awesomerea.org/zh/resources/andromeda/index.md) · 工具
- [Dex-Editor-Android 设备端 DEX 编辑器](https://awesomerea.org/zh/resources/dex-editor-android/index.md) · 工具
- [smali/baksmali Dalvik dex 汇编与反汇编器](https://awesomerea.org/zh/resources/smali-baksmali/index.md) · 工具
- [dalvikus Android 逆向与 smali 编辑工具](https://awesomerea.org/zh/resources/dalvikus/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
