Reverse engineering adalah keterampilan inti bagi siapa saja yang ingin memahami perangkat lunak sampai ke “mesinnya” — baik untuk keamanan, debugging, maupun kompetisi capture-the-flag (CTF). Dalam video Low Level (15 Sep 2025) penulis menunjukkan sebuah workflow praktis: dari analisis biner sampai mengekstrak flag pada challenge Flag Casino (Hack The Box). Artikel ini merangkum proses tersebut secara profesional, natural, dan praktis — tanpa mengabaikan aspek etika.
Apa itu reverse engineering (RE) dan kenapa penting?
Reverse engineering adalah proses membongkar sebuah program yang sudah dikompilasi menjadi kode mesin untuk mengerti apa yang dilakukan pembuatnya. Di dunia keamanan komputer, RE dipakai untuk:
- menemukan bug dan celah,
- mempelajari malware (analisis forensik),
- memecahkan tantangan CTF untuk melatih keterampilan.
Di CTF, kamu diberikan binari yang dapat kamu jalankan sendiri — konteks legal dan etisnya aman — sehingga kita bisa bereksperimen tanpa melanggar hukum.
Alat dan persiapan yang biasa dipakai
Contoh workflow pada video memanfaatkan alat-alat standar RE:
file— mengetahui format dan arsitektur biner (mis. ELF 64-bit).strings— mengekstrak teks ASCII dari biner untuk menemukan pesan, nama fungsi, atau indikator lain.- IDA Pro / IDA Free + IDA Python — disassembler/decompiler untuk melihat instruksi assembly dan perkiraan kode C.
- Compiler (gcc) untuk membuat program bantu (lookup table).
- Python (module
struct) untuk manipulasi biner dan skrip automasi.
Hex-Rays (IDA Pro) disebut sebagai sponsor video — IDA adalah salah satu tool paling populer untuk disassembly/decompilation.
Studi kasus: Flag Casino — ringkasan langkah analisis
Berikut langkah-langkah analitis yang diterapkan untuk menemukan flag pada challenge:
1. Observasi awal: jalankan dan lihat perilaku
Menjalankan biner menunjukkan program meminta input (place your bets) dan menolak (security) jika input salah. Ini memberi petunjuk target (nilai input yang harus cocok).
2. Informasi statis: file dan strings
file casino→ menandakan ELF 64-bit (kompilasi modern).strings casino→ menemukan penggunaan fungsi sepertisrand,rand,printf,scanf→ sinyal kuat bahwa generator pseudo-random digunakan dan kemungkinan ada seed yang berasal dari input pengguna.
3. Disassembly & decompilation (IDA)
Dengan membuka biner di IDA:
- Temukan fungsi
main, cari call kescanf(di mana input dibaca). - Identifikasi bagian yang men-trigger
srand(user_input)dan kemudianrand()yang dibandingkan dengan arraycheck[]. - Di decompiler view, kode terlihat seperti: baca karakter (percent c),
srand(user_char),rand()kemudian bandingkan dengan nilai dicheckarray.
4. Analisis ruang pencarian
Karena input dibaca per-char (1 byte), ruang pencarian hanya 256 kemungkinan per posisi — sangat kecil. Ini memungkinkan strategi brute-force deterministik: untuk setiap nilai 0..255, srand(i); r = rand(); catat r — buat lookup table mapping r → char(i).
5. Membangun lookup table (C atau Python)
Contoh logika sederhana (konsep):
// konsep: mapping seed -> rand()
for (int i = 0; i < 256; ++i) {
srand(i);
int r = rand();
printf("%d: %08x\n", i, r);
}
Hasilnya adalah daftar pasangan seed→rand yang dipakai sebagai kamus lookup.
6. Ekstraksi array check[] dari biner (IDA Python)
Gunakan IDA/Python untuk mendapatkan bytes dari alamat array check dan mengekstraknya ke host. Karena data tersimpan sebagai 32-bit little-endian, gunakan struct.unpack untuk mengkonversi ke integer.
7. Mapping dan membangun flag
Untuk setiap integer val di check[], cari val pada lookup table dan terjemahkan menjadi karakter ASCII yang sesuai. Menggabungkan semua karakter memberi string yang diharapkan — flag. Dalam contoh video, hasilnya adalah frasa readable seperti HackTheBox....
Intisari teknis (kenapa ini berhasil?)
rand()pada C standar adalah PRNG deterministik — jika seed (srand) diketahui, outputrand()dapat diprediksi. Challenge sengaja menggunakan seed yang berasal dari input 1-byte, sehingga ruang pencarian kecil dan rentan.- Tombol keberhasilan adalah pengamatan awal (
strings) dan kemampuan memetakan nilai numerik di binary ke input-ascii dengan bantuanstruct/IDA Python.
Pelajaran praktis & etika
- Pelajaran teknis: selalu curigai penggunaan PRNG tanpa salt/entropi yang baik pada konteks keamanan. Gunakan PRNG kriptografis jika membutuhkan ketidakprediktabilitas nyata.
- Etika: praktik RE pada biner milikmu atau challenge CTF adalah sah. Jangan memakai teknik RE/membongkar pada software berlisensi tanpa izin, layanan online, atau sistem produksi — itu ilegal dan berbahaya.
- Latihan aman: platform seperti Hack The Box, TryHackMe, dan CTFtime menyediakan lingkungan legal untuk belajar RE.
Rekomendasi sumber belajar
- Pelajari assembly dasar (x86_64) dan calling convention.
- Kuasai tools: IDA Pro (atau Ghidra sebagai alternatif open-source), radare2, Binary Ninja.
- Latihan terstruktur: ikut CTF, selesaikan kategori pwn/reverse di Hack The Box dan TryHackMe.
- Pelajari konsep PRNG,
rand()/srand()vs. generator kripto (e.g. /dev/urandom, libsodium).
Reverse engineering bukan sekadar “membuka kunci” — ini adalah cara berpikir: mengamati perilaku, menebak struktur, verifikasi eksperimental, lalu otomatisasi. Untuk yang serius belajar keamanan atau ingin memahami perangkat lunak sampai ke akarnya, RE adalah jalan yang menantang namun sangat rewarding. Jika kamu tertarik mencoba challenge yang sama, lakukan di lingkungan CTF yang aman — dan nikmati prosesnya.
Sumber: everything is open source if you know reverse engineering (hack with me!)

