微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我不能在 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 举报,一经查实,本站将立刻删除。