Python中是否有一个好用且易于使用的模块用于编辑内存?

7

是否有Python中内置的用于编辑内存的好用且易用的模块?或者说,是否存在这样的模块?

我正在寻找一种连接到进程并从中读取/写入的方法。就像Cheat Engine一样的工作方式。 这里是C++中它如何工作的示例


什么是内存编辑?是指哪个内存,什么类型的内存以及采用何种方式进行编辑? - user395760
1
您可以使用ctypes模块来实现。具体地说,需要用到ctypes.from_address()函数。 - martineau
2
https://dev59.com/x2sy5IYBdhLWcg3w4x_c - Sheena
1个回答

9
花了我一些时间才找到了这种方法,但这就是我想出来的方法!
from ctypes import *
from ctypes.wintypes import *

pid = 0 #the pid of the process, aquired earlier by hand

address = 0x0000 #where to read from while in the memory

OpenProcess = windll.kernel32.OpenProcess
ReadProcessMemory = windll.kernel32.ReadProcessMemory
CloseHandle = windll.kernel32.CloseHandle


PROCESS_ALL_ACCESS = 0x1F0FFF

datadummy = b'.'*200
buffer = c_char_p(datadummy)
bufferSize = len(buffer.value)
bytesRead = c_ulong(0)

processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, int(PID))

ReadProcessMemory(processHandle, address, buffer, bufferSize, byref(bytesRead))

CloseHandle(processHandle)

为了写入内存,我只需要添加WriteProcessMemory = windll.kernel32.WriteProcessMemory,然后调用它即可。


当我运行print(readprocessmemory(...))时,它会打印0,我认为我应该改变datadummy = b'.'*200、buffer = c_char_p(datadummy)、bufferSize = len(buffer.value)和bytesRead = c_ulong(0),但我不知道用什么来替换。 - extreme4all
@extreme4all ReadProcessMemory将数据写入缓冲区'buffer',返回值为错误代码(0表示无错误)。 - Willy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接