Thread overview
January 13, 2013

Merhaba

RAM deki bir adrese bağlanıp veri okuma ve yazma işlemi nasıl yapılabilir?

Mesela bir oyun var oyun için hile programı yazacağız. Bunun için Cheat Engine ile o an adresleri bulup değiştirebiliyoruz ama bu adreslerin pointer larını alarak bir daha aramakla vakit kaybetmeden direk o adrese veri yazarak oyun hilesi yapmış oluruz.

Bu ve bunun gibi işlemler için RAM deki bir adrese veri yazma ve okuma işlemleri için herhangi bir kütüphane var mı veya yol var mı ?

Teşekkürler.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 13, 2013

Tam olarak öyle değil. örneğin game diye bir oyun olsun game.exe adında çalışsın bu oyun. Biz dışarıdan oyuna müdahale edeceğiz.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 13, 2013

Temelinde çok basit bir iş. Elindeki adrese * işlecini uygulayarak o adresteki değere erişmiş olursun. Aşağıda ortadaki satır bir adresteki int'e 42 değerini veriyor:

int i;

void main()
{
   int* adres = &i;
   *adres = 42;
   assert(i == 42);
}

Zor olan, hangi adrese yazacağını bilebilmektir ve o adresin geçerli bir adres olmasıdır. Eğer bir adresin geçerli olduğundan eminsen ve orada ne büyüklükte veri olduğunu biliyorsan:

   byte* geçerliBirBaytAdresi = /* ... */;
   *geçerliBirBaytAdresi = 0;

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 13, 2013

Bu gibi programların bir çeşidine "game trainer" deniyormuş. Şuradaki C++ programı bunu gerçekleştirmek için Windows'un WriteProcessMemory()'yi kullanıyor:

http://www.mpgh.net/forum/17-game-hacking-tutorials/7511-writing-your-own-c-trainer.html

Linux'ta da vardır; araştırmak gerek. Sonuçta, gdb gibi hata ayıklayıcılar da işlemekte olan bir programa bağlanmayı (attach) ve onun belleğini değiştirmeyi sağlıyorlar.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]