- Parser strategy: adapter boundary keeps snapshot version churn isolated.
- Core language: Rust for stronger typing and safer low-level handling.
- Adapter language: Python for fast per-hash parser updates.
- Scope baseline: Android ARM64 AOT static-first, correctness prioritized over breadth.
- Quality gates: strict defaults to prevent low-confidence pseudocode output.
Recover readable behavior from Flutter AOT ARM64 binaries with enough semantic structure to support real reverse engineering workflows.
- maximize deterministic semantic signal in
ProgramModel(libraries/classes/functions/object pool metadata) - keep decompiler output stable and readable across repeated runs and versions
- make version upgrades mostly an adapter/backend update problem, not a core rewrite problem
- exact recompilable Dart source reconstruction
- runtime emulation as baseline analysis mode
- immediate parity for all architectures and snapshot/runtime modes
Use this rubric for architecture and feature decisions:
- does this increase deterministic semantic recovery for Android ARM64 AOT?
- does this improve stability/reproducibility of pseudocode and report outputs?
- can this be versioned at adapter/backend boundaries without destabilizing core crates?
- is the complexity justified by measurable quality/report improvements?