Usage:
flutterdec info <INPUT> [--json]Arguments:
<INPUT>: APK orlibapp.so--json: print JSON output
If adapter metadata is available, JSON output also includes app-package hints:
app_package_count_totalapp_package_counts_topadapter_kindmanifest_entry_presentadapter_snapshot_hash_matchcompatibility_warnings
Usage:
flutterdec decompile <INPUT> -o <OUT_DIR> [OPTIONS]Required:
<INPUT>: APK orlibapp.so-o, --out <OUT_DIR>
General options:
--emit-asm--emit-asm-opcodes(requires--emit-asm; prepends raw 32-bit opcode words inasm/*.s)--emit-ghidra-script(writesghidra_apply_symbols.pywith function/label symbol application helpers)--emit-ida-script(writesida_apply_symbols.pywith function/label symbol application helpers)--emit-ir--focus <FOCUS>--target <TARGET>(decompile/disassemble a specific function by selector:id:<N>,va:0x<ADDR>,0x<ADDR>, or<N>; ambiguous<N>matches fail and require explicit prefix)--max-functions <N>--function-scope <app-unknown|app|all>(defaultapp-unknown)--app-package <NAME>(repeatable; restricts to selectedpackage:<NAME>/...libraries)--adapter-backend <auto|internal|blutter>(defaultauto)--require-snapshot-hash-match(fail if adapter-reported snapshot hash differs from loader hash)
Symbol ingestion:
--extra-symbol-elf <PATH>(repeatable)--extra-symbol-map-targets <PATH>(repeatable)--include-nearest-symbol-map
Quality-gate options:
--max-placeholder-ifs <N>(default0)--max-unresolved-cf <N>(default0)--max-indirect-call-ratio <R>(default0.30)--min-disassembly-ratio <R>(default0.80)
Analysis-engine profile:
--analysis-profile <light|balanced>(defaultbalanced)
Analysis-engine feature toggles:
--with-canonical-model-symbols--no-canonical-model-symbols--with-pool-value-hints--no-pool-value-hints--with-pool-semantic-hints--no-pool-semantic-hints--with-semantic-reporting--no-semantic-reporting--with-bootflow-category-seeds--no-bootflow-category-seeds--with-apk-startup-analysis--no-apk-startup-analysis
Conflict rule:
- each
--with-*conflicts with its matching--no-*
Target selection behavior:
- when
--targetis set, output is narrowed to the matched function - if scope filters exclude that function, target mode may override scope to keep the explicit match
- selection diagnostics are written to
report.json.target_selection
Adapter backend environment:
FLUTTERDEC_BLUTTER_CMD: full command to execute Blutter bridge backendFLUTTERDEC_BLUTTER_PY: path toblutter.py(uses current Python interpreter)
Usage:
flutterdec diff --old <OLD_INPUT> --new <NEW_INPUT> -o <OUT_DIR> [OPTIONS]Required:
--old <OLD_INPUT>: APK orlibapp.sobaseline--new <NEW_INPUT>: APK orlibapp.socandidate-o, --out <OUT_DIR>
Options:
--function-scope <app-unknown|app|all>(defaultapp-unknown)--app-package <NAME>(repeatable; limit compare set to selected app packages)--adapter-backend <auto|internal|blutter>(defaultauto)--require-snapshot-hash-match(fail if either side has adapter/loader snapshot hash mismatch)--json
Output:
- writes
diff_report.jsonwith function-level deltas and package-level summaries (added_packages_top,removed_packages_top)
Usage:
flutterdec engine-fingerprint <INPUT> [--json] [-o <OUT_DIR>] [--max-markers <N>]Arguments:
<INPUT>: ELF file (usuallylibflutter.so)-o, --out <OUT_DIR>--max-markers <N>(default24)--json
Usage:
flutterdec map-symbols --stripped <PATH> --unstripped <PATH> -o <OUT_DIR> [OPTIONS]Arguments:
--stripped <PATH>--unstripped <PATH>-o, --out <OUT_DIR>--include-branches--nearest-max-distance <N>(default8192)--require-exec-match--register-local-cache(copy the generated target summary intosymbols/and register it insymbols/manifest.jsonfor later auto-ingestion)--json
Install:
flutterdec adapter install --dart-hash <HASH>List:
flutterdec adapter list