Practical Reverse Engineering: A Hands-On Starter Guide
Pelajari alur kerja inti reverse engineering pada binari, dari analisis statis hingga dynamic debugging, dengan tips praktis tentang tools.
Reverse engineering adalah proses membedah perangkat lunak yang dikompilasi untuk memahami logika, perilaku, dan maksudnya tanpa akses ke kode sumber. Baik Anda menganalisis malware, mengaudit binari closed-source, atau mempelajari tantangan CTF, alur kerja inti yang sama berlaku: kumpulkan informasi secara statis, kemudian konfirmasi hipotesis Anda secara dinamis. Panduan ini memandu Anda melalui alur kerja tersebut dengan langkah-langkah praktis yang tidak tergantung pada tools dan dapat langsung Anda terapkan.
Menyiapkan Lingkungan Analisis yang Aman
Sebelum menyentuh binari yang tidak dikenal, isolasi ruang kerja Anda. Gunakan mesin virtual khusus tanpa akses jaringan ke host, buat snapshot sebelum analisis, dan nonaktifkan shared folder dan clipboard sync. Tools seperti Linux VM dengan radare2, Ghidra, gdb, dan objdump mencakup sebagian besar kebutuhan statis dan dinamis, sementara Windows VM dengan x64dbg dan Process Monitor sangat penting untuk file PE. Jangan pernah menganalisis sampel mencurigakan pada mesin utama Anda, dan selalu revert snapshot antar sesi untuk menghindari kontaminasi silang.
Analisis Statis: Membaca Tanpa Menjalankan
Mulai dengan mengidentifikasi jenis file dan arsitektur menggunakan file dan readelf -h (Linux) atau PE header inspector (Windows). Periksa packing atau obfuskasi dengan analisis entropi — tools seperti Detect It Easy menandai bagian dengan entropi yang mencurigakan tinggi yang mengindikasikan kompresi atau enkripsi.
Selanjutnya, muat binari ke dalam disassembler seperti Ghidra atau IDA Free. Fokus pada:
- Imports dan exports — Panggilan API seperti
CreateRemoteThreadatauVirtualAllocExmenunjukkan process injection;WSAStartupmenunjukkan networking. - Strings — jalankan
strings -n 8 binaryuntuk menemukan URL hardcoded, path file, atau pesan debug yang mengungkap fungsionalitas. - Control flow graphs — tampilan decompiler Ghidra mengubah assembly mentah menjadi pseudo-C yang dapat dibaca, mempercepat pemahaman loop dan conditional secara drastis.
Beri anotasi pada nama fungsi seiring Anda memahaminya. Mengganti nama sub_401020 dengan decrypt_config langsung membuat analisis Anda selanjutnya lebih mudah diikuti.
Analisis Dinamis: Mengamati Saat Berjalan
Analisis statis hanya membawa Anda sejauh ini, terutama melawan kode yang diobfuskasi atau packed. Muat binari dalam debugger dan atur breakpoint pada panggilan API mencurigakan yang diidentifikasi sebelumnya. Di x64dbg, breaking pada VirtualAlloc atau WriteProcessMemory sering kali mengungkapkan routine unpacking saat mereka menulis kode yang didekripsi ke memori tepat sebelum eksekusi.
Gunakan Process Monitor atau strace/ltrace di Linux untuk mencatat aktivitas file, registry, dan jaringan secara real time. Pandangan eksternal ini melengkapi pandangan internal dari debugger dan sering mengungkap perilaku yang sulit dideteksi dalam disassembly saja, seperti pembuatan file sementara atau DNS lookups.
Untuk binari yang mampu jaringan, jalankan seiring Wireshark atau simulator internet palsu seperti INetSim untuk mengamati traffic command-and-control tanpa membiarkan sampel benar-benar menjangkau internet.
Mengatasi Trik Anti-Analysis
Banyak binari — terutama malware — menyertakan pemeriksaan yang dirancang untuk mendeteksi debugger, mesin virtual, atau sandbox. Teknik umum termasuk memanggil IsDebuggerPresent, memeriksa kunci registry spesifik VM, atau mengukur waktu eksekusi untuk mendeteksi single-stepping. Saat Anda melihat pemeriksaan ini selama analisis statis, Anda dapat menambal conditional jump di debugger untuk memaksa
Ditulis dengan bantuan AI, ditinjau dan dipublikasikan oleh Michal Pilch (CISSP), Korra Studio.
Ini satu catatan dari basis pengetahuan Korra Studio — platform ini memasangkan setiap topik dengan bimbingan privat.
Mulai gratisarrow_forward