Dasar-Dasar Assembly x86/x64 untuk Reverse Engineer
Baca MOV, CMP, JNE, CALL, RET dan ikuti aliran data melalui register serta tumpukan.
Dasar-Dasar Assembly x86/x64 untuk Reverse Engineer adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cyber Security Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cyber Security Academy mencakup 4 pelajaran total.
Mengapa Assembly bagi Rekayasa Balik
Dekompilator Ghidra sangat membantu, tetapi tidak sempurna — dekompilator melewatkan beberapa konstruksi, salah menyimpulkan tipe, dan tidak dapat mendekompilasi kode yang disamarkan. Membaca assembly secara langsung memberikan sumber kebenaran. Penganalisis rekayasa balik perlu membaca assembly, bukan menulisnya.
Register
Register utama x86-64:
- RAX — akumulator, nilai kembalian
- RBX, RCX, RDX — tujuan umum
- RSI, RDI — indeks sumber/tujuan, argumen fungsi pertama/kedua
- RSP — penunjuk tumpukan
- RBP — penunjuk dasar (bingkai tumpukan)
- RIP — penunjuk instruksi
Konvensi Pemanggilan Fungsi (x64 Linux)
Argumen diteruskan melalui register (System V AMD64 ABI):
- RDI
- RSI
- RDX
- RCX
- R8
- R9
Nilai kembalian berada di RAX. Argumen tambahan didorong ke tumpukan.
Instruksi Esensial
Instruksi inti yang perlu dikenali:
mov rax, rbx ; copy rbx to rax
push rax ; push rax onto stack
pop rbx ; pop top of stack into rbx
add rax, 8 ; rax = rax + 8
sub rsp, 0x20 ; allocate 32 bytes on stack
call 0x401234 ; call function at address
ret ; return to caller
lea rax, [rbp-0x10] ; load address of local varLompatan Bersyarat
Perbandingan dan percabangan:
cmp rax, 0 ; set flags based on rax - 0
test rax, rax ; test rax & rax (check if zero)
jz 0x401234 ; jump if zero
jnz 0x401234 ; jump if not zero
jl 0x401234 ; jump if less (signed)
jge 0x401234 ; jump if >= (signed)
je 0x401234 ; jump if equalMembaca Fungsi Sederhana
Mengenali pola umum:
; if (x == 0) return 1;
mov eax, [rbp-4] ; load x
test eax, eax ; x == 0?
jnz .notZero ; if not zero, skip
mov eax, 1 ; return value = 1
ret
.notZero:
...Mengenali Operasi Teks
Operasi teks/memori yang umum:
; memcpy(dest, src, n):
; rdi=dest, rsi=src, rdx=n
rep movsb ; copy RCX bytes from RSI to RDI
; strlen-like loop:
.loop:
cmp byte [rsi], 0 ; check for null terminator
je .done
inc rsi
jmp .loopMenyiapkan/Membongkar Bingkai Tumpukan
Setiap fungsi dimulai dan diakhiri dengan:
; Prologue:
push rbp ; save caller frame
mov rbp, rsp ; set up new frame
sub rsp, 0x30 ; allocate local vars
; Epilogue:
leave ; mov rsp, rbp; pop rbp
retMengidentifikasi Perulangan
Perulangan dalam disasembli:
- Lompatan mundur (ke alamat yang lebih rendah) menunjukkan adanya perulangan
- Pencacah dalam register dikurangi dengan
dec/sub - Instruksi
loopmengurangi RCX dan melompat jika nilainya bukan nol
Membaca Pernyataan Pilihan
Pernyataan pilihan sering dikompilasi menjadi tabel lompatan:
; Jump table pattern:
cmp eax, 5 ; check if case > max
ja .default ; jump to default
lea rcx, [jump_table]
mov rax, [rcx + rax*8] ; index into table
jmp rax ; jump to case handlerKonstanta SIMD dan Kriptografi
Cari konstanta numerik yang mengidentifikasi algoritme:
- Kotak-S AES: byte pertama
63 7C 77 7B... - Hash awal SHA-256:
0x6a09e667, 0xbb67ae85... - MD5:
0xd76aa478
Mengenali konstanta ini secara langsung mengidentifikasi fungsi kriptografi.
Pemeriksaan Singkat: Assembly x64
Dalam ABI System V x86-64, register mana yang menyimpan argumen pertama untuk pemanggilan fungsi?
Ringkasan Pelajaran
Rekayasa balik x86-64 memerlukan pengetahuan tentang register utama (RAX, RDI, RSI, RSP, RIP), konvensi pemanggilan fungsi (argumen di RDI/RSI/RDX...), dan pola umum (prolog, perulangan, perbandingan, tabel lompatan). Anda tidak perlu menulis assembly — cukup membacanya. Konstanta kriptografi dalam kode mengidentifikasi algoritme tanpa menjalankan biner.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Dasar-Dasar Assembly x86/x64 untuk Reverse Engineer” gratis?
Ya — teks lengkap “Dasar-Dasar Assembly x86/x64 untuk Reverse Engineer” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cyber Security Academy, upgrade ke CoddyKit PRO. Kursus Cyber Security Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Dasar-Dasar Assembly x86/x64 untuk Reverse Engineer”?
Baca MOV, CMP, JNE, CALL, RET dan ikuti aliran data melalui register serta tumpukan. Kamu berlatih Cyber Security Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cyber Security Academy?
Tidak diperlukan pengalaman sebelumnya. Cyber Security Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Dasar-Dasar Assembly x86/x64 untuk Reverse Engineer” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cyber Security Academy ini?
Ya. Setiap pelajaran Cyber Security Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Ghidra: Menavigasi dan Memberi Anotasi pada Biner
- Dasar-Dasar Assembly x86/x64 untuk Reverse Engineer
- Analisis Dinamis dengan GDB dan pwndbg
- Dek obfuskasi dan Trik Antianalisis