Stripped and Unstripped
Mengenal perbedaan binary stripped dan unstripped
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.
Apa itu Binary Stripped dan Unstripped?
Ketika melakukan reverse engineering, kita akan menganalisis binary, misalnya menggunakan perintah file
. 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.
Kapan Stripped Digunakan?
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.
Contoh Perbedaan Binary Stripped dan Unstripped
1. Membuat Program
Berikut adalah kode program sederhana dalam bahasa C yang digunakan untuk perbandingan:
#include <stdio.h>
void say_hello(char* name) {
printf("Hello, %s!\n", name);
}
int main() {
char name[50];
printf("Enter your name: ");
scanf("%49s", name);
say_hello(name);
return 0;
}
2. Kompilasi Program
Ada dua jenis cara mengompilasi program ini, yaitu unstripped (default) dan stripped (informasi simbol dihapus).
a. Unstripped Binary
Kompilasi biasa (tanpa opsi tambahan):
➜ gcc hello.c -o hello
➜ file hello
hello: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b89a0ee9571dbbb24667a5232e95c4e210bca811, for GNU/Linux 3.2.0, not stripped
b. Stripped Binary
Ada dua cara melakukan stripping:
Gunakan opsi
-s
saat kompilasi:
➜ gcc hello.c -o hello_stripped -s
➜ file hello_stripped
hello_stripped: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=be4d294f666beefd209e4d776d1c9a89d8cc2d6d, for GNU/Linux 3.2.0, stripped
Menggunakan perintah
strip
setelah kompilasi
➜ gcc hello.c -o hello_unstripped2
➜ strip hello_unstripped2 -o hello_stripped2
➜ file hello_stripped2
hello_stripped2: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b89a0ee9571dbbb24667a5232e95c4e210bca811, for GNU/Linux 3.2.0, stripped
3. Perbandingan Hasil
Untuk membandingkan hasil antara binary unstripped dan stripped, kita gunakan perintah berikut:
a. Unstripped Binary
Kita cek apakah fungsi say_hello
masih bisa dilihat:
# Unstripped binary
# Melihat daftar simbol dari suatu file menggunakan 'nm'
➜ nm hello | grep say_hello
0000000000001149 T say_hello

Bisa kita lihat, fungsi say_hello
terlihat jelas.
b. Stripped
Jika binary sudah stripped, nama fungsi tersebut tidak akan muncul lagi:
# Stripped binary
➜ nm hello_stripped | grep say_hello
nm: hello_stripped: no symbols # Tidak akan ada output karena simbol dihapus

Dalam alat bantu seperti Ghidra atau IDA Pro, nama fungsi muncul sebagai alamat memori saja seperti FUN_00101173
.
4. Ukuran File Binary
➜ ls -lh hello*
-rwxrwxr-x 1 kali kali 16K Mar 7 15:48 hello # Unstripped (default)
-rw-rw-r-- 1 kali kali 216 Mar 7 15:48 hello.c # source code
-rwxrwxr-x 1 kali kali 15K Mar 7 15:52 hello_stripped # stripped
-rwxrwxr-x 1 kali kali 15K Mar 7 15:50 hello_stripped2 # stripped (alternatif)
Ukuran binary stripped lebih kecil karena semua informasi tambahan sudah dihapus.
Last updated