
Android DEX → Rust में Java डीकंपाइलर, गति के लिए बनाया गया — पूरी ऐप्स सेकंडों में, क्वेरीज़ मिलीसेकंडों में। प्रगतिशील विश्लेषण, javac-सत्यापित आउटपुट, हर DEX संस्करण, मल्टी-डेक्स और XAPK/APKS/APKM कंटेनर।
अंग्रेज़ी | 简体中文
ddc Android DEX बाइटकोड को वापस पठनीय Java में डीकंपाइल करता है — वास्तविक दुनिया के ऐप के पैमाने पर, डेटाबेस की तरह क्वेरी करने योग्य, और javac-सत्यापित: सात वास्तविक दुनिया के APKs में यह जो 909,689 फ़ाइलें उत्पन्न करता है, उनमें से हर एक साफ़ तरीके से पार्स होती है।
javac पास करता है; केस-वेरिएंट नाम जोड़ी (X/Cua बनाम X/cua) की हर क्लास अपनी अलग फ़ाइल के रूप में संरक्षित रहती है, अंतिम के द्वारा चुपचाप ओवरराइट होने के बजाय।(a) -> …, Cls::name, a + b)।v12 के बजाय jadx-शैली के स्थानीय नाम (str, getName() → name, Kotlin Intrinsics पैरामीटर स्ट्रिंग्स); IntDef लिटरल्स बॉक्स से बाहर अपने कॉन्स्टेंट्स के रूप में प्रदर्शित होते हैं (setVisibility(8) → View.GONE; एक अंतर्निहित android-37 डोमेन तालिका, --symbols ओवरराइड करता है); Kotlin नल-चेक शोर हटा दिया जाता है और सिंथेटिक access$NNN ब्रिज उनके कॉल साइट्स पर इनलाइन हो जाते हैं।--fast के साथ 10 s (सरलीकरण छोड़ें, फ़ॉर्मेटिंग रखें)।ddc serve हर क्वेरी को REST रूट के रूप में उजागर करता है (क्वेरी पैराम्स के साथ GET या JSON बॉडी के साथ POST) साथ ही GET /openapi.json और /mcp पर एक स्ट्रीमेबल MCP एंडपॉइंट — एक MCP क्लाइंट को http://addr/mcp पर इंगित करें; ddc http केवल REST है (कोई /mcp नहीं); ddc mcp stdio|http इनपुट और आउटपुट स्कीमा के साथ समान कमांड को MCP टूल्स के रूप में चलाता है। क्वेरी कमांड --format auto|text|table|markdown|md|json|jsonl लेते हैं (auto: टर्मिनल पर तालिका, पाइप किए जाने पर स्थिर टेक्स्ट रूप)।DDC_LANG=zh|en बाध्य करता है; अंग्रेज़ी फ़ॉलबैक)।jdc-core पर निर्मित, जो jcdc के साथ साझा किया गया मशीन-न्यूट्रल कोर है।macOS (Homebrew):
brew install ejfkdev/tap/ddc
Windows (Scoop) — बकेट को एक बार जोड़ें, फिर नाम से इंस्टॉल करें (scoop
एक सादे user/repo/app रूप को हल नहीं करता — issue #3):
scoop bucket add ejfkdev https://github.com/ejfkdev/scoop-bucket
scoop install ddc
# or install straight from the manifest URL, no bucket needed:
scoop install https://raw.githubusercontent.com/ejfkdev/scoop-bucket/main/bucket/ddc.json
cargo-binstall (कोई भी प्लेटफ़ॉर्म — संकलन करने के बजाय पहले से बने रिलीज़ बाइनरी को प्राप्त करता है):
cargo binstall ddc-cli
बाइनरीज़: प्रत्येक रिलीज़ में linux-amd64, linux-arm64, windows-amd64, windows-arm64, macos-amd64 और macos-arm64 के लिए रॉ बाइनरीज़ (कोई आर्काइव नहीं) शामिल होती हैं — गैर-macOS बिल्ड UPX-कंप्रेस्ड होते हैं।
सोर्स से (Rust stable):
git clone https://github.com/ejfkdev/ddc && cd ddc
cargo build --release
ddc app.apk # full decompile → app-out/
ddc app.apk -c com.example.Foo # one class to stdout
ddc app.apk -o - | less # everything to stdout
ddc info app.apk # app context (label via arsc, package,
# version, md5) + per-dex counts
ddc mainactivity app.apk # entry point: package + launcher
ddc findrefs app.apk string token # every const-string "token" site
ddc getmethod app.apk Foo.toString # one method, all overloads
ddc pkg app.apk --app -o own/ # the app's own code only
पूर्ण विकल्प और उदाहरण: ddc --help (वर्कफ़्लो के अनुसार समूहित सबकमांड मेनू)। संपूर्ण संदर्भ — प्रत्येक विकल्प का अर्थ, प्रत्येक सबकमांड का आउटपुट प्रारूप और व्यवहार — docs/cli.md (中文) में उपलब्ध है।
सात वास्तविक-दुनिया के APK, रिलीज़ बिल्ड, कूलडाउन के बाद मापा गया (Apple Silicon, 6P+12E)। 39-APK सत्यापन कॉर्पस (4.08M डीकंपाइल की गई फ़ाइलें, प्रति-APK वॉल टाइम / शिखर RSS / javac पार्स गेट) docs/validation.md (中文) में है।
| APK | आकार | पूर्ण डीकंपाइल | शिखर RSS |
|---|---|---|---|
| reqable | 34 MB | 0.57s | 162 MB |
| Telegram | 62 MB | 4.50s | 786 MB |
| 139 MB | 13.6s (99,483 फ़ाइलें — केस-वेरिएंट क्लास जोड़े सभी संरक्षित) | 944 MB | |
| 226 MB | 13.5s | 1173 MB | |
| weixin | 268 MB | 32.7s | 1401 MB |
| lark | 398 MB | 16.1s | 2226 MB |
| 374 MB | 37.1s | 2268 MB |
उन्हीं APK पर क्वेरी सबकमांड (सेल: समय / शिखर RSS;
strings -f <package> --with-locations, पैकेज स्ट्रिंग और मेथड onCreate पर findrefs, प्रत्येक ऐप के लॉन्चर क्लास पर hierarchy/disasm/getclass):