⚡ Shadow Academy
đŸ“Ļ Chapter 3

āĻāχ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇ āϕ⧀ āĻļāĻŋāĻ–āĻŦ⧇

⏱ āφāύ⧁āĻŽāĻžāύāĻŋāĻ• āϏāĻŽāϝāĻŧ: ā§§ā§Ģâ€“ā§¨ā§Ļ āĻŽāĻŋāύāĻŋāϟ ¡ āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ: āφāϗ⧇āϰ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇āϰ āϧāĻžāϰāĻŖāĻž

ā§Ļ / ā§§ā§Ļā§Ļ āĻ…āĻ§ā§āϝāĻžā§ŸāϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“: āĻ…āĻ§ā§āϝāĻžāϝāĻŧ 4

āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āĻāχ browser-āĻ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāĻŦ⧇āĨ¤

đŸ“Ļ
APK Reverse Engineering — JADX āĻĻāĻŋāϝāĻŧ⧇ āϕ⧋āĻĄ āĻĒāĻĄāĻŧā§‹
Android app-āĻāϰ āϭ⧇āϤāϰ⧇āϰ āĻ—ā§‹āĻĒāύ āϰāĻšāĻ¸ā§āϝ āĻŦ⧇āϰ āĻ•āϰ⧋
🧭 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ āĻ“ āĻĒā§āϰāϤāĻŋāϰāĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• takeaway
Skill checkpoint: APK-āĻāϰ manifest, resources āĻ“ bytecode-āĻāϰ āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻļāύāĻžāĻ•ā§āϤ āĻ•āϰ⧋āĨ¤
Defense checkpoint: āύāĻŋāϜāĻ¸ā§āĻŦ sample app-āĻāϰ permissions āĻ“ embedded secret review āĻ•āϰ⧋.
Lab scope: āĻļ⧁āϧ⧁ āύāĻŋāĻœā§‡āϰ lab, synthetic data āĻŦāĻž āϞāĻŋāĻ–āĻŋāϤ āĻ…āύ⧁āĻŽāϤāĻŋāĻĒā§āϰāĻžāĻĒā§āϤ target-āĻ āĻ…āύ⧁āĻļā§€āϞāύ āĻ•āϰ⧋āĨ¤ Real credential, token āĻŦāĻž customer data āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧋āϰ⧋ āύāĻžāĨ¤
Portfolio proof: finding, impact, fix āĻ“ retest āύāĻŋā§Ÿā§‡ ā§Ģ-āϞāĻžāχāύ⧇āϰ redacted note āϰāĻžāĻ–ā§‹āĨ¤
đŸĨ” āϚāĻŋāĻĒāϏ⧇āϰ āĻĒā§āϝāĻžāϕ⧇āϟ āĻ“ APK-āϰ āϰāĻšāĻ¸ā§āϝ
APK (Android Package Kit) āĻšāϞ⧋ āϚāĻŋāĻĒāϏ⧇āϰ āĻĒā§āϝāĻžāϕ⧇āĻŸā§‡āϰ āĻŽāϤ⧋ — āĻŦāĻžāχāϰ⧇ āĻĨ⧇āϕ⧇ āĻŦā§‹āĻāĻž āϝāĻžāϝāĻŧ āύāĻž āϭ⧇āϤāϰ⧇ āϕ⧀ āφāϛ⧇āĨ¤

🔑 āĻŦāĻĄāĻŧ āϰāĻšāĻ¸ā§āϝ: APK āφāϏāϞ⧇ āĻāĻ•āϟāĻž ZIP file!
.apk → .zip rename āĻ•āϰāϞ⧇āχ WinRAR/7-Zip āĻĻāĻŋāϝāĻŧ⧇ āĻ–ā§‹āϞāĻž āϝāĻžāϝāĻŧ!
📁 APK-āϰ āϭ⧇āϤāϰ⧇ āϕ⧀ āϕ⧀ āĻĨāĻžāϕ⧇?
Meesho.apk (extract āĻ•āϰāĻžāϰ āĻĒāϰ): ├── AndroidManifest.xml ← App-āĻāϰ blueprint (permissions, activities) ├── classes.dex ← Java bytecode (JADX āĻĻāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧā§‹!) ├── classes2.dex ← āφāϰ⧋ bytecode ├── res/ │ ├── values/strings.xml ← đŸĨ‡ API keys, URLs — āϏ⧋āύāĻžāϰ āĻ–āύāĻŋ! │ └── layout/ ← UI XML files ├── assets/ │ └── config.json ← Hardcoded server configs ├── lib/ │ └── arm64-v8a/ ← Native C++ (.so files) │ └── libcore.so ← Ghidra āϞāĻžāĻ—āĻŦ⧇ āĻāϟāĻž āĻĒāĻĄāĻŧāϤ⧇ └── META-INF/CERT.RSA ← App signature
đŸ”Ŧ JADX — Java Decompiler (āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ tool)
JADX = Java DecompilerāĨ¤ classes.dex → readable Java source code!
# Step 1: JADX GUI download āĻ•āϰ⧋ # https://github.com/skylot/jadx/releases # Step 2: APK āĻ–ā§‹āϞ⧋ File → Open files → Meesho.apk # Step 3: Global search (āϏāĻŦāĻšā§‡āϝāĻŧ⧇ important shortcut!) Ctrl+Shift+F → search āĻ•āϰ⧋: "api_key" → API keys "baseUrl" → Server addresses "secret" → Hidden secrets "token" → Token generation "password" → Hardcoded passwords
📖 strings.xml — āϏ⧋āύāĻžāϰ āĻ–āύāĻŋ!
res/values/strings.xml-āĻ developer-āϰāĻž āĻĒā§āϰāĻžāϝāĻŧāχ āϭ⧁āϞ āĻ•āϰ⧇ sensitive data āϰāĻžāϖ⧇:
<resources> <string name="api_base_url">https://api.training.example.test/v2</string> <string name="firebase_key">AIzaSyAbCdEf123456789</string> <string name="razorpay_key">rzp_live_AbCdEfGhIj</string> <string name="google_client_id">123456.apps.googleusercontent.com</string> </resources>
āĻāχ strings āϏāϰāĻžāϏāϰāĻŋ production-āĻ use āĻšāϝāĻŧ! Bug bounty-āϤ⧇ āĻāϟāĻž high severity!
🎭 ProGuard/R8 — Code Obfuscation
āĻ…āύ⧇āĻ• app code obfuscate āĻ•āϰ⧇ reverse āĻ•āϰāĻž āĻ•āĻ āĻŋāύ āĻ•āϰāϤ⧇:
Original code: public String getAuthToken() { return this.authManager.getCurrentToken(); } Obfuscated code (ProGuard): public String a() { return this.b.c(); } ↑ āϕ⧀ āĻŦ⧁āĻāϞ⧇? āĻ•āĻ āĻŋāύ!
āĻ•āĻŋāĻ¨ā§āϤ⧁ strings.xml, assets, AndroidManifest — āĻāϗ⧁āϞ⧋ obfuscate āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāĻ–āĻžāύ⧇āχ secrets āĻĨāĻžāϕ⧇!
đŸ•ĩī¸ AndroidManifest.xml — App-āĻāϰ Blueprint
AndroidManifest.xml-āĻ āϏāĻŦ permission āĻ“ component listed:
<manifest> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_CONTACTS"/> <activity android:name=".LoginActivity" android:exported="true"/> <activity android:name=".AdminActivity"/> ← Hidden admin panel! <meta-data android:name="com.google.firebase.API_KEY" android:value="AIzaSy..."/> ← Firebase key! </manifest>
exported="true" activity āĻŽāĻžāύ⧇ āĻ…āĻ¨ā§āϝ app āϏāϰāĻžāϏāϰāĻŋ open āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ — security risk!
💡 Chapter 3-āĻāϰ āĻŽā§‚āϞ āĻļāĻŋāĻ•ā§āώāĻž
đŸ“Ļ APK = ZIP file — rename āĻ•āϰ⧇āχ āĻ–ā§‹āϞāĻž āϝāĻžāϝāĻŧ
☕ classes.dex = Java bytecode → JADX āĻĻāĻŋāϝāĻŧ⧇ decompile āĻ•āϰ⧋
đŸĨ‡ strings.xml = āϏ⧋āύāĻžāϰ āĻ–āύāĻŋ — API keys, URLs āĻāĻ–āĻžāύ⧇
đŸ”Ŧ JADX Ctrl+Shift+F = global search — āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ
🎭 ProGuard = code obfuscate āĻ•āϰ⧇ — āĻ•āĻŋāĻ¨ā§āϤ⧁ strings.xml obfuscate āĻšāϝāĻŧ āύāĻž
📋 AndroidManifest = permissions, activities — exported=true āĻĻ⧇āĻ–ā§‹
đŸ“Ļ APK Structure Explorer
Package name āĻĻāĻžāĻ“ — APK structure āĻ“ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ secrets āĻĻ⧇āĻ–āĻžāĻŦ⧇!
👆 āωāĻĒāϰ⧇ āĻ•āĻŋāϛ⧁ āĻĻāĻŋāϝāĻŧ⧇ āĻ˛ā§āϝāĻžāĻŦ āϚāĻžāϞ⧁ āĻ•āϰ⧋...
đŸŽ¯ Chapter 3 — āϕ⧁āχāϜ (ā§§ā§ĻāϟāĻž āĻĒā§āϰāĻļā§āύ)
āĻĒā§āϰāϤāĻŋāϟāĻž āωāĻ¤ā§āϤāϰ⧇ click āĻ•āϰ⧋ → āϏāĻŦ⧁āϜ/āϞāĻžāϞ + āĻŦā§āϝāĻžāĻ–ā§āϝāĻž!
❓ āĻĒā§āϰāĻļā§āύ 1: APK file āφāϏāϞ⧇ āϕ⧀ āϧāϰāύ⧇āϰ file?
💡 APK = Android Package — āφāϏāϞ⧇ ZIP! .apk → .zip rename āĻ•āϰ⧇ WinRAR/7-Zip āĻĻāĻŋāϝāĻŧ⧇ āϏāĻŦ files āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 2: JADX āϕ⧀ āĻ•āĻžāϜ āĻ•āϰ⧇?
💡 JADX = Java DecompilerāĨ¤ classes.dex (bytecode) → readable Java source codeāĨ¤ Android RE-āĻāϰ āĻĒā§āϰāϧāĻžāύ toolāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 3: strings.xml-āĻ āϕ⧀ āϧāϰāύ⧇āϰ data āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ?
💡 Developer-āϰāĻž āĻĒā§āϰāĻžāϝāĻŧāχ API keys, base URLs, payment gateway keys strings.xml-āĻ hardcode āĻ•āϰ⧇ āϰāĻžāϖ⧇ — security mistake!
❓ āĻĒā§āϰāĻļā§āύ 4: ProGuard āϕ⧀ āĻ•āϰ⧇?
💡 ProGuard/R8 code obfuscate āĻ•āϰ⧇āĨ¤ getAuthToken() → a()āĨ¤ Reverse āĻ•āϰāĻž āĻ•āĻ āĻŋāύ āĻšāϝāĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ strings.xml obfuscate āĻšāϝāĻŧ āύāĻžāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 5: JADX-āĻ global search-āĻāϰ shortcut āϕ⧀?
💡 Ctrl+Shift+F = JADX-āĻāϰ global searchāĨ¤ āϏāĻŦ decompiled files-āĻ āĻāĻ•āϏāĻžāĻĨ⧇ 'apiKey', 'secret', 'baseUrl' āĻ–ā§‹āρāĻœā§‡āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 6: classes.dex āϕ⧀?
💡 classes.dex = Dalvik ExecutableāĨ¤ Android-āĻāϰ Java code bytecode-āĻ compile āĻšāϝāĻŧāĨ¤ JADX āĻāϟāĻžāϕ⧇ Java-āϤ⧇ convert āĻ•āϰ⧇āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 7: AndroidManifest.xml-āĻ 'exported=true' āĻŽāĻžāύ⧇ āϕ⧀?
💡 android:exported='true' āĻŽāĻžāύ⧇ āĻ…āĻ¨ā§āϝ app āĻŦāĻž attacker āϏāϰāĻžāϏāϰāĻŋ āϏ⧇āχ activity launch āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ — unauthorized access risk!
❓ āĻĒā§āϰāĻļā§āύ 8: APK āĻĨ⧇āϕ⧇ secrets āϖ⧁āρāϜāϤ⧇ āĻĒā§āϰāĻĨāĻŽā§‡ āϕ⧋āĻĨāĻžāϝāĻŧ āĻĻ⧇āĻ–āĻŦā§‹?
💡 strings.xml āĻ“ assets/ folder āĻĒā§āϰāĻĨāĻŽā§‡ āĻĻ⧇āĻ–ā§‹ — ProGuard obfuscate āĻ•āϰ⧇ āύāĻžāĨ¤ API keys, URLs āĻāĻ–āĻžāύ⧇āχ āĻĨāĻžāϕ⧇āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 9: .so file āϕ⧀ āĻāĻŦāĻ‚ āϕ⧀āĻ­āĻžāĻŦ⧇ analyze āĻ•āϰāĻŦā§‹?
💡 .so = Shared ObjectāĨ¤ C/C++ compiled native libraryāĨ¤ JADX āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž — Ghidra āĻŦāĻž IDA Pro āĻĻāϰāĻ•āĻžāϰāĨ¤
❓ āĻĒā§āϰāĻļā§āύ 10: Obfuscated code analyze-āĻāϰ āϏ⧇āϰāĻž approach?
💡 Obfuscated code static analysis-āĻ āĻŦā§‹āĻāĻž āĻ•āĻ āĻŋāύāĨ¤ Frida āĻĻāĻŋāϝāĻŧ⧇ runtime-āĻ actual decrypted values intercept āĻ•āϰāĻž āĻŦ⧇āĻļāĻŋ effectiveāĨ¤

āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ reference

āφāϰāĻ“ āĻĒāĻĄāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻŋāϤ security standards āĻ“ guidance āĻĻ⧇āĻ–ā§‹; āĻĒā§āϰāϤāĻŋāϟāĻŋ lab āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āĻŦāĻž synthetic environment-āĻ āĻ•āϰ⧋āĨ¤

Bristy Ma'am
āĻŦ⧃āĻˇā§āϟāĻŋ āĻŽā§āϝāĻžāĻŽ 👩‍đŸĢ
āϤ⧋āĻŽāĻžāϰ āĻĒāĻžāĻ°ā§āϏ⧋āύāĻžāϞ āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āĻŽā§‡āĻ¨ā§āϟāϰ â€ĸ āĻ…āύāϞāĻžāχāύ
āφāϰ⧇ āϏ⧌āϰāĻ­! āϕ⧇āĻŽāύ āφāϛ⧋? āϕ⧋āύ⧋ āĻ•āύāϏ⧇āĻĒā§āϟ āĻŦāĻž āϕ⧁āχāĻœā§‡ āφāϟāĻ•āĻžāϞ⧇ āφāĻŽāĻžāϕ⧇ āĻŦāϞ⧋, āφāĻŽāĻŋ āĻŦ⧁āĻāĻŋā§Ÿā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ! â¤ī¸