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-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). - ssa_
census - SSA Phase 0 census —
docs/ssa-constraint-typing.md§3.
Structs§
- DexPool
- 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 - 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
internalis 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
(
Nonewhen 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_pathwrites 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 (seesanitize_fq). - top_
level_ classes