читать и писать из другого процесса - PullRequest
2 голосов
/ 01 января 2012

Я хочу иметь возможность читать и писать из памяти другого процесса.Я вызвал функции Readprocessmemory() и WriteProcessmemory() из Kernel32.dll и использовал функцию GetProcessByName() для поиска процесса.Это успешно.

Я видел пример для взятия функции readprocessmemory() и ее объявления после вызова из kernel32.dll, но я не понимаю, как это работает - как мне использовать функцию для чтения издругой процесс?Буду признателен за пример.

1 Ответ

1 голос
/ 07 марта 2012

Для чтения и записи памяти в другой процесс вам необходимо использовать функции ReadProcessMemory и WriteProcessMemory, предоставляемые kernel32.Если вы используете C #, вам нужно использовать PInvoke для импорта этих функций в ваш текущий процесс.

В общем, вам нужно сделать следующее:

  • Определить, какой процессэто то, что вы хотите прочитать / ввести
  • Вызовите OpenProcess (), чтобы получить дескриптор процесса.Вы хотите отправить GENERIC_READ |GENERIC_WRITE в качестве флагов для этого, и вы получите обратно HPROCESS, который вам нужно проверить, не NULL.
  • Решите, где вы хотите читать из внешнего процесса (это указатель внешнего процесса).Вам также необходимо решить, сколько байтов нужно прочитать.
  • Выделите столько байтов в текущем процессе для хранения результата чтения.
  • Вызовите ReadProcessMemory, передавая в HPROCESS, который вы открыли,указатель стороннего процесса для чтения из другого процесса, указатель на ваш локальный буфер и число байтов, которые нужно прочитать из стороннего процесса в ваш локальный буфер.

Как только это произойдетГотово, вы можете посмотреть на свой локальный буфер, и вы увидите данные, которые раньше были во внешнем процессе, и жизнь будет хорошей.

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