-
Sadrazamv4
ig:sadrazam_v4 tg: Sadrazam.spy
🚀 BAŞTAN SONA x86 ASSEMBLY BÖLÜM-1: İşlemci Mimarisi, Yazmaçlar (Registers) ve İlk Kod! 💻
Selamlar dostlar! 👋
Yazılım dünyasının en alt seviyesine, doğrudan işlemcinin (CPU) diline iniyoruz! **x86 Assembly** serimize hoş geldiniz.
Bu seride soyutlamaları kaldırıp donanım seviyesinde kod yazmayı, RAM adreslerini, CPU yazmaçlarını (Registers), kesilmeleri (Interrupts) ve sistem çağrılarını (Syscalls) öğreneceğiz.
---
📌 1. Assembly Dili ve x86 Mimarisi Nedir? 🧠
Assembly; makine kodunun (0101) insan tarafından okunabilir sembolik komutlara (Mnemonic: MOV, ADD, SUB vb.) birebir eşlenmiş halidir.
### Neden x86 Assembly?
✨ **En Alt Seviye Kontrol:** İşlemci çekirdeğini ve RAM bellek hücrelerini doğrudan yönetmenizi sağlar.
🛡️ **Tersine Mühendislik (Reverse Engineering) & Siber Güvenlik:** Zararlı yazılım analizi (Malware Analysis), Kernel exploit geliştirme ve zafiyet araştırmalarında zorunludur.
⚡ **Maksimum Performans:** İşletim sistemi çekirdekleri (Kernel), MBR Bootloader ve sürücü (Driver) yazımında kullanılır.
---
🏗️ 2. x86 Yazmaçları (Registers) ⚙️
Yazmaçlar, işlemcinin (CPU) içerisinde bulunan, RAM'den katbekat hızlı çalışan ultra küçük dahili bellek alanlarıdır. 32-bit x86 mimarisinde en sık kullanılan Genel Amaçlı Yazmaçlar (General Purpose Registers):
| Yazmaç (32-bit) | Alt Yapı (16-bit / 8-bit) | Açıklama / Birincil Görevi |
| :--- | :--- | :--- |
| **EAX** | AX (AH / AL) | **Accumulator:** Aritmetik işlemler ve fonksiyon dönüş değerleri. |
| **EBX** | BX (BH / BL) | **Base Register:** Bellek adreslemelerinde temel adres tutucu. |
| **ECX** | CX (CH / CL) | **Count Register:** Döngülerde (Loops) sayaç görevi görür. |
| **EDX** | DX (DH / DL) | **Data Register:** Çarpma/bölme ve G/Ç (I/O) işlemleri. |
| **ESP** | SP | **Stack Pointer:** Yığın bellek alanının en üstünü gösterir. |
| **EBP** | BP | **Base Pointer:** Fonksiyon çerçevelerinin (Stack Frame) taban adresi. |
| **EIP** | IP | **Instruction Pointer:** Bir sonraki çalıştırılacak komutun adresi. |
---
✍️ 3. İlk x86 Assembly Kodu (NASM / Linux Syntax) 💻
Linux ortamında NASM (Netwide Assembler) sözdizimi ile yazılmış ilk kodumuz:
section .data
msg db 'Selam x86 Assembly Dünyasi!', 0xa ; Ekrana basılacak metin ve alt satır karakteri (\n)
len equ $ - msg ; Metnin bayt cinsinden uzunluğu
section .text
global _start ; Bağlayıcıya (Linker) giriş noktasını bildiriyoruz
_start:
; sys_write (Ekrana Yazdırma Sistem Çağrısı)
mov eax, 4 ; Syscall numarası 4 (sys_write)
mov ebx, 1 ; Dosya tanımlayıcı 1 (stdout - standart çıktı)
mov ecx, msg ; Yazdırılacak metnin adresi
mov edx, len ; Yazdırılacak metnin uzunluğu
int 0x80 ; Linux Çekirdek Kesilmesi (Kernel Interrupt)
; sys_exit (Programdan Güvenli Çıkış Sistem Çağrısı)
mov eax, 1 ; Syscall numarası 1 (sys_exit)
mov ebx, 0 ; Çıkış kodu (Exit Status Code 0 - Hata yok)
int 0x80 ; Linux Çekirdek Kesilmesi
Selamlar dostlar! 👋
Yazılım dünyasının en alt seviyesine, doğrudan işlemcinin (CPU) diline iniyoruz! **x86 Assembly** serimize hoş geldiniz.
Bu seride soyutlamaları kaldırıp donanım seviyesinde kod yazmayı, RAM adreslerini, CPU yazmaçlarını (Registers), kesilmeleri (Interrupts) ve sistem çağrılarını (Syscalls) öğreneceğiz.
---
📌 1. Assembly Dili ve x86 Mimarisi Nedir? 🧠
Assembly; makine kodunun (0101) insan tarafından okunabilir sembolik komutlara (Mnemonic: MOV, ADD, SUB vb.) birebir eşlenmiş halidir.
### Neden x86 Assembly?
✨ **En Alt Seviye Kontrol:** İşlemci çekirdeğini ve RAM bellek hücrelerini doğrudan yönetmenizi sağlar.
🛡️ **Tersine Mühendislik (Reverse Engineering) & Siber Güvenlik:** Zararlı yazılım analizi (Malware Analysis), Kernel exploit geliştirme ve zafiyet araştırmalarında zorunludur.
⚡ **Maksimum Performans:** İşletim sistemi çekirdekleri (Kernel), MBR Bootloader ve sürücü (Driver) yazımında kullanılır.
---
🏗️ 2. x86 Yazmaçları (Registers) ⚙️
Yazmaçlar, işlemcinin (CPU) içerisinde bulunan, RAM'den katbekat hızlı çalışan ultra küçük dahili bellek alanlarıdır. 32-bit x86 mimarisinde en sık kullanılan Genel Amaçlı Yazmaçlar (General Purpose Registers):
| Yazmaç (32-bit) | Alt Yapı (16-bit / 8-bit) | Açıklama / Birincil Görevi |
| :--- | :--- | :--- |
| **EAX** | AX (AH / AL) | **Accumulator:** Aritmetik işlemler ve fonksiyon dönüş değerleri. |
| **EBX** | BX (BH / BL) | **Base Register:** Bellek adreslemelerinde temel adres tutucu. |
| **ECX** | CX (CH / CL) | **Count Register:** Döngülerde (Loops) sayaç görevi görür. |
| **EDX** | DX (DH / DL) | **Data Register:** Çarpma/bölme ve G/Ç (I/O) işlemleri. |
| **ESP** | SP | **Stack Pointer:** Yığın bellek alanının en üstünü gösterir. |
| **EBP** | BP | **Base Pointer:** Fonksiyon çerçevelerinin (Stack Frame) taban adresi. |
| **EIP** | IP | **Instruction Pointer:** Bir sonraki çalıştırılacak komutun adresi. |
---
✍️ 3. İlk x86 Assembly Kodu (NASM / Linux Syntax) 💻
Linux ortamında NASM (Netwide Assembler) sözdizimi ile yazılmış ilk kodumuz:
section .data
msg db 'Selam x86 Assembly Dünyasi!', 0xa ; Ekrana basılacak metin ve alt satır karakteri (\n)
len equ $ - msg ; Metnin bayt cinsinden uzunluğu
section .text
global _start ; Bağlayıcıya (Linker) giriş noktasını bildiriyoruz
_start:
; sys_write (Ekrana Yazdırma Sistem Çağrısı)
mov eax, 4 ; Syscall numarası 4 (sys_write)
mov ebx, 1 ; Dosya tanımlayıcı 1 (stdout - standart çıktı)
mov ecx, msg ; Yazdırılacak metnin adresi
mov edx, len ; Yazdırılacak metnin uzunluğu
int 0x80 ; Linux Çekirdek Kesilmesi (Kernel Interrupt)
; sys_exit (Programdan Güvenli Çıkış Sistem Çağrısı)
mov eax, 1 ; Syscall numarası 1 (sys_exit)
mov ebx, 0 ; Çıkış kodu (Exit Status Code 0 - Hata yok)
int 0x80 ; Linux Çekirdek Kesilmesi
🔒 Bu içeriği görmek için giriş yapın