После задавания этого вопроса (C++: я могу выйти из границ памяти своего приложения с указателем?),
Я решил признать, что не возможно изменить память другого приложения с указателями (с современной ОС).
Но если это не возможно, как программам нравится работа ArtMoney и CheatEngine?
Спасибо
Проверьте эти функции: ReadProcessmemory WriteProcessmemory
Чтобы дать простое объяснение - дамп / горячий поиск памяти процесса для указанного значения и его изменение. Вы можете сделать это с помощью простых функций WinAPI или некоторых подпрограмм собственного API (я так полагаю) .
Это, очевидно, причина того, что они терпят неудачу, например, если состояние игры хранится с некоторым шифрованием. Это также причина, по которой вам нужно будет несколько раз изменить свое значение, а затем снова выполнить поиск (чтобы избежать коллизий при поиске, потому что определенно разные блоки памяти могут содержать одно и то же значение).
В Windows можно читать память процесса . В kernel32.dll
есть функция ReadProcessMemory
: http://msdn.microsoft.com/en-us/library/ms680553 (v = VS.85) ) .aspx
Используется большинством приложений, изменяющих память других приложений. Его также можно использовать для связи между двумя процессами (хотя в большинстве случаев это не рекомендуется).
CheatEngine
- отладчик с нетрадиционным интерфейсом.