我不能在 python 中执行 WriteProcessMemory,为什么?

问题描述

我编写了一些基于 stackoverflow 代码代码,只是为了读取内存并与单个值进行比较。当为真时,我需要将此值替换为 0 或其他值。但是我的 writeprocessmemory 不起作用,我不知道为什么。 结果的输出值为 1 - 这意味着它正在工作 但是 result2 的输出值为 0 - 表示它不起作用

import ctypes as c
from ctypes import wintypes as w
import winsound
import time

pid = 7740 
Ids_pointer = [0x016E3E60,0x015E47E0,0x013E4A90,0x011E4AB8,0x016E4AB0,0x014E4B08,0x012B40C0]
k32 = c.windll.kernel32
OpenProcess = k32.OpenProcess
OpenProcess.argtypes = [w.DWORD,w.BOOL,w.DWORD]
OpenProcess.restype = w.HANDLE

ReadProcessMemory = k32.ReadProcessMemory
ReadProcessMemory.argtypes = [w.HANDLE,w.LPCVOID,w.LPVOID,c.c_size_t,c.POINTER(c.c_size_t)]
ReadProcessMemory.restype = w.BOOL


WriteMemory = k32.WriteProcessMemory
WriteMemory.argtypes = [w.HANDLE,c.POINTER(c.c_size_t)]
WriteMemory.restype = w.BOOL

GetLastError = k32.GetLastError
GetLastError.argtypes = None
GetLastError.restype = w.DWORD

CloseHandle = k32.CloseHandle
CloseHandle.argtypes = [w.HANDLE]
CloseHandle.restype = w.BOOL
e = GetLastError()


processHandle = OpenProcess(0x0010,False,pid)
processHandle2 = OpenProcess(0x0020,pid)


while 1:
    for q in range (0,7):
        data = c.c_ulong()
        bytesRead = c.c_ulonglong()
        result = ReadProcessMemory(processHandle,Ids_pointer[q],c.byref(data),c.sizeof(data),c.byref(bytesRead))
        cmd = data.value
        print(cmd)
        print('result: {},err code: {},bytesRead: {}'.format(result,e,bytesRead.value))

        if cmd == 1919902817:
            for i in range (0,7):
                result2 = WriteMemory(processHandle2,Ids_pointer[i],None)
                print('result: {},bytesRead: {}'.format(result2,bytesRead.value))

CloseHandle(processHandle)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)