# jni_helper

> Static helper by evilpan for reverse engineering Android JNI code. Its extract_jni.py script parses an APK's DEX files with Androguard, finds methods declared native, derives each one's mangled Java_ symbol name and C prototype, including overloaded methods, and saves them with the exported Java_ and JNI_OnLoad functions of the APK's arm64-v8a native libraries as a JSON signature file. Scripts for Ghidra, IDA Pro and Binary Ninja load that file and apply the prototypes and JNI types to the matching functions; a radare2 script is a work in progress.

- Type: Tool
- Targets: App · Binary
- Category: Android tools
- Relationship: Foundation tool
- Sources reviewed: 2026-10-20
- Added to the catalog: 2026-11-02
- Original resource: <https://github.com/evilpan/jni_helper>
- Primary source: <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/README.md>
- Catalog page: <https://awesomerea.org/resources/jni-helper/>
- Record JSON: <https://awesomerea.org/resources/jni-helper/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/jni-helper/index.md)

## Requirements & limits

- Latest release at review: v0.6, published 2024-10-23, whose only asset is the demo APK built by CI; the reviewed master commit of 2025-02-24 only updates a README link. CI builds the demo app with JDK 17 and runs extract_jni.py on it as its only test, without checking the output or exercising the disassembler scripts.
- extract_jni.py needs Python 3 with androguard, rich and pyelftools from requirements.txt and takes an APK the analyst already has; it reads native libraries only from lib/arm64-v8a. Methods bound at run time through RegisterNatives are not covered, which the README lists as an open TODO, and the disassembler scripts find functions only by their mangled Java_ symbol names.
- The Ghidra script is installed by a Makefile into the ghidra_scripts folder in the user's home directory, together with the bundled jni.h.gdt data-type archive; the IDA plugin has separate versions for IDA Pro before 7.4 and for 7.4 and later; the Binary Ninja script runs from File > Run Script and parses the bundled headers/jni.h. Supported versions of Ghidra, Binary Ninja and radare2 are not stated.
- No license file, and GitHub detects none, so reuse terms for the scripts are unstated. Bundled headers keep their own notices: headers/jni.h is Oracle's GPL-2.0 file with the Classpath exception, while r2/jni.h and headers/art_method.h are Android Open Source Project files under Apache-2.0. The demo_apk folder holds the source of the author's test app.

## Primary sources

1. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/README.md>
2. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/extract_jni.py>
3. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/requirements.txt>
4. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/ghidra/README.md>
5. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/ida/README.md>
6. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/binary_ninja/jni_helper.py>
7. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/r2/README.md>
8. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/headers/jni.h>
9. <https://github.com/evilpan/jni_helper/blob/04b844c43438c2c0bbef29bf9b9695e5aba9a4bc/.github/workflows/main.yml>
10. <https://github.com/evilpan/jni_helper/releases/tag/v0.6>

## More in Apps

- [ReArk](https://awesomerea.org/resources/reark/index.md) · Tool
- [ARSCLib](https://awesomerea.org/resources/arsclib/index.md) · Tool
- [Pithus (bazaar)](https://awesomerea.org/resources/pithus-bazaar/index.md) · Tool
- [House](https://awesomerea.org/resources/house/index.md) · Tool
- [ABCDE](https://awesomerea.org/resources/abcde/index.md) · Tool
- [de4js](https://awesomerea.org/resources/de4js/index.md) · Tool

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
