Merhaba arkadaşlar bu konuda sizlere Cheat Engine 'de aobscan nasıl kullanılır anlatmaya çalışacağım;
Burda ful örenek var bunun üstünden anlatalım
Şimdi "aobscan()" girilen ardışık bytes larla hedeflenen adresi bulur. İçine iki tane parametre alır, bunlar birisi adrese verilen isim diyebiliriz diğeri ise bytes, yani kodumuz şöyle olacak;
aobscan(mermi,89 8e ? ? ? ? 8b 17 55)
Bu adımdan sonra Auto Assamble(Ctrl+A) ekranımızı açalım ve yukardaki script örneğini yapıştıralım.
(Bu pattern'i de SigMaker yardımı ile bulduk) = 89 8e ? ? ? ? 8b 17 55
şimdi buradan devam edersek bildiğiniz üzere bu "?" kısımlar sürekli değişen kısımlar, sürekli değişen dediğimden kastım oyunu tekrar başlattığımızda farklı bir değer alır.
Peki biz bunu nerede kullanabiliriz derseniz bu pointerları bulunmayan adresler için bir alternatiftir.
Burada bizim nop lamamız gereken ilk satır (89 8E D8040000 )fakat biz bunu memory de ararken bir den fazla yerde bu değer olabileceği için daha fazla bytes ile arama yapıyoruz. Yani bunlardan hemen sonra gelen 2 satırı da aldık.
Tamam, biz burda 89 8E D8040000 <- 6 byte'i nop layacağız yani 90 90 90 90 90 90 olacak neden 6 çünkü "byte"lar ikişerli ayrılır.
aobscan(mermi,89 8e ? ? ? ? 8b 17 55)
mermi:
db 90
db 90
db 90
db 90
db 90
db 90
eğer fonksiyonumuzdan daha fazla yer "nop" larsak oyun CRASH lanabilir. Buna dikkat etmemiz gerekiyor.
daha sonra
[DISABLE]
mermi:
db 89 8e ? ? ? ? 8b 17 55
ile pasif konuma yani eski haline döndürebiliriz.
Umarım anlaşılmıştır bu konuyla ilgilenenlere yardımcı olmak isterim olabildiğince.
Videolu anlatım
Bağlantıları görmek için lütfen
Giriş Yap
Burda ful örenek var bunun üstünden anlatalım
[ENABLE]
aobscan(mermi,89 8e ? ? ? ? 8b 17 55)
mermi:
db 90
db 90
db 90
db 90
db 90
db 90
[DISABLE]
mermi:
db 89 8e ? ? ? ? 8b 17 55
aobscan(mermi,89 8e ? ? ? ? 8b 17 55)
mermi:
db 90
db 90
db 90
db 90
db 90
db 90
[DISABLE]
mermi:
db 89 8e ? ? ? ? 8b 17 55
Şimdi "aobscan()" girilen ardışık bytes larla hedeflenen adresi bulur. İçine iki tane parametre alır, bunlar birisi adrese verilen isim diyebiliriz diğeri ise bytes, yani kodumuz şöyle olacak;
aobscan(mermi,89 8e ? ? ? ? 8b 17 55)
Bu adımdan sonra Auto Assamble(Ctrl+A) ekranımızı açalım ve yukardaki script örneğini yapıştıralım.
Kod:
server.CBuyZone::BuyZoneTouch+BAF2 - 89 8E D8040000 - mov [esi+000004D8],ecx
server.CBuyZone::BuyZoneTouch+BAF8 - 8B 17 - mov edx,[edi]
server.CBuyZone::BuyZoneTouch+BAFA - 55 - push ebp
(Bu pattern'i de SigMaker yardımı ile bulduk) = 89 8e ? ? ? ? 8b 17 55
şimdi buradan devam edersek bildiğiniz üzere bu "?" kısımlar sürekli değişen kısımlar, sürekli değişen dediğimden kastım oyunu tekrar başlattığımızda farklı bir değer alır.
Peki biz bunu nerede kullanabiliriz derseniz bu pointerları bulunmayan adresler için bir alternatiftir.
Burada bizim nop lamamız gereken ilk satır (89 8E D8040000 )fakat biz bunu memory de ararken bir den fazla yerde bu değer olabileceği için daha fazla bytes ile arama yapıyoruz. Yani bunlardan hemen sonra gelen 2 satırı da aldık.
Tamam, biz burda 89 8E D8040000 <- 6 byte'i nop layacağız yani 90 90 90 90 90 90 olacak neden 6 çünkü "byte"lar ikişerli ayrılır.
aobscan(mermi,89 8e ? ? ? ? 8b 17 55)
mermi:
db 90
db 90
db 90
db 90
db 90
db 90
eğer fonksiyonumuzdan daha fazla yer "nop" larsak oyun CRASH lanabilir. Buna dikkat etmemiz gerekiyor.
daha sonra
[DISABLE]
mermi:
db 89 8e ? ? ? ? 8b 17 55
ile pasif konuma yani eski haline döndürebiliriz.
Umarım anlaşılmıştır bu konuyla ilgilenenlere yardımcı olmak isterim olabildiğince.
Videolu anlatım