Prosessorun Registerləri - Buffer Overflow Hazırlığı
Prosessorun Registerləri nədir?Buffer Overflow nədir? Prosessorun Registerləri ilə Assembler dilini anlamaq? Register nədir?
Telegram kanalına qoşularaq bu və digər mövzular üzrə quizlərdə iştirak edə bilərsiniz!
Telegram (Kanal): https://t.me/xakeraz_official
Prosessorun Registerləri
Assembler dilini anlamaq üçün bizə prosessorun registerləri barədə məlumat lazım olacaqdır. O digər dillər kimi (Python, C+ və s.) standart proqramlaşdırma dili deyildir.Bu dil prosessora və yaddaş sahələrinə daha yaxındır.Digər dillərdə yazılan proqramlar icra edilməzdən özlərində assembler dilinə çevirlir və elə icra olunur. Assembler dilində proqram yazmaq isə birbaşa maşın dilinə çevrilir.
Öyrənməli olduğumuz əsas mövzulardan biri prosessorun registerləridir.Onlar məlumatların müvəqqəti saxlanmasına və idarə olunmasında istifadə olunur.
Prosessorun Ümumi Registerləri

| EAX / RAX | Akkumulyator registri | Əsas hesablamalar üçün istifadə olunur |
| EBX / RBX | Baza registri | Məlumat saxlayan baza kimi istifadə olunur |
| ECX / RCX | Sayğac registri | Dövrələr və loop üçün sayğac kimi işləyir |
| EDX / RDX | Məlumat registri | Hesablamalarda əlavə məlumat daşıyır |
Diqram və şəkildə AX BX CX və DX haqqında məlumatlar verilmişdir.
İlk register olan AX akkumlyator registri adlanır və toplama, çıxma , vurma və bölmə kimi əməliyyatları yerinə yetirir.64 bit prosessorlarda biz RAX,32 bit prosessorlarda isə EAX registrlərindən isitfadə olunur. Şəkildə aşağı hissədə kiçik və böyük 8 bit olan AH və AL görə bilərik.
2-ci register BX – baza registerdir və onu məlumatın saxlanması üçün istifadə edə bilərik.
CX registri loop və dövrələrdə sayğac kimi istifadə olunur.
DX – məlumat registridir.Bu register EAX registeri ilə birlikdə işləyir və riyazı əməliyyatları yerinə yetirir.
Bütün bu məlumatları əzbər şəklində bilmək lazım deyildir. Sadəcə bilmək lazımdır ki, ümumi registerlər məlumatların işlənməsində istifadə olunur.
İndeks Registerləri
Digər növ registerlərilə indeks registerlərdir. RSİ -mənbə registri, RDİ – hədəf registri.Onlar çox hallarda kommanda sətrində dəyişiklik üçün istifadə olunur:ESİ mənbəni , EDİ isə hədəfi bildirir.
| ESI / RSI | Mənbə indeks registri | String əməliyyatlarında mənbəni göstərir |
| EDI / RDI | Təyinat indeks registri | String əməliyyatlarında hədəfi göstərir |
İşarət Registerləri
İşarət registerləri buferin aşması exploitində əsas istifadə olunur və tətbiqi böyükdür.
İlk iki register əsas göstərici və yığın göstəricisidir.(Base pointer və Stack pointer ). Məhz bu iki register ilə stack idarə olunur. Base pointer stack üçün baza yerini göstərir, Stack Pointer – yığının yerini ölçüsünü bildirir.
| ESP / RSP | Stack pointer (Yığın göstəricisi) | Stack-in (yığın) yerini göstərir |
| EBP / RBP | Base pointer (Əsas göstərici) | Stack frame üçün baza adresi |
| EIP / RIP | Instruction pointer (Əmr göstəricisi) | CPU-nun icra edəcəyi növbəti əmrin adresi |
3-cü register isə Instruction pointer CPU-nun icra edəcəyi növbəti əmrin adresi bildirir.
Segment registerləri
Segment registerləri – exploit edilməsi üçün demək olarki istifadə olunmayan registerlərdir.Assembler dilini başa düşmək üçün bu regsisterlərində nəyə görə var olduğunu bilmək lazımdır.
| Register | Adı | Tərcüməsi | Təyinatı |
|---|---|---|---|
| CS | Code Segment | Kod seqmenti | İcra ediləcək kodun saxlandığı yaddaş sahəsi |
| DS | Data Segment | Məlumat seqmenti | Global dəyişənlər, massivlər və s. üçün |
| SS | Stack Segment | Yığın seqmenti | stack əməliyyatları üçün (push/pop və s.) |
| ES | Extra Segment | Əlavə seqment | Əlavə məlumat üçün (string əməliyyatlarında) |
| FS | FS Segment | FS seqmenti | OS və threading üçün istifadə olunur (Windows-da TEB) |
| GS | GS Segment | GS seqmenti | Linux kernel data və ya TLS (thread local storage) üçün |
Bayraq Registerləri
| Bit | Ad | Tərcüməsi | İzahı |
|---|---|---|---|
| 0 | CF (Carry Flag) | Daşıma bayrağı | Toplama və çıxmada daşıma olub olmadığını göstərir |
| 2 | PF (Parity Flag) | Paritet bayrağı | Nəticənin bitləri cütdürsə 1, təkdirsə 0 olur |
| 4 | AF (Auxiliary Carry Flag) | Yardımçı daşıma | BCD əməliyyatları üçün istifadə olunur |
| 6 | ZF (Zero Flag) | Sıfır bayrağı | Əməliyyatın nəticəsi sıfırdırsa 1 olur |
| 7 | SF (Sign Flag) | İşarə bayrağı | Mənfi nəticə varsa 1, müsbət nəticə varsa 0 |
| 8 | TF (Trap Flag) | Tələ bayrağı | Hər əmrdən sonra interrupt yaradır (debug üçün) |
| 9 | IF (Interrupt Enable Flag) | Interrupt-a icazə | 1 olarsa hardware interrupt-lar qəbul edilir |
| 10 | DF (Direction Flag) | İstiqamət bayrağı | String əmrlərində istiqamət (artım/azalma) təyin edir |
| 11 | OF (Overflow Flag) | Aşma bayrağı | Arithmetic overflow (məs: +127 → -128) baş veribsə 1 olur |
32-bit sistemlərdə bu registr EFLAGS, 64-bit sistemlərdə isə RFLAGS adlanır.
Bayraq registerləri (flag register) həm də idarəedici registerlərdə adlanır.
Bizi izləyin:
Telegram (Kanal): https://t.me/xakeraz_official
Paylaşımların səliqəli yığılmış halı: https://t.me/xakerazgroup
Fikir və şərhləriniz : https://t.me/xakerazchat