- Katılım
- 23 Ocak 2023
- Mesajlar
- 172
- Tepkime puanı
- 2,465
- Konum
- public_html
- İlgi Alanlarınız
- exploiter
- Cinsiyet
-
- Erkek
Uzun aradan sonra selamun aleyküm dayıkolar
Çoğu oyundaki bug mantığını temel olarak anlatmaya geldim size canlar.
Şimdi basit bir bug olan bir oyun açıcaz
bu oyunda bonus kısmı size ait olan süre zarfı fakat bu oyunda 22.seviyeye gelince size 4 saniye gibi kısa bir süre veriyor ve bölümün geçilmesini imkansız hale getiriyor bunun sebebi oyunu yazan enayi 1byte(8 bit)'lik alana kaldıramayacağı değeri veriyor.Oyunun süre mantığı 10x(seviye+4) olarak gidiyor. 22.seviyede sisteme girilen değer 10x26dan 260 oluyor ama kodlayan arkadaş 1 bytelık bir yer açmış bu süre kısmına süre kısmına girilebilecek kısım yani 1 byte'ın karşılığı 0-255 arasındadır.
0-255 arasındaki değeri geçip 260 olduğunda sistem otomatik olarak kendini tamamlamak için 255+1 diye değer verir ve çıkan sonucu elimizdeki sonuca böler elde edilen kalanı da kendine değer olarak alır
yani 22.seviye 4 saniye olmasının sebebi -> 26x10 = 260, sistemin karşıladığı değer 255+1 = 256
260/256'dan kalan 4 geliyor ve kalanı kendi değerine yazdırıyor yazılımsal olarak anlatmam gerekirse
burda biz unsigned shortun sahip olabileceği en büyük değer olan 65535 değerini verdik ve sonra bu değeri 2 arttırdık yani alabileceği değerden daha büyük değer aldırdık
ve çıkan sonucumuzda aşağıdaki gibi olucaktır
x in değeri artık 1 oldu çünkü max değerine 1 ekleyip böldü ve kalanını kendi üstüne yazıp geri kalanını sildi buda bu tür oyunlarda bug a sebep olur.
Çoğu oyundaki bug mantığını temel olarak anlatmaya geldim size canlar.
Şimdi basit bir bug olan bir oyun açıcaz
bu oyunda bonus kısmı size ait olan süre zarfı fakat bu oyunda 22.seviyeye gelince size 4 saniye gibi kısa bir süre veriyor ve bölümün geçilmesini imkansız hale getiriyor bunun sebebi oyunu yazan enayi 1byte(8 bit)'lik alana kaldıramayacağı değeri veriyor.Oyunun süre mantığı 10x(seviye+4) olarak gidiyor. 22.seviyede sisteme girilen değer 10x26dan 260 oluyor ama kodlayan arkadaş 1 bytelık bir yer açmış bu süre kısmına süre kısmına girilebilecek kısım yani 1 byte'ın karşılığı 0-255 arasındadır.
0-255 arasındaki değeri geçip 260 olduğunda sistem otomatik olarak kendini tamamlamak için 255+1 diye değer verir ve çıkan sonucu elimizdeki sonuca böler elde edilen kalanı da kendine değer olarak alır
yani 22.seviye 4 saniye olmasının sebebi -> 26x10 = 260, sistemin karşıladığı değer 255+1 = 256
260/256'dan kalan 4 geliyor ve kalanı kendi değerine yazdırıyor yazılımsal olarak anlatmam gerekirse
burda biz unsigned shortun sahip olabileceği en büyük değer olan 65535 değerini verdik ve sonra bu değeri 2 arttırdık yani alabileceği değerden daha büyük değer aldırdık
ve çıkan sonucumuzda aşağıdaki gibi olucaktır
x in değeri artık 1 oldu çünkü max değerine 1 ekleyip böldü ve kalanını kendi üstüne yazıp geri kalanını sildi buda bu tür oyunlarda bug a sebep olur.