Building Automated APK Reverse Engineering Pipelines with Jadx, Apktool, and Frida Hooks
The reverse-skill repository provides a platform-agnostic routing engine that automates APK decompilation using Jadx and Apktool, followed by dynamic instrumentation via Frida hooks, all orchestrated through a unified CLI interface.
Building automated APK reverse engineering pipelines with Jadx, Apktool, and Frida hooks requires a coordinated toolchain that handles static analysis, dynamic instrumentation, and secure execution contexts. The reverse-skill repository implements exactly this workflow through a modular architecture that routes tasks, bootstraps dependencies, and enforces security contracts. This guide walks through the specific scripts and configuration files that enable fully automated Android binary analysis.
Architecture Overview and Routing Layer
The reverse-skill engine operates on a routing-based architecture defined in skills/config/routing.json. This configuration file contains rules that recognize APK-related keywords such as apk, smali, jadx, and apktool, automatically routing requests to the apk-reverse/SKILL.md capability.
Before any operation executes, the router validates auth.status and network_profile contracts through skills/scripts/case-init.ps1. This gating mechanism prevents unauthorized execution and ensures the environment meets security requirements. The tool discovery phase runs skills/scripts/refresh-tool-index.ps1 (and its Bash counterpart) to enumerate supported utilities, marking Jadx and Frida as bootstrap-capable entries when present.
Bootstrapping the Toolchain
When the pipeline detects missing dependencies, it invokes skills/scripts/bootstrap-reverse.ps1 (or the .sh variant for Linux/macOS). The bootstrap manifest at skills/scripts/bootstrap-manifest.json defines installation procedures, specifying Jadx installation from the GitHub release skylot/jadx and Frida installation via pipx.
Run the bootstrap once to prepare your environment:
# PowerShell – install Jadx & Frida if missing
powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/bootstrap-reverse.ps1 -Capability @('jadx','frida')
Static Analysis Pipeline with Jadx and Apktool
The static analysis phase extracts resources and generates readable Java/Kotlin source code. The core script skills/apk-reverse/scripts/decode.sh orchestrates this workflow by first ensuring Jadx availability through the ensure_tool "jadx" function, then invoking both Apktool and Jadx.
The script performs three critical operations:
- Resource extraction via Apktool to recover
AndroidManifest.xmland asset files - Smali bytecode generation for low-level analysis
- Java source recovery via Jadx using the
-dflag to specify output directories
Execute the static pipeline with:
# Bash – decode an APK (default: run both apktool & jadx)
chmod +x skills/apk-reverse/scripts/decode.sh
./skills/apk-reverse/scripts/decode.sh MyApp.apk --name MyApp --out out_dir
This produces two output directories:
out_dir/jadx– Decompiled Java/Kotlin source filesout_dir/apktool– Disassembled Smali code and resources
Dynamic Instrumentation with Frida Hooks
For runtime analysis, skills/apk-reverse/scripts/frida-run.ps1 provides a unified CLI wrapper around Frida. The script handles device discovery, process enumeration, and hook injection through a single interface.
Key capabilities include:
- Device enumeration via the
-ListDevicesflag - Process listing using
frida-psequivalent functionality - Spawn and attach modes with
-Spawnand-Usbparameters - Script injection via the
-ScriptPathargument
The script ultimately executes frida -U -f com.example.app -l test.js --no-pause under the hood, abstracting away the complex CLI syntax.
Run dynamic instrumentation with:
# PowerShell – list devices, then inject a hook
pwsh -File "skills/apk-reverse/scripts/frida-run.ps1" -ListDevices
pwsh -File "skills/apk-reverse/scripts/frida-run.ps1" -Usb -Spawn -Package com.example.myapp -ScriptPath "C:\hooks\log_ssl.js"
End-to-End Automation Example
The master router at skills/scripts/master-route.ps1 combines static and dynamic phases into a single automated pipeline. It parses natural language hints, selects the appropriate skill, and executes the full workflow according to the case timeline.
Run the complete pipeline with one command:
# PowerShell – combines static and dynamic steps
powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/master-route.ps1 `
-Hint "decompile APK with jadx apktool smali" `
-CaseName "myapp-demo" `
-PackageRoot "C:\reverse-skill"
This invocation reads the hint, triggers decode.sh for static analysis, then configures frida-run.ps1 for dynamic instrumentation as defined in the routing configuration.
Evidence Collection and Reporting
Results from both static decompilation (jadx_out=…) and dynamic instrumentation stream to standard output, ready for downstream processing. The pipeline integrates with skills/ops/evidence-finding-path.md to tie technical outputs to forensic evidence collection standards. Output directories follow a predictable structure that supports automated evidence packaging and chain-of-custody documentation.
Summary
- Routing Engine: The
skills/config/routing.jsonfile maps APK-related keywords to theapk-reverseskill, enabling automatic task detection. - Static Pipeline:
skills/apk-reverse/scripts/decode.shautomates resource extraction via Apktool and source recovery via Jadx with a single command. - Dynamic Hooks:
skills/apk-reverse/scripts/frida-run.ps1abstracts Frida CLI complexity for device management and script injection. - Bootstrap System:
skills/scripts/bootstrap-reverse.ps1andbootstrap-manifest.jsonhandle automatic installation of Jadx and Frida. - Security Gates: Pre-execution contracts in
skills/scripts/case-init.ps1enforce authentication and network profile requirements before running tools.
Frequently Asked Questions
How does the reverse-skill router determine which tools to run for APK analysis?
The router inspects the hint string provided to skills/scripts/master-route.ps1 and matches it against patterns in skills/config/routing.json. Keywords like "jadx", "apktool", "smali", or "apk" trigger the apk-reverse skill, which then executes decode.sh for static analysis or frida-run.ps1 for dynamic instrumentation based on the specific request parameters.
Can I run the APK decompilation pipeline on Linux or macOS instead of Windows?
Yes. The repository provides platform-agnostic scripts, including skills/apk-reverse/scripts/decode.sh (Bash) and skills/scripts/bootstrap-reverse.sh (Bash). While frida-run.ps1 is PowerShell-based, PowerShell Core runs on Linux and macOS, or you can use the equivalent Frida CLI commands directly after bootstrapping through the shell scripts.
What security validations occur before the pipeline executes?
Before any tool runs, skills/scripts/case-init.ps1 validates the auth.status contract to ensure the user has proper authorization, and the network_profile contract to verify the environment meets security policies. These gates prevent execution in unauthorized contexts or insecure network configurations.
How do I add custom Frida scripts to the automated pipeline?
Place your JavaScript hook files in a known directory, then pass the absolute path to the -ScriptPath parameter when invoking skills/apk-reverse/scripts/frida-run.ps1. The script handles the Frida CLI syntax automatically, executing frida -U -f <package> -l <script> --no-pause to inject your hooks into the target application process.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →