0Pricing
Cyber Security Academy · Pelajaran

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):

  1. RDI
  2. RSI
  3. RDX
  4. RCX
  5. R8
  6. 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 var

Lompatan 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 equal

Membaca 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 .loop

Menyiapkan/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
ret

Mengidentifikasi Perulangan

Perulangan dalam disasembli:

  • Lompatan mundur (ke alamat yang lebih rendah) menunjukkan adanya perulangan
  • Pencacah dalam register dikurangi dengan dec/sub
  • Instruksi loop mengurangi 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 handler

Konstanta 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

  1. Ghidra: Menavigasi dan Memberi Anotasi pada Biner
  2. Dasar-Dasar Assembly x86/x64 untuk Reverse Engineer
  3. Analisis Dinamis dengan GDB dan pwndbg
  4. Dek obfuskasi dan Trik Antianalisis
← Kembali ke Cyber Security Academy