Skip to main content

Crate ddc_dec

Crate ddc_dec 

Source
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-core structuring → 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.
PoolClass
A class materialized from one class_def_item (with ids resolved to names and the class data expanded).
PoolField
One field of a pooled class.
PoolMethod
One method of a pooled class.
ResolvedNesting
Nesting evidence, names resolved at pooling time.

Enums§

StaticValue
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
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