Как запустить внешнюю программу, передав ей адреса памяти для чтения / записи? - PullRequest
0 голосов
/ 06 сентября 2018

Допустим, у меня есть две программы, Game.exe и Probe.exe

Обе программы, которые я создаю (это не сценарий, когда я пытаюсь взломать исполняемый файл, который мне не принадлежит). Я хочу, чтобы Probe запускался Game и получал адреса определенных глобальных переменных в пределах Game, чтобы Probe мог читать и записывать их для целей отладки.

Какой безопасный способ запустить Probe из Game и дать ему действительные адреса в памяти Game, в которую он может читать / записывать? Если это невозможно сделать с помощью одних только адресов, каков может быть наименее навязчивый способ сделать это возможным?

1 Ответ

0 голосов
/ 06 сентября 2018

Game.exe может передавать нужные адреса памяти в качестве параметров командной строки при запуске Probe.exe.

Probe.exe может получить эти адреса памяти из командной строки, а затем использовать ReadProcessMemory() и WriteProcessMemory() для доступа к ним. Чтобы это работало, Probe.exe также должен получить HANDLE для процесса Game.exe:

  • Game.exe может передать свой идентификатор процесса в качестве параметра командной строки, тогда Probe.exe может передать этот идентификатор в OpenProcess().

Или

При этом, более безопасный вариант будет просто хранить нужные переменные в блоке памяти, который Game.exe и Probe.exe могут совместно использовать, используя CreateFileMapping() и MapViewFromFile().

...