Stripped and Unstripped
Mengenal perbedaan binary stripped dan unstripped
Last updated
Mengenal perbedaan binary stripped dan unstripped
Last updated
Saat melakukan analisis terhadap suatu binary, kita sering menemui istilah stripped dan unstripped (atau not stripped). Pada bagian ini, kita akan membahas dua istilah penting tersebut.
Ketika melakukan reverse engineering, kita akan menganalisis binary, misalnya menggunakan perintah . Di sini kita akan ditampilkan informasi tentang binary tersebut, apakah stripped atau unstripped.
Unstripped Binary Binary yang masih mengandung informasi tambahan seperti nama fungsi, nama variabel, simbol, dan informasi debug. Informasi ini memudahkan seorang reverse engineer karena bisa dengan mudah mengetahui nama fungsi dan struktur kode program.
Stripped Binary Kebalikan dari unstripped. Binary ini sudah tidak mengandung informasi tambahan seperti nama fungsi atau variabel, simbol, serta informasi debug lainnya. Semuanya dihapus agar ukuran file lebih kecil dan sulit dipahami saat di-reverse engineering.
Analoginya seperti ini:
Unstripped: Seperti buku lengkap yang punya judul bab, daftar isi, nomor halaman, dan nama-nama tokoh yang jelas. Kita bisa dengan mudah menemukan bagian tertentu.
Stripped: Seperti buku yang semua judul bab, daftar isi, nomor halaman, dan nama tokohnya dihapus. Kita harus membaca perlahan untuk memahami alur cerita dan mencari tahu siapa tokohnya.
Biasanya binary sengaja di strip dengan tujuan berikut:
Mengurangi ukuran binary, sehingga lebih ringan saat distribusi.
Menyulitkan proses analisis dan reverse engineering agar kode tidak mudah dipahami orang lain, sehingga lebih aman dari eksploitasi.
Berikut adalah kode program sederhana dalam bahasa C yang digunakan untuk perbandingan:
Ada dua jenis cara mengompilasi program ini, yaitu unstripped (default) dan stripped (informasi simbol dihapus).
Kompilasi biasa (tanpa opsi tambahan):
Ada dua cara melakukan stripping:
Gunakan opsi -s
saat kompilasi:
Menggunakan perintah strip
setelah kompilasi
Untuk membandingkan hasil antara binary unstripped dan stripped, kita gunakan perintah berikut:
Kita cek apakah fungsi say_hello
masih bisa dilihat:
Bisa kita lihat, fungsi say_hello
terlihat jelas.
Jika binary sudah stripped, nama fungsi tersebut tidak akan muncul lagi:
Dalam alat bantu seperti Ghidra atau IDA Pro, nama fungsi muncul sebagai alamat memori saja seperti FUN_00101173
.
Ukuran binary stripped lebih kecil karena semua informasi tambahan sudah dihapus.