
एंड्रॉइड APK/XAPK/JAR/AAR फ़ाइलों को डीकम्पाइल करता है और jadx का उपयोग करके HTTP API, प्रमाणीकरण पैटर्न और कॉल फ़्लो निकालता है, जिसमें सुरक्षा अनुसंधान और पेनिट्रेशन टेस्टिंग के लिए R8-प्रतिरोधी Kotlin नाम पुनर्प्राप्ति शामिल है।
एक Claude Code कौशल जो Android APK/XAPK/JAR/AAR फ़ाइलों को डीकंपाइल करता है और ऐप द्वारा उपयोग किए जाने वाले HTTP API निकालता है — Retrofit एंडपॉइंट, OkHttp कॉल, हार्डकोडेड URL, प्रमाणीकरण पैटर्न — ताकि आप मूल स्रोत कोड के बिना उन्हें दस्तावेजित और पुन: प्रस्तुत कर सकें।
प्रथम श्रेणी Kotlin समर्थन: आधुनिक Android ऐप्स Kotlin/KMP हैं, जो R8 से भारी रूप से अस्पष्टीकृत (obfuscated) होते हैं। यह कौशल R8 द्वारा हटाए नहीं जा सकने वाले मेटाडेटा से मूल Kotlin वर्ग नामों को पुनर्प्राप्त करता है, और केवल क्लासिक Retrofit/OkHttp स्टैक से नहीं, बल्कि Ktor, Apollo (GraphQL) और Koin से API निकालता है। नीचे Kotlin नाम पुनर्प्राप्ति देखें।
Windows / PowerShell समर्थन (प्रायोगिक): bash स्क्रिप्ट के साथ
*.ps1स्क्रिप्ट हाल ही में सामुदायिक योगदान हैं, जिन्हें अभी भी स्थिर किया जा रहा है। किसी भी समस्या के लिए कृपया इस रिपॉजिटरी पर एक मुद्दा खोलें (योगदानकर्ताओं के अपस्ट्रीम फोर्क पर नहीं): PowerShell स्क्रिप्ट यहाँ @SimoneAvogadro द्वारा बनाए रखी गई हैं।
आवश्यक:
वैकल्पिक (अनुशंसित):
विस्तृत स्थापना निर्देशों के लिए plugins/android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md देखें।
Claude Code के अंदर, निम्न चलाएँ:
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
यह कौशल सभी भविष्य के सत्रों में स्थायी रूप से उपलब्ध होगा।
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
फिर Claude Code में:
/plugin marketplace add /path/to/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
/decompile path/to/app.apk
यह पूर्ण कार्यप्रवाह चलाता है: निर्भरता जाँच, डीकंपाइलेशन, और प्रारंभिक संरचना विश्लेषण।
यह कौशल निम्नलिखित वाक्यांशों पर सक्रिय होता है:
स्क्रिप्ट का स्वतंत्र रूप से भी उपयोग किया जा सकता है:
# निर्भरताएँ जाँचें
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh
# कोई लापता निर्भरता स्थापित करें (OS और पैकेज मैनेजर का स्वतः पता लगाएं)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh jadx
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh vineflower
# डीकंपाइल करने से पहले APK/XAPK का फिंगरप्रिंट लें (चरण 0 ट्रायेज):
# फ्रेमवर्क, HTTP स्टैक, अस्पष्टीकरण स्तर, नेटिव लाइब्रेरीज, उल्लेखनीय SDK
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/fingerprint.sh app.apk
# jadx से APK डीकंपाइल करें (डिफ़ॉल्ट)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# XAPK डीकंपाइल करें (स्वचालित रूप से निकालता है और अंदर प्रत्येक APK को डीकंपाइल करता है)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk
# Fernflower से डीकंपाइल करें
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar
# दोनों इंजन चलाएँ और तुलना करें
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
# API कॉल खोजें — डिफ़ॉल्ट रूप से सभी समर्थित स्टैक पर पूर्ण स्कैन करता है
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --retrofit
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --urls
# आधुनिक Kotlin/KMP स्टैक और अस्पष्टीकरण-प्रतिरोधी निष्कर्षण
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --ktor # Ktor क्लाइंट
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --apollo # Apollo / GraphQL
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --paths # quoted path literals that survive R8 inlining
अधिकांश वास्तविक दुनिया के Kotlin/KMP ऐप्स R8 के माध्यम से आते हैं, इसलिए डीकंपाइल किए गए वर्ग a.b.c के रूप में निकलते हैं। R8 JVM प्रतीकों का नाम बदलता है लेकिन Kotlin मेटाडेटा स्ट्रिंग्स को नहीं हटा सकता — Kotlin रनटाइम (रिफ्लेक्शन, कोरआउटीन) को रनटाइम पर मूल पूरी तरह से योग्य नामों की आवश्यकता होती है। यह कौशल उन @DebugMetadata / @Metadata एनोटेशन को खोदकर एक अस्पष्टीकृत → वास्तविक वर्ग-नाम मैप बनाता है। एक सामान्य ऐप पर यह उन सभी *Repository / *ViewModel / *UseCase / *Impl वर्गों का ~100% पुनर्प्राप्त करता है जिन्हें आप वास्तव में पढ़ना चाहते हैं।
# 1. डीकंपाइल किए गए स्रोतों से मैपिंग बनाएं
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/recover-kotlin-names.sh output/sources/ output/names/
# → output/names/mapping.tsv, mapping.json, by_package/
# 2. इसे क्वेरी करें: एक अस्पष्टीकृत नाम हल करें, वास्तविक नाम से खोजें, या
# स्रोतों को grep करें जहाँ प्रत्येक हिट उसके पुनर्प्राप्त वर्ग नाम से एनोटेट हो
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ LoginRepository
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ -o a.b.c
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ --grep 'login' output/sources/
android-reverse-engineering-skill/
├── .claude-plugin/
│ └── marketplace.json # बाजार सूची
├── plugins/
│ └── android-reverse-engineering/
│ ├── .claude-plugin/
│ │ └── plugin.json # प्लगइन मेनिफेस्ट
│ ├── skills/
│ │ └── android-reverse-engineering/
│ │ ├── SKILL.md # मुख्य कार्यप्रवाह (चरण 0–5)
│ │ ├── references/
│ │ │ ├── setup-guide.md
│ │ │ ├── jadx-usage.md
│ │ │ ├── fernflower-usage.md
│ │ │ ├── api-extraction-patterns.md
│ │ │ ├── kotlin-name-recovery.md
│ │ │ ├── third_party_hosts.txt # प्रथम/तृतीय-पक्ष बकेटिंग के लिए डेनीलिस्ट
│ │ │ └── call-flow-analysis.md
│ │ └── scripts/
│ │ ├── check-deps.sh # Bash
│ │ ├── check-deps.ps1 # PowerShell
│ │ ├── install-dep.sh
│ │ ├── install-dep.ps1
│ │ ├── decompile.sh
│ │ ├── decompile.ps1
│ │ ├── fingerprint.sh # चरण 0 — डीकंपाइल-पूर्व ट्रायेज
│ │ ├── recover-kotlin-names.sh # R8 → वास्तविक Kotlin वर्ग नाम
│ │ ├── lookup-name.sh # पुनर्प्राप्त नाम मैप को क्वेरी करें
│ │ ├── find-api-calls.sh
│ │ └── find-api-calls.ps1
│ └── commands/
│ └── decompile.md # /decompile स्लैश कमांड
├── LICENSE
└── README.md
उन योगदानकर्ताओं को धन्यवाद जिन्होंने इस कौशल को आकार दिया:
recover-kotlin-names.sh, lookup-name.sh), और Ktor / Apollo / Koin / HMAC निष्कर्षण पैटर्न (#16)check-deps.ps1, install-dep.ps1, decompile.ps1, find-api-calls.ps1) और decompile.sh में विभाजित/बंडल APK पहचान (#8)ThexXTURBOXx/dex2jar फोर्क में स्थानांतरण (#12)SKILL.md खोज कीवर्ड) (#4)यह प्लगइन केवल कानूनी उद्देश्यों के लिए प्रदान किया गया है, जिसमें शामिल हैं लेकिन इन्हीं तक सीमित नहीं:
इस उपकरण का उपयोग सभी लागू कानूनों, विनियमों और सेवा की शर्तों के अनुपालन में सुनिश्चित करना आपकी एकमात्र जिम्मेदारी है। जिस सॉफ़्टवेयर के आप मालिक नहीं हैं या जिसका विश्लेषण करने की अनुमति नहीं है, उसका अनधिकृत रिवर्स इंजीनियरिंग आपके अधिकार क्षेत्र में बौद्धिक संपदा कानूनों और कंप्यूटर धोखाधड़ी क़ानूनों का उल्लंघन कर सकता है।
लेखक इस उपकरण के दुरुपयोग के लिए किसी भी देयता से इनकार करते हैं।
Apache 2.0 — LICENSE देखें
| क्षमता | विवरण |
|---|
| पहले फिंगरप्रिंट (चरण 0) | सेकंडों में APK/XAPK का ट्रायेज करें — पूर्ण डीकंपाइलेशन से पहले फ्रेमवर्क (Flutter / React Native / Cordova / Xamarin / native-Kotlin), HTTP स्टैक, अस्पष्टीकरण स्तर और नेटिव लाइब्रेरीज का पता लगाएं |
| डीकंपाइल | jadx और Fernflower/Vineflower का उपयोग करके APK, XAPK, JAR, और AAR फ़ाइलों को डीकंपाइल करें (एकल इंजन या साथ-साथ तुलना) |
| Kotlin नाम पुनर्प्राप्त करें | R8-अस्पष्टीकृत बाइनरीज से Kotlin मेटाडेटा का उपयोग करके मूल *Repository / *ViewModel / *UseCase वर्ग नामों का पुनर्निर्माण करें, जिसे R8 हटा नहीं सकता |
| API निकालें | Retrofit, OkHttp, Volley और आधुनिक Kotlin/KMP स्टैक: Ktor, Apollo (GraphQL), Koin DI — एंडपॉइंट, हार्डकोडेड URL, प्रमाणीकरण हेडर, टोकन और HMAC अनुरोध-हस्ताक्षर योजनाएँ |
| कॉल प्रवाह का पता लगाएं | Activities/Fragments से ViewModels और रिपॉजिटरी के माध्यम से HTTP कॉल तक |
| संरचना का विश्लेषण करें | मेनिफेस्ट, पैकेज, आर्किटेक्चर पैटर्न |
| अस्पष्टीकरण को संभालें | R8-प्रतिरोधी पथ/URL निष्कर्षण के साथ-साथ ProGuard/R8 आउटपुट को नेविगेट करने की रणनीतियाँ |