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::sanitize_fq;
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.
cure_pass
cure 源码级后处理:反编译产物 → 人写形态的语义保持简化。
fwdb
Embedded Android framework API database.
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).
ssa_census
SSA Phase 0 census — docs/ssa-constraint-typing.md §3.

Structs§

DexPool
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
is_fw_shadow
True when internal is a framework-shadow stub (fast empty-set check when no corpus stubs exist).
root_pkg_display
The synthetic package display root-package classes were moved under (None when no relocation ran). Consumers keying per-package caches by the ORIGINAL package map this display back to "".
sanitize_internal
Sanitized internal PATH form of a class name: the exact on-disk identity source_path writes and the declaration claims.
sanitize_seg
Sanitized form of one internal-name segment — the shared mapping the declaration site (print_class_name → sanitize_ref), the CLASS lookup and the CLI writer must all agree on. Exported so the writer cannot drift from the declaration (see sanitize_fq).
top_level_classes