Недопустимый дескриптор ReadProcessMemory - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь прочитать значение из другого процесса, используя Python.

Я встречал этот ответ , хотя, похоже, он не работает.

Мой код:

from ctypes import *
from ctypes.wintypes import *
OpenProcess = windll.kernel32.OpenProcess
ReadProcessMemory = windll.kernel32.ReadProcessMemory
CloseHandle = windll.kernel32.CloseHandle
PROCESS_ALL_ACCESS = 0x1F0FFF
pid = 4580
address = 0x04782FF8
buffer = c_uint()
bufferSize = sizeof(buffer)
bytesRead = c_ulong(0)
processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
if ReadProcessMemory(processHandle, address, buffer, bufferSize, byref(bytesRead)):
    print("Success:", buffer)
else:
    print("Failed.")

CloseHandle(processHandle)

GetLastError(), кажется, возвращает 6, что означает, что дескриптор недействителен.

Хотя OpenProcess() возвращает ненулевое значение, а GetLastError() ничего об этом не показывает.

Я попытался отредактировать первый аргумент, переданный в OpenProcess() (который я сделал 0x0010), но все еще безрезультатно.

1 Ответ

0 голосов
/ 05 мая 2018

Идентификатор процесса был dec, а не hex, что сломало несколько вещей.

Мне также пришлось заменить c_uint () на create_string_buffer (4) для буфера.

Кажется, теперь работает нормально!

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