Reverse Engineering dalam Pengembangan Mobile: apa itu, alat dan metode analisis

Penulis: IT Sectr Diterbitkan: 2026-04-04 Waktu membaca: 10 mnt

Reverse Engineering (rekayasa balik) — pemulihan logika dan struktur aplikasi mobile tanpa akses ke kode sumber. Dalam konteks Android dan iOS, ini berarti dekompilasi file biner DEX/APK dan Mach-O/IPA untuk mengekstrak algoritma, kunci enkripsi, endpoint API, dan logika bisnis. Menurut Veracode Security Research (2025), lebih dari 60% aplikasi mobile di top-200 mengandung setidaknya satu indikator yang mempermudah reverse engineering. Reverse Engineering diterapkan tidak hanya untuk serangan, tetapi juga untuk audit keamanan, analisis paten, dan pengujian penetrasi.

Poin Utama

  • Reverse Engineering — proses analisis kode biner aplikasi untuk memulihkan logika, data, dan algoritmanya tanpa akses ke sumber
  • Analisis statis mencakup dekompilasi DEX/APK melalui jadx, bytecode iOS melalui Ghidra, dan pembacaan sumber daya melalui apktool
  • Analisis dinamis dilakukan melalui Frida, Objection, dan Xposed untuk mencegat panggilan di runtime tanpa menghentikan aplikasi
  • Perlindungan terhadap reverse dibangun pada obfuskasi (ProGuard, DexGuard), enkripsi string, agen RASP, dan kontrol integritas APK
  • Status hukum reverse engineering bervariasi: DMCA mengizinkan untuk kompatibilitas dan keamanan, tetapi melarang penghindaran lisensi dan DRM

Apa itu Reverse Engineering?

Reverse Engineering (reversing) — disiplin analisis perangkat lunak yang bertujuan memulihkan karakteristik, logika, dan struktur aplikasi dari representasi binernya. Untuk aplikasi mobile, objek analisis adalah file APK (Android) dan IPA (iOS) yang berisi kode terkompilasi, sumber daya, manifes, dan sertifikat. Hasil reversing — ekstraksi algoritma, protokol, kunci enkripsi, skema API, dan logika bisnis.

Tujuan rekayasa balik terbagi menjadi legitim dan ilegitim. Legitim: analisis malware untuk membuat alat perlindungan, audit aplikasi sendiri untuk kerentanan, memastikan kompatibilitas dengan protokol tertutup, analisis paten, dan pelatihan. Ilegitim: pencurian kekayaan intelektual, penghindaran batasan lisensi, pembuatan salinan bajakan, dan modifikasi aplikasi untuk mencuri data pengguna. Menurut Google Play Protect (2025), 78% modifikasi berbahaya aplikasi perbankan dibuat berdasarkan APK asli yang telah melalui reverse engineering.

Metodologi reversing mencakup dua arah utama: analisis statis (tanpa menjalankan aplikasi) dan analisis dinamis (saat eksekusi). Setiap pendekatan memberikan tingkat informasi yang berbeda. Statis — gambaran lengkap kode, tetapi tanpa data waktu eksekusi. Dinamis — perilaku nyata, aliran data, panggilan jaringan, tetapi hanya dalam skenario eksekusi tertentu. Reversing profesional selalu menggabungkan kedua pendekatan.

Alat Analisis Statis

Analisis statis — tahap pertama rekayasa balik. APK atau IPA asli dibongkar, dan setiap komponen dianalisis secara terpisah. Tujuan utama: bytecode DEX, sumber daya, manifes, pustaka asli (.so, .dylib) dan metadata.

jadx — pengompol DEX ke Java

jadx — alat utama untuk analisis statis aplikasi Android. Ia mengubah bytecode DEX menjadi kode Java yang dapat dibaca dengan kerugian minimal. jadx mendukung: dekompilasi multidex, pengenalan lambda dan kelas Kotlin bawaan, ekspor ke proyek Gradle. Untuk kode yang diobfusaksi (ProGuard), jadx menampilkan kode dengan nama a, b, c, tetapi struktur kelas dan urutan panggilan tetap dipertahankan. Menurut pengujian independen, jadx mendekomilasi dengan benar 85–92% kode bahkan dengan obfuskasi.

apktool — pembongkaran sumber daya

apktool mendekode APK menjadi kode smali (assembler DEX) dan memulihkan sumber daya dalam bentuk yang dapat dibaca: AndroidManifest.xml diubah dari AXML menjadi XML yang dapat dibaca, tata letak — menjadi markup XML, strings.xml — menjadi teks biasa. apktool memungkinkan memodifikasi sumber daya dan menyusun ulang APK. Setelah dibongkar melalui apktool dan penggantian sumber daya, aplikasi dapat diinstal dengan konten yang dimodifikasi.

Ghidra — analisis pustaka asli

Ghidra (NSA) — kerangka kerja reverse engineering, sangat diperlukan untuk analisis pustaka .so Android dan .dylib iOS. Ghidra membongkar kode ARM64, memulihkan pseudokode C, dan membangun grafik panggilan. Untuk reversing mobile, Ghidra digunakan untuk analisis implementasi asli kriptografi dan mekanisme DRM. Ghidra mendukung pembuatan skrip dalam Python dan Java untuk otomatisasi analisis.

bash
# Pembongkaran dan dekompilasi APK
$ jadx -d output_dir app.apk

# Pembongkaran sumber daya melalui apktool
$ apktool d app.apk -o app_unpacked

# Analisis pustaka asli melalui Ghidra
$ ghidra app.apk/lib/arm64-v8a/libnative.so

# Pencarian konstanta string di DEX
$ strings classes.dex | grep -i api_key

Alat Analisis Dinamis

Analisis dinamis dilakukan pada aplikasi yang sedang berjalan. Analis terhubung ke proses dan mencegat panggilan fungsi, argumen, dan nilai kembali secara real-time.

Frida — alat instrumentasi universal

Frida — alat terkemuka untuk analisis dinamis aplikasi mobile. Frida menyuntikkan mesin JavaScript ke dalam proses aplikasi (Android ART atau iOS app) dan memungkinkan mencegat panggilan fungsi Java/Objective-C maupun C/C++. Dengan Frida, insinyur balik dapat: mencatat semua panggilan metode AES.decrypt() dengan parameter, mengganti nilai kembali dengan sembarang, menghapus SSL-pinning melalui Universal Android SSL Unpin, melacak panggilan asli melalui Stalker. Frida bekerja tanpa memodifikasi APK/IPA, menjadikannya sangat diperlukan untuk pengujian penetrasi.

Objection — lapisan di atas Frida

Objection menyediakan perintah siap pakai untuk tugas reversing tipikal tanpa menulis skrip JavaScript: disable-pinning (menonaktifkan SSL pinning), dump-keychain (iOS), explore (menjelajahi hierarki kelas), memory search (mencari string di memori). Objection memungkinkan melakukan analisis dinamis lengkap tanpa satu baris kode pun. Untuk aplikasi iOS, Objection secara otomatis menemukan dan mencatat panggilan NSURLSession, CFNetwork, dan NSKeyedArchiver.

Xposed Framework

Xposed — kerangka kerja untuk Android yang bekerja dengan mengganti file app_process di Zygote. Tidak seperti Frida, Xposed tidak memerlukan akses root setelah instalasi. Modul Xposed dapat mencegat panggilan metode di aplikasi mana pun. Untuk reversing, Xposed nyaman untuk analisis jangka panjang: modul diinstal dan bekerja terus-menerus, mencatat perilaku aplikasi dalam berbagai skenario. Xposed mendukung Android hingga versi 8.1; untuk Android 9+ digunakan EdXposed berbasis SandHook.

js
// Frida: mencegat metode decrypt() di aplikasi
let aesClass = Java.use("javax.crypto.Cipher");

aesClass.doFinal.overload(
    "[B", "int", "int"
).implementation = function(
    input, offset, len
) {
    console("[AES] decrypt called, len=" + len);
    return this.doFinal(input, offset, len);
};

Proses Rekayasa Balik Aplikasi Android

Alur kerja standar reversing terdiri dari langkah-langkah berurutan, yang masing-masing memberikan tingkat informasi tertentu.

Langkah 1: Pengumpulan Intelijen

Analis mempelajari APK pada tingkat metadata: targetSdk, uses-permission (izin apa yang diminta), intent-filter, dan exported components. Berdasarkan izin dapat ditentukan API apa yang digunakan (android.permission.CAMERA → kamera, android.permission.RECORD_AUDIO → audio). Berdasarkan exported activity ditentukan titik masuk tanpa otorisasi. Tahap ini dilakukan melalui aapt atau ApkAnalyzer dan memakan waktu 1–2 menit.

Langkah 2: Dekompilasi DEX

APK dibongkar, classes.dex (atau multidex) dimasukkan ke jadx. Keluaran — kode Java/Kotlin dalam paket. Analis mencari kelas kunci: CryptoUtils, ApiClient, AuthManager, DatabaseHelper, dan memeriksa algoritma apa yang digunakan. Jika dalam kode terdapat string AES/CBC/PKCS5Padding — aplikasi menggunakan enkripsi dan kunci harus ditemukan. Pada tahap ini ditentukan: kunci hardcode, URL API, token OAuth, dan rahasia. Tanpa obfuskasi seluruh kode aplikasi terbaca seperti proyek Java biasa.

Langkah 3: Analisis Lalu Lintas

Dengan mengatur Frida atau Objection untuk menonaktifkan SSL-pinning, analis menjalankan aplikasi dan mencegat lalu lintas jaringan melalui Burp Suite atau mitmproxy. Berdasarkan data lalu lintas, skema API direkonstruksi: endpoint apa, parameter apa, dalam format apa. Jika memungkinkan, analis memodifikasi permintaan dan memeriksa reaksi server terhadap data yang tidak benar atau berbahaya. Tidak adanya validasi server — kerentanan langsung yang ditemukan pada langkah ini.

Langkah 4: Menulis ke data.json

Hasil analisis dicatat dalam bentuk terstruktur. Untuk setiap tempat rentan yang ditemukan, ditunjukkan: kelas dan metode, deskripsi kerentanan, vektor eksploitasi, dan rekomendasi perbaikan. Kumpulan data ini diteruskan ke tim pengembangan atau digunakan untuk menyusun laporan pentest. Di lingkungan otomatis (MobSF), laporan dihasilkan secara otomatis berdasarkan analisis statis dan dinamis.

Karakteristik Reverse Engineering Aplikasi iOS

Reverse engineering aplikasi iOS lebih sulit daripada Android karena arsitektur keamanan Apple yang lebih ketat dan tidak adanya akses langsung ke sistem file pada perangkat standar. Untuk analisis iOS diperlukan jailbreak.

Analisis Statis Mach-O

Arsip IPA berisi biner Mach-O — format universal file yang dapat dieksekusi Apple. Untuk dekompilasi digunakan Hopper Disassembler atau IDA Pro. Tidak seperti Android DEX yang didekompilasi ke Java dengan kerugian minimal, Mach-O berisi kode ARM64 asli yang dipulihkan ke pseudokode C dengan akurasi lebih rendah. Hopper mampu memulihkan 60–70%, sisanya harus dianalisis pada tingkat assembler.

Analisis Dinamis dengan Frida untuk iOS

Frida di iOS memerlukan jailbreak dan instalasi frida-server. Setelah terhubung, Frida mencegat metode Objective-C melalui API perutean pesan. Untuk aplikasi iOS, skenario tipikal: mencegat metode NSURLSession.dataTaskWithRequest untuk mencatat permintaan HTTP, mencegat NSKeyedUnarchiver untuk menganalisis data terserialisasi, dan melacak kueri CoreData melalui frida-trace. Frida tersedia untuk iOS 15–17 dengan dirilisnya jailbreak Dopamine.

Modifikasi IPA

Reversing dapat mencakup modifikasi IPA dengan pengepakan ulang dan instalasi pada perangkat. Alat: ipatool untuk membongkar, MachOView untuk melihat bagian, dan optool untuk menyuntikkan kode. Setelah modifikasi, IPA ditandatangani melalui ldid atau fastlane sigh untuk instalasi pada perangkat yang di-jailbreak. Untuk iOS 16+, tanda tangan kode diperiksa pada tingkat Secure Enclave, dan IPA yang dimodifikasi tidak akan berjalan pada perangkat yang tidak di-jailbreak.

js
// Frida: mencegat permintaan HTTP di aplikasi iOS
if (ObjC.available) {
    let NSURLSession = ObjC.classes.NSURLSession;
    let dataTaskWithRequest = ObjC.protocol("NSURLSessionDelegate")
        .method("- URLSession:dataTask:didReceiveData:");
    Interceptor.attach(dataTaskWithRequest.implementation, {
        onEnter(args) {
            let data = ObjC.Object(args[3]);
            console("[HTTP Response]", data.toString());
        }
    });
}

Metode Perlindungan dari Reverse Engineering

Perlindungan dari rekayasa balik dibangun berdasarkan prinsip keamanan berlapis: tidak ada satu metode pun yang memberikan perlindungan 100%, tetapi kombinasi membuat reversing menjadi tidak ekonomis.

Obfuskasi Kode

Tingkat dasar — ProGuard untuk Android, yang mengganti nama kelas dan metode dengan satu karakter. Untuk penguatan digunakan DexGuard, yang menambahkan overload induction (beberapa metode dengan tanda tangan berbeda dan nama yang sama) dan enkripsi string AES-256. Obfuskasi meningkatkan waktu analisis kode dari 5 menit menjadi 5–20 jam tergantung tingkatnya. DexGuard tambahan membingungkan aliran kontrol, membuat kode tidak terbaca oleh jadx.

Enkripsi Konstanta

Semua konstanta string — URL, kunci, token, kueri SQL — dienkripsi pada tahap pembuatan dan didekripsi di runtime. Ini melindungi dari analisis statis string file DEX. Penyerang yang menjalankan strings app.apk tidak akan melihat satu pun endpoint API. Bahkan setelah dekompilasi, semua string terlihat seperti data biner. Untuk setiap string dapat digunakan kunci terpisah, yang mempersulit deobfuskasi.

RASP dan Kontrol Integritas

Agen RASP di dalam aplikasi mendeteksi Frida dan debugging di runtime. Kontrol integritas melalui hash SHA-256 APK mencegah peluncuran versi aplikasi yang dimodifikasi. Jika hash APK tidak cocok dengan referensi (disimpan di lapisan asli) — aplikasi berhenti. Ini memblokir serangan berdasarkan modifikasi APK, termasuk repackaging.

Perlindungan Server

Logika bisnis kritis harus dijalankan di server, bukan di klien. Bahkan jika penyerang sepenuhnya mendekomilasi aplikasi, kode server tetap tidak dapat diakses. Validasi server semua permintaan dan parameter mencegah eksploitasi kerentanan yang ditemukan selama reversing. Atestasi server melalui Play Integrity API atau App Attest menegaskan bahwa permintaan berasal dari aplikasi asli yang tidak dimodifikasi.

Pertanyaan yang Sering Diajukan

Apakah reverse engineering aplikasi mobile legal?

Di AS, reverse engineering diatur oleh DMCA — diizinkan untuk kompatibilitas, pengujian keamanan, dan tujuan pengarsipan. Penghindaran tindakan perlindungan teknis (DRM) dilarang. Di Eropa, pasal 6 EUCD analog dengan DMCA. Di Rusia, reverse engineering tanpa persetujuan pemegang hak cipta dapat ditafsirkan sebagai pelanggaran hak cipta. Konsultasi hukum wajib dilakukan sebelum reversing komersial.

Bisakah aplikasi dilindungi 100% dari reversing?

Tidak. Kode apa pun yang dijalankan di perangkat penyerang dapat dianalisis — ini adalah batasan prinsip dari model perlindungan sisi klien. Tujuan perlindungan adalah membuat reversing tidak ekonomis: biaya waktu dan sumber daya harus melebihi nilai hasil yang diperoleh. Kombinasi obfuskasi, RASP, dan logika server adalah standar perlindungan saat ini.

Apa itu repackaging (pengepakan ulang) APK?

Repackaging — modifikasi aplikasi melalui reverse engineering dengan penyusunan ulang APK. Penyerang membongkar APK melalui apktool, menambahkan kode berbahaya atau mengganti kunci API, menyusun ulang, dan menandatangani dengan sertifikatnya sendiri. Repackaging merupakan 86% dari semua serangan di Android, menurut Kaspersky Threat Report (2025). Tindakan pencegahan: periksa tanda tangan digital di runtime.

Bagaimana Frida menghindari SSL-pinning?

Skrip Frida Universal Android SSL Unpin mencegat panggilan TrustManager.checkServerTrusted dan ServerTrustManager di iOS, mengganti implementasi dengan allow-all. Juga digunakan pencegat metode X509TrustManager di OkHttp dan URLConnection. SSL-pinning di Frida dilewati dalam 10 detik dengan skrip siap pakai. Perlindungan yang lebih tangguh — certificate transparency melalui verifikasi sertifikat di server.

Bahasa apa yang paling sulit untuk direverse?

Kode asli C/C++ di pustaka .so/.dylib secara signifikan lebih sulit direverse daripada Java di DEX. Swift dengan PGO dan kompilasi Osize memberikan biner yang lebih membingungkan daripada Objective-C. Rust dikompilasi ke kode asli tanpa metadata runtime dan tanpa pembungkus standar Objective-C, menjadikannya yang paling sulit untuk direverse di antara bahasa pengembangan mobile modern.

Kesimpulan

  • Reverse Engineering — pemulihan logika aplikasi dari kode biner melalui analisis statis (jadx, Ghidra, Hopper) dan instrumentasi dinamis (Frida, Xposed, Objection)
  • Analisis statis aplikasi Android dimulai dengan dekompilasi DEX melalui jadx dan pembongkaran sumber daya melalui apktool, memberikan hingga 90% kode Java yang dipulihkan
  • Analisis dinamis melalui Frida memungkinkan mencegat panggilan di runtime, menonaktifkan SSL-pinning, dan mencatat semua argumen serta nilai kembali metode
  • Reverse Engineering iOS memerlukan jailbreak dan bekerja dengan biner ARM64 melalui Hopper/IDA Pro, yang secara signifikan lebih sulit daripada analisis DEX di Android
  • Perlindungan dari reversing mencakup obfuskasi (ProGuard/DexGuard), enkripsi konstanta, agen RASP untuk mendeteksi Frida, dan atestasi server melalui Play Integrity API
  • Perlindungan 100% dari reversing tidak mungkin — tujuannya membuat biaya serangan lebih tinggi dari nilai data yang dilindungi
  • Repackaging APK — serangan paling masif pada aplikasi mobile, dicegah dengan pemeriksaan tanda tangan digital di runtime dan verifikasi integritas di server

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga