(unutmayın bu buffer işinde süper değilim hatta kötüyüm sadece ingilizce dökümanlardan çıkardığım mantığı anlatmaya çalışıyorum)
işte linuxta ki bir misali modülümüz ve içinde şu kodu barındırıyor olsun (kodu .c uzantılı kaydedin) :
void main(int argc, char **argv, char **envp) {
char array[200];
strcpy(array,argv[1]);
}
kodumuzu kaydedip derliyoruz nasılmı şöyle:
zorlu@ZoRLu:~/Masaüstü$ gcc buf.c -o buf1
buf.c: In function 'main':
buf.c:4: UYARI: 'strcpy' yerleşik işlevinin uyumsuz örtük bildirimi
buf.c:1: UYARI: 'main' için dönüş türü 'int' değil
zorlu@ZoRLu:~/Masaüstü$ chmod 777 buf1
ve derledikten sonra chmod ayarınıda yapıp çalıştırıyoruz:
zorlu@ZoRLu:~/Masaüstü$ ./buf1
ve şu hatayı alıyoruz:
Segmentation fault ( yani core dumped)
şimdi küçük bi işlemle dosyamıza veri gönderiyoruz:
şekilde gibi belli bir veriden sonra buffer olayı gercekleşiyor

şimdi core dumped hatasını alabileceğimiz veri miktarını buluyoruz ve ben buldum kurduğum ubuntuda:
zorlu@ZoRLu:~/Masaüstü$ ./buf1 `perl -e 'print "A" x 362'`BBBB
Segmentation fault
işte asıl işlemler bundan sonra başlıyor yok efenim eax, jmp vs vs daha okadar ileri gidemedim. umarım azda olsa sizde mantığını anlarsınız
0 yorum:
Yorum Gönder