Expand description
ddc-dec — DEX → Java decompiler front-end over jdc-core.
Pipeline per method: DEX code units → CFG → per-block register→IR
lifting → jdc-core structuring/conversion → refinement passes →
emission. Class-level rendering mirrors jcdc’s classdec but reads
DEX metadata (no signatures, no generics).
Re-exports§
pub use classdec::ClassOptions;
Modules§
- access
- cfg
- Basic-block splitting and CFG construction for Dalvik code units.
- classdec
- Class-level rendering: header, fields (with static initializers), constructors, methods and nested member classes.
- ctx
- The DEX front-end’s implementation of
jdc_core::Ctx. - lift
- Register-machine expression lifting: Dalvik instructions → jdc-core IR.
- method
- Per-method decompilation pipeline:
DEX code units → CFG → register→IR lifting (fixpoint with merge phis) →
jdc-corestructuring → statement conversion → refinement passes. - passes
- Post-convert refinement passes for DEX-lifted statement trees.
- platform
- Platform symbols: render IntDef/LongDef magic numbers as their
constant names (
view.setVisibility(8)→android.view.View.GONE).
Structs§
- DexPool
- Multi-DEX class pool: classes from all images, first definition wins.
- Pool
Class - A class materialized from one
class_def_item(with ids resolved to names and the class data expanded). - Pool
Field - One field of a pooled class.
- Pool
Method - One method of a pooled class.
- Resolved
Nesting - Nesting evidence, names resolved at pooling time.
Enums§
- Static
Value - A resolved static-field initializer.
Functions§
- apply_
class_ rename - The display form of an internal class name. Exact file-level match
first; otherwise walk
$boundaries from the right — a nested reference (X/Cua$Inner) follows its renamed file-level owner, and an unrenamed file-level prefix anchors the walk (identity). - case_
rename_ map - Deterministic case-collision renames over the FILE-emission set:
classes whose internal names differ only in letter case cannot share
one case-insensitive directory; the first (sorted) member of each
group keeps its name, the others gain
_2,_3, … on the simple segment. The map carries identity entries for unrenamed file-level classes (they anchor nested prefix walks in apply_class_rename). - desc_
type - JavaType for a field/method descriptor segment.
- find_
outer_ name - Nesting evidence for
internal: dalvik annotations first, then the$-name heuristic against the pool. - install_
case_ renames - Compute and install the registry (call before worker threads spawn).
- top_
level_ classes