Как изменить значение в памяти другого процесса - PullRequest
13 голосов
/ 06 июня 2009

Если бы вы могли помочь мне с этой дилеммой, которая у меня есть. Теперь я знаю C \ C ++, я знаю asm, я знаю о внедрении dll, я знаю об адресации виртуальной памяти, но я просто не могу понять, как такие программы, как CheatEngine и другие, могут изменять значение переменной в другом процессе.

Для тех, кто не знает, сторонние инструменты чит-движка могут сканировать значения в памяти программы и определять местоположение переменной с заданным значением и изменять его.

У меня вопрос, как они это делают?

Учитывая адрес, если бы я должен был написать код на C, как я мог бы изменить значение по этому адресу, принадлежащему другому процессу, без получения ошибки неверной адресации?

Спасибо.

Ответы [ 4 ]

12 голосов
/ 06 июня 2009

Я вполне уверен, что эти программы притворяются отладчиками. В Windows я бы начал с DebugActiveProcess () и пошел бы оттуда.

Да, и очень полезная функция ReadProcessMemory () (и WriteProcessMemory ()).

4 голосов
/ 06 июня 2009

В Unix: ptrace ()

3 голосов
/ 06 июня 2009

Вы не можете сделать это со стандартным C или C ++ - вы должны использовать специфические функции операционной системы. Поэтому вы должны сообщить нам, какая ОС вас интересует.

2 голосов
/ 06 июня 2009

Вас также может заинтересовать Объезд :

Программное обеспечение для обхода Win32 и прикладных API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...