Case-based workflow for authorized Flutter APK reverse engineering and runtime security analysis.
This repo wires together the tools already installed on this machine:
apktoolfor manifest, resources, assets, andgoogle-services.json- MobSF and
mobsfscanfor automated mobile security scanning jadxfor Java/Kotlin decompilation- Blutter for Dart AOT classes, functions, hardcoded values, and
blutter_frida.js - reFlutter for patched Flutter APKs and Burp traffic routing
- Burp Suite on port
8083 - Frida and objection for runtime hooks, SSL pinning checks, and root bypass testing
- Android build-tools for signing, alignment, install, and device proxy setup
Use only for apps you own or are explicitly authorized to test.
cd /Users/kickavenue/Dev/KickAvenue/reverse-flutter
make check
make new CASE=my-app APK=/absolute/path/to/app.apk
make static CASE=my-app
make blutter CASE=my-appFor dynamic analysis:
make reflutter CASE=my-app BURP_HOST=<your-computer-lan-ip>
make sign CASE=my-app
adb install -r cases/my-app/patched/reflutter/*.signed.apkThen configure Burp and runtime hooks:
make proxy-set BURP_HOST=<your-computer-lan-ip> BURP_PORT=8083
make frida-server
make hook-ssl CASE=my-app
make objection-explore CASE=my-appscripts/ automation entrypoints
docs/ step-by-step CLI and GUI workflows
hooks/ generic Frida templates
prompts/ AI analyst prompts and report template
skills/ bundled Codex skill for this workflow
cases/ ignored case workspaces
reports/ ignored aggregate reports
make check
make new CASE=<case> APK=<apk>
make static CASE=<case>
make mobsf-upload CASE=<case>
make blutter CASE=<case>
make reflutter CASE=<case> BURP_HOST=<ip>
make sign CASE=<case>
make proxy-set BURP_HOST=<ip> BURP_PORT=8083
make proxy-clear
make frida-server
make hook-ssl CASE=<case>
make hook-root CASE=<case>
make objection-explore CASE=<case>
make objection-ssl CASE=<case>
make objection-root CASE=<case>
make report CASE=<case>Install shortcuts:
make install-shortcuts
rf check
reverse-flutter helpSome steps require GUI operation:
- Burp Suite listener setup: see
docs/BURP.md - MobSF upload/review/export: see
docs/MOBSF.md
Create a report draft:
make report CASE=<case>Then fill:
cases/<case>/reports/reverse-report.md
Use prompts/analyst-prompt.md and prompts/evidence-checklist.md when asking an AI agent to summarize the case.
- Case data is ignored by git because it may contain proprietary code, secrets, tokens, and traffic captures.
- Device-side
frida-serverrequires a matching device ABI and usually root access. - Blutter support is best for Android Flutter release APKs with
arm64-v8a/libapp.so.