COMP6836001 • RE-CORE
Reverse Engineering
Panduan komprehensif analisis biner x86 dan x64 untuk UTS: arsitektur CPU, register, stack frame, calling convention, hingga rekonstruksi algoritma assembly ke source code bahasa C tingkat tinggi.
🎯 Target Capaian UTS Reverse Engineering
1. Fundamental Arsitektur x86 vs x64
Dalam binary analysis, pemahaman mendalam tentang perbedaan mode 32-bit (IA-32 / x86) dan 64-bit (x86_64 / AMD64) adalah fondasi mutlak. Setiap register pada x64 berukuran 64-bit (8 bytes), sedangkan pada x86 berukuran 32-bit (4 bytes).
Arsitektur x86 (32-bit)
- Pointer berukuran 4 byte (32-bit addresses).
- Register utama:
EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP,EIP. - Passing argumen fungsi mayoritas dilakukan via Stack (kanan ke kiri pada
cdecl). - Return value integer diletakkan pada register
EAX.
Arsitektur x64 (64-bit)
- Pointer berukuran 8 byte (64-bit addresses).
- Register diperluas:
RAX-R15(16 general purpose registers). - Passing argumen via Register (System V:
RDI,RSI,RDX,RCX,R8,R9). - Return value diletakkan pada register
RAX.
2. Anatomi Stack Frame (Prolog, Body, Epilog)
Stack tumbuh ke bawah (dari alamat memori tinggi ke alamat memori rendah). Ketika suatu fungsi dieksekusi, CPU membentuk sebuah stack frame terlokalisasi:
Struktur Standar Fungsi Assembly x64
x86_64 Assembly
push rbp ; Simpan base pointer lama dari pemanggil (caller)
mov rbp, rsp ; Tetapkan base pointer baru untuk frame fungsi ini
sub rsp, 16 ; Alokasikan ruang 16-byte di stack untuk local variables
; --- BODY FUNGSI (Operasi logika, perhitungan lokal) ---
mov DWORD PTR [rbp-4], 10 ; int x = 10;
mov DWORD PTR [rbp-8], 20 ; int y = 20;
mov eax, DWORD PTR [rbp-4] ; temp = x;
add eax, DWORD PTR [rbp-8] ; temp += y;
; --- EPILOG FUNGSI (Restorasi frame & Return) ---
leave ; Ekuivalen dengan: mov rsp, rbp; pop rbp;
ret ; Pop RIP / return address dan lompat kembali ke pemanggil
⚡ Cek Pemahaman Kilat: Reverse Engineering
Pertanyaan 1 dari 3
Pada arsitektur System V AMD64 (Linux x64), register manakah yang digunakan untuk menampung argumen fungsi pertama dan kedua?