2009-06-06 18 views
13

Bu ikilemde bana yardımcı olabilirseniz. Şimdi, C \ C++ biliyorum, asm biliyorum, dll enjeksiyonu hakkında biliyorum, sanal bellek adresleme hakkında biliyorum, ama CheatEngine ve diğerleri gibi yazılımının bir değişkenin değerini diğerinde nasıl değiştirdiğini anlayamıyorum süreci.Başka bir işlemin bellek alanında bir değer nasıl değiştirilir

Bilmeyenler için, 3. taraf hile motoru araçları, bir programın bellek alanındaki değerleri tarayabilir ve belirli bir değere sahip bir değişkenin yerini belirleyebilir ve değiştirebilir.

Benim sorum şu, bunu nasıl yapıyorlar?

Bir adres verildiğinde, C kodu yazacak olsaydım, geçersiz bir adresleme hatası almadan başka bir işleme ait adresin değerini nasıl değiştirebilirim?

Teşekkürler.

cevap

12

Bu programların hata ayıklayıcı gibi davrandığından kesinlikle eminim. Windows'da DebugActiveProcess() ile başlayıp oradan giderdim.

Çok kullanışlı ve ReadProcessMemory() işlevini (ve WriteProcessMemory()) arıyorum.

+0

sayesinde ben ne arıyordu olduğunu iyi çalışıyor. Eğer bunu ayıklama bittikten sonra ölmeye ayıklama ediyoruz sürecini istemiyorsanız() DebugSetProcessKillOnExit aramayı unutma –

+0

(yapıldığında bu çözümü okuma Diğerleri için DebugActiveProcessStop kullandığınızdan emin olun). – mrduclaw

3

Bunu Standart C veya C++ ile yapamazsınız - işletim sistemine özgü özellikleri kullanmanız gerekir. Yani ilgilendiğiniz hangi işletim bize bildirmeniz gerekir

unix üzerinde
+0

i belirtmedi Maalesef ı Windows ilgileniyorum, ancak Linux için çok iyi olurdu, ben meraklı diğer sürecinin hafızasını da ptrace değiştirebilir da –

4

. Ayrıca Detours ilginizi çekebilir ptrace()

+0

orada denemek için ben? – Matthew

+0

Hangi işlemin aksine? – Thomas

2

: Win32 ve uygulama API'leri detouring için paketlenmiş

Yazılımı. Bu

+1

http://www.codingthewheel.com/archives/how-i-built-a-working-online-poker-bot-7 detouring hakkında bilgi edinin. Eğlenceli deney ASCII grafiti bomba. Çok kötü değil \ serbestçe 64 bit için kullanılabilir –

İlgili konular