Buffer Overflow, Stack anlayışı, PUSH və POP Kommandasının İstifadəsi
Buffer Overflow nədir? Stack nədir ? Stack anlayışı nədir? PUSH kommandası nədir? POP kommandası nədir?
Telegr am 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
Stack Nədir?
Stack – lokal dəyişənlərin eləcədə funksiyaların ehtiyacı olan parametrləri özündə saxlayan müvəqqəti yaddaş kimi istifadə olunur.Yadda saxlamaq lazımdır biz hər bir funksiya çağırdıqda onun üçün ayrı stack yaradılır. Stackin genişliyi kommanda (prolog) ilə yaradıldıqdan sonra sabitlənir və funksiya bittiyində isə stack silinir.

Stackin istifadə olunması və idarə edilməsində iki kommanda PUSH və POP kommandaları (prologları) əsas əhəmiyyət daşıyır. Bunlara ayrı-ayrı baxacayıq.
PUSH prologu
PUSH prologunun necə işlədiyini görmək üçün bir nümunə ilə həyata keçirəcəyik. PUSH EBP instruksiyası zamanı nə baş verir, EBP dəyərinin 0589AFCC olduğunu biliriksə? 0589AFCC registr dəyəri stackin yuxarısına yazılır, ESP dəyəri də uyğun olaraq yuxarıya yerləşir. Burada yuxarı dedikdə, daha aşağı səviyyəli adres hesab edilir.

Şəkildən göründüyü kimi siz nə qədər dəyişən əlavə edərək yuxarı qalxdıqca adreslərin sayı azalır. Adresslərin azalması isə Buffer daşması məsələlərində önəm daşıyır.
POP Prologu
POP kommandası PUSH kommandasının əksini həyata keçirəcəyini bildirir. Məsələn təsəvvür edəkki, POP EAX instruksiyası var, o zaman 0589AFCC registr dəyəri stackin üst hissəsində silinəcəkdir. Eyni zamanda 0589AFCC registr dəyəri EAX registrinə köçürüləcəkdir.

Şəkildə də mərhələli şəkildə stack-dan məlumatların silindiyini görə bilərik.
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