0Pricing
Cyber Security Academy · Lektion

Grundlagen der x86/x64-Assembly für Reverse Engineers

Lesen Sie MOV, CMP, JNE, CALL und RET und verfolgen Sie den Datenfluss durch Register und Stack.

Grundlagen der x86/x64-Assembly für Reverse Engineers ist eine kostenlose Cyber Security Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cyber Security Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Assembly für Reverse Engineers

Der Decompiler von Ghidra ist hilfreich, aber nicht perfekt — er erkennt einige Konstrukte nicht, leitet Typen falsch ab und kann obfuskierten Code nicht dekompilieren. Das direkte Lesen von Assembly liefert die tatsächliche Grundlage. Ein Reverse Engineer muss Assembly lesen können, nicht schreiben.

Register

Wichtige Register von x86-64:

  • RAX — Akkumulator, Rückgabewerte
  • RBX, RCX, RDX — allgemeine Verwendung
  • RSI, RDI — Quell-/Zielindex, erstes/zweites Funktionsargument
  • RSP — Stack Pointer
  • RBP — Base Pointer (Stack-Frame)
  • RIP — Instruction Pointer

Funktionsaufrufkonvention (x64-Linux)

Argumente werden in Registern übergeben (System V AMD64 ABI):

  1. RDI
  2. RSI
  3. RDX
  4. RCX
  5. R8
  6. R9

Der Rückgabewert befindet sich in RAX. Weitere Argumente werden auf dem Stack abgelegt.

Wichtige Instruktionen

Grundlegende Instruktionen, die Sie erkennen sollten:

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

Bedingte Sprünge

Vergleiche und Verzweigungen:

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

Eine einfache Funktion lesen

Häufige Muster erkennen:

; 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:
...

String-Operationen erkennen

Häufige String-/Speicheroperationen:

; 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

Stack-Frame-Aufbau und -Abbau

Jede Funktion beginnt und endet mit:

; 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

Schleifen identifizieren

Schleifen im Disassembly:

  • Ein Rückwärtssprung (zu einer niedrigeren Adresse) weist auf eine Schleife hin
  • Ein Zähler in einem Register wird mit dec/sub dekrementiert
  • Die loop-Instruktion dekrementiert RCX und springt, wenn der Wert ungleich null ist

Switch-Anweisungen lesen

Switch-Anweisungen werden häufig in Sprungtabellen kompiliert:

; 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

SIMD- und Krypto-Konstanten

Achten Sie auf numerische Konstanten, die Algorithmen erkennen lassen:

  • AES-S-Box: erste Bytes 63 7C 77 7B...
  • Initialer Hash von SHA-256: 0x6a09e667, 0xbb67ae85...
  • MD5: 0xd76aa478

Das Erkennen dieser Konstanten identifiziert kryptografische Funktionen sofort.

Schnelltest: x64-Assembly

Welches Register enthält im x86-64 System-V-ABI das erste Argument eines Funktionsaufrufs?

Zusammenfassung der Lektion

Reverse Engineering von x86-64 erfordert Kenntnisse der wichtigsten Register (RAX, RDI, RSI, RSP, RIP), der Aufrufkonventionen (Argumente in RDI/RSI/RDX...) und gängiger Muster (Prologues, Schleifen, Vergleiche, Sprungtabellen). Sie müssen keine Assembly schreiben — Sie müssen sie nur lesen. Kryptografische Konstanten im Code identifizieren Algorithmen, ohne das Binärprogramm auszuführen.

Häufig gestellte Fragen

Ist die Lektion „Grundlagen der x86/x64-Assembly für Reverse Engineers“ kostenlos?

Ja — der vollständige Text von „Grundlagen der x86/x64-Assembly für Reverse Engineers“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cyber Security Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Grundlagen der x86/x64-Assembly für Reverse Engineers“?

Lesen Sie MOV, CMP, JNE, CALL und RET und verfolgen Sie den Datenfluss durch Register und Stack. Du übst Cyber Security Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cyber Security Academy zu starten?

Keine Vorkenntnisse erforderlich. Cyber Security Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Grundlagen der x86/x64-Assembly für Reverse Engineers“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cyber Security Academy-Lektion Code schreiben und ausführen?

Ja. Jede Cyber Security Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ghidra: Binärdateien navigieren und annotieren
  2. Grundlagen der x86/x64-Assembly für Reverse Engineers
  3. Dynamische Analyse mit GDB und pwndbg
  4. Deobfuscation und Anti-Analyse-Tricks
← Zurück zu Cyber Security Academy