Ответ 1
Я уверен, что эти программы притворяются отладчиками. В Windows я начинал с DebugActiveProcess() и оттуда.
О, и очень полезная функция ReadProcessMemory() (и WriteProcessMemory()).
Если бы вы могли помочь мне с этой дилеммой, я имею. Теперь я знаю C\С++, я знаю asm, я знаю о dll injection, я знаю об адресации виртуальной памяти, но я просто не могу понять, как программное обеспечение, такое как CheatEngine и другие, удается изменить значение переменной в другом процессе.
Для тех, кто не знает, сторонние инструменты чит-движка могут сканировать значения в пространстве памяти программы и определять местоположение переменной с заданным значением и изменять ее.
Мой вопрос: как они это делают?
Учитывая адрес, если я должен написать код C, как я могу изменить значение на этом адресе, принадлежащем другому процессу, без получения недопустимой ошибки адресации?
Спасибо.
Я уверен, что эти программы притворяются отладчиками. В Windows я начинал с DebugActiveProcess() и оттуда.
О, и очень полезная функция ReadProcessMemory() (и WriteProcessMemory()).
В unix: ptrace()
Вы не можете сделать это со стандартными C или С++ - вам нужно использовать определенные функции операционной системы. Поэтому вам нужно сообщить нам, какую ОС вы интересуете.
Вы также можете быть заинтересованы в Detours:
Программное обеспечение, предназначенное для обхода Win32 и API-интерфейсов приложений.