đ
Ghidra āĻ Binary Analysis â Native Code āĻĒāĻĄāĻŧā§
ARM assembly āĻ .so file-āĻāϰ āĻā§āĻĒāύ āϰāĻšāϏā§āϝ āĻāύā§āĻŽā§āĻāύ āĻāϰā§
đ§ āĻĻāĻā§āώāϤāĻž āϝāĻžāĻāĻžāĻ āĻ āĻĒā§āϰāϤāĻŋāϰāĻā§āώāĻžāĻŽā§āϞāĻ takeaway
Skill checkpoint: āύāĻŋāĻāϏā§āĻŦ sample binary-āϤ⧠function, strings āĻ architecture metadata āĻĒā§ā§āĨ¤Defense checkpoint: Binary provenance, dependency source āĻ analysis notes āύāĻĨāĻŋāĻā§āĻā§āϤ āĻāϰā§.Lab scope: āĻļā§āϧ⧠āύāĻŋāĻā§āϰ lab, synthetic data āĻŦāĻž āϞāĻŋāĻāĻŋāϤ āĻ
āύā§āĻŽāϤāĻŋāĻĒā§āϰāĻžāĻĒā§āϤ target-āĻ āĻ
āύā§āĻļā§āϞāύ āĻāϰā§āĨ¤ Real credential, token āĻŦāĻž customer data āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻā§āϰ⧠āύāĻžāĨ¤
Portfolio proof: finding, impact, fix āĻ retest āύāĻŋā§ā§ ā§Ģ-āϞāĻžāĻāύā§āϰ redacted note āϰāĻžāĻā§āĨ¤
đŦ Ghidra āĻā§? â NSA-āϰ Secret Weapon
Ghidra = NSA (National Security Agency) āϤā§āϰāĻŋ free reverse engineering toolāĨ¤ JADX Java code āĻĒāĻĄāĻŧā§ â āĻāĻŋāύā§āϤ⧠.so (native C/C++) file āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤ Ghidra .so, .exe, .dll, firmware â āϏāĻŦ binary file analyze āĻāϰāϤ⧠āĻĒāĻžāϰā§!
đ .so File āĻā§?
Android-āĻ lib/ folder-āĻ .so (Shared Object) files āĻĨāĻžāĻā§:
lib/arm64-v8a/libmeesho.so â 64-bit ARM (modern phones)
lib/armeabi-v7a/libmeesho.so â 32-bit ARM (old phones)
lib/x86/libmeesho.so â Emulator/x86
āĻā§ āĻĨāĻžāĻā§?
- Encryption algorithms
- Anti-tamper logic
- Root/Frida detection
- Critical business logic
JADX āĻāĻā§āϞ⧠decompile āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤ Ghidra āϞāĻžāĻāĻŦā§!
đ Ghidra Setup āĻ Analysis
# Download: https://ghidra-sre.org/
# Java 17+ āĻĻāϰāĻāĻžāϰ
# Steps:
1. File â Import File â libmeesho.so
2. Auto-analysis: Yes
3. āĻŦāĻžāĻŽ āĻĻāĻŋāĻā§ Functions list
4. Window â Decompiler (C code āĻĻā§āĻāĻžāĻŦā§!)
5. Search â For Strings â secrets āĻā§āĻāĻā§
đ Anti-Tamper Detection
āĻ
āύā§āĻ app .so file-āĻ anti-tamper check āϰāĻžāĻā§:
// Decompiled anti-tamper check:
void checkIntegrity() {
// APK signature verify āĻāϰā§
if (getSignature() != EXPECTED_SIGNATURE) {
// Signature āĻŽāĻŋāϞāĻā§ āύāĻž â crash!
abort();
}
// Frida detected?
if (isFridaPresent()) {
killProcess();
}
}
Ghidra-āϤ⧠āĻāĻ function āĻā§āĻāĻā§ NOP instruction āĻĻāĻŋāϝāĻŧā§ patch āĻāϰāĻž āϝāĻžāϝāĻŧ!
đ¯ Important Concepts
ARM Assembly = Android phone-āĻāϰ machine languageDecompiler = binary â C-like pseudocodeDisassembler = binary â assembly instructionNOP = No Operation â check bypass āĻāϰāϤ⧠function body NOP āĻĻāĻžāĻCross-reference = āĻā§āĻĨāĻžāϝāĻŧ āĻāĻ function call āĻšāĻā§āĻā§ āĻĻā§āĻā§
đĄ Chapter 10-āĻāϰ āĻŽā§āϞ āĻļāĻŋāĻā§āώāĻž
đŦ Ghidra = NSA-āϰ free RE tool â .so, .exe, firmware analyze āĻāϰ⧠đ .so = Native C/C++ code â JADX āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āύāĻž đ Anti-tamper = signature check + Frida detection â Ghidra-āϤ⧠NOP āĻāϰ⧠đ¯ Decompiler = binary â C pseudocode (āϏāĻŦāĻā§āϝāĻŧā§ useful) đ Search for Strings = secrets āĻ hardcoded values āĻā§āĻāĻā§ đī¸ NOP patch = security check bypass
đ¯ Chapter 10 āĻā§āĻāĻ (ā§§ā§ĻāĻāĻž āĻĒā§āϰāĻļā§āύ)
āĻĒā§āϰāϤāĻŋāĻāĻž āĻāϤā§āϤāϰ⧠click āĻāϰ⧠â āϏāĻŦā§āĻ/āϞāĻžāϞ + āĻŦā§āϝāĻžāĻā§āϝāĻž!
â āĻĒā§āϰāĻļā§āύ 1: Ghidra āĻā§ āϤā§āϰāĻŋ āĻāϰā§āĻā§?
Google
NSA (National Security Agency) â free open-source reverse engineering tool
Microsoft
Apple
đĄ Ghidra = NSA āϤā§āϰāĻŋ free, open-source reverse engineering frameworkāĨ¤ 2019-āĻ publicly release āĻšāϝāĻŧā§āĻā§āĨ¤
â āĻĒā§āϰāĻļā§āύ 2: .so file āĻā§?
Sound file
Shared Object â compiled C/C++ native library, Android-āĻ lib/ folder-āĻ
Settings file
System file
đĄ .so = Shared ObjectāĨ¤ C/C++ compile āĻāϰāĻž native libraryāĨ¤ Android-āĻāϰ Java code-āĻāϰ āĻŦāĻžāĻāϰā§āϰ performance-critical code āĻāĻāĻžāύā§āĨ¤
â āĻĒā§āϰāĻļā§āύ 3: JADX āĻā§āύ .so file āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āύāĻž?
Bug āĻāĻā§
JADX Java bytecode āĻĒāĻĄāĻŧā§, .so = ARM binary â āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϞāĻžāĻĻāĻž format
Permission āύā§āĻ
Too slow
đĄ JADX = Java/Kotlin decompilerāĨ¤ .so = compiled ARM/x86 binary â different architectureāĨ¤ Ghidra binary analysis āĻāϰā§āĨ¤
â āĻĒā§āϰāĻļā§āύ 4: Ghidra-āϤ⧠Decompiler āĻā§ āĻĻā§āĻāĻžāϝāĻŧ?
Java code
C-like pseudocode â binary assembly āĻĨā§āĻā§ human-readable āĻŦāĻžāύāĻžāϝāĻŧ
Python code
Assembly only
đĄ Ghidra Decompiler binary â C pseudocodeāĨ¤ Assembly āĻŦā§āĻāĻž āĻāĻ āĻŋāύ, C pseudocode āĻ
āύā§āĻ āϏāĻšāĻāĨ¤
â āĻĒā§āϰāĻļā§āύ 5: Anti-tamper check āĻā§ āĻāϰā§?
Performance improve āĻāϰā§
APK signature, Frida presence, root check â tampered āĻšāϞ⧠crash āĻŦāĻž exit
Memory clean āĻāϰā§
Data encrypt āĻāϰā§
đĄ Anti-tamper = app āύāĻŋāĻā§āĻ check āĻāϰ⧠āĻā§āĻ modify āĻāϰā§āĻā§ āĻāĻŋāύāĻžāĨ¤ Signature mismatch, Frida, root detected â app āĻŦāύā§āϧāĨ¤
â āĻĒā§āϰāĻļā§āύ 6: NOP instruction āĻŽāĻžāύ⧠āĻā§?
New Operation
No Operation â āĻā§āύ⧠āĻāĻžāĻ āĻāϰ⧠āύāĻž, security check skip āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϝāĻŧ
Next Operation
Null Operation
đĄ NOP = No OperationāĨ¤ ARM-āĻ 0x1F2003D5āĨ¤ Security check function-āĻā§ NOP āĻĻāĻŋāϝāĻŧā§ replace āĻāϰāϞ⧠check skip āĻšāϝāĻŧāĨ¤
â āĻĒā§āϰāĻļā§āύ 7: ARM assembly āĻā§?
Programming language
Android phone-āĻāϰ processor-āĻāϰ machine language instruction set
Java code
Python code
đĄ ARM = Advanced RISC MachineāĨ¤ Android phone (arm64-v8a) āĻāĻ instruction set use āĻāϰā§āĨ¤ .so file ARM assembly-āϤ⧠compile āĻšāϝāĻŧāĨ¤
â āĻĒā§āϰāĻļā§āύ 8: Ghidra-āϤ⧠strings search āĻāϰāϤ⧠āĻā§āĻĨāĻžāϝāĻŧ āϝāĻžāĻŦā§?
File menu
Search â For Strings â hardcoded secrets, URLs, keys āĻā§āĻāĻā§ āĻĒāĻžāĻŦā§
Edit menu
View menu
đĄ Ghidra: Search â For StringsāĨ¤ Hardcoded API keys, URLs, encryption keys, suspicious strings āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤
â āĻĒā§āϰāĻļā§āύ 9: Cross-reference (XRef) āĻā§?
External link
āĻā§āĻĨāĻžāϝāĻŧ āĻāĻ function call āĻšāĻā§āĻā§ āϤāĻž āĻĻā§āĻāĻžāϝāĻŧ â caller function āĻā§āĻāĻā§ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ
Cross-platform check
Reference manual
đĄ XRef = Cross ReferenceāĨ¤ Function-āĻ right click â References â āĻā§āĻĨāĻžāϝāĻŧ āĻā§āĻĨāĻžāϝāĻŧ call āĻšāϝāĻŧā§āĻā§ āĻĻā§āĻā§āĨ¤ Context āĻŦā§āĻāĻž āϏāĻšāĻ āĻšāϝāĻŧāĨ¤
â āĻĒā§āϰāĻļā§āύ 10: Frida āĻ Ghidra-āϰ āĻŽā§āϞ āĻĒāĻžāϰā§āĻĨāĻā§āϝ?
Same tool
Frida = dynamic (running app), Ghidra = static (binary file analysis)
Ghidra faster
Frida free only
đĄ Ghidra = static analysis â app āύāĻž āĻāĻžāϞāĻŋāϝāĻŧā§ binary āĻĒāĻĄāĻŧāĻžāĨ¤ Frida = dynamic â app āĻāϞāϤ⧠āĻāϞāϤ⧠hook āĻāϰāĻžāĨ¤ āĻĻā§āĻā§ complementaryāĨ¤