def read_bytes(self, address, bytes = 4):
address = int(address)
if not self.isProcessOpen:
raise ProcessException("Can't read_bytes(%s, bytes=%s), process %s is not open" % (address, bytes, self.pid))
buffer = create_string_buffer(bytes)
bytesread = c_ulong(0)
data = b''
length = bytes
_address = address
_length = length
while length:
if not windll.kernel32.ReadProcessMemory(self.h_process, address, buffer, bytes, byref(bytesread)):
if bytesread.value:
data += buffer.raw[:bytesread.value]
length -= bytesread.value
address += bytesread.value
if not len(data):
raise ProcessException('Error %s in ReadProcessMemory(%08x, %d, read=%d)' % (win32api.GetLastError(),
address,
length,
bytesread.value))
return data
data += buffer.raw[:bytesread.value]
length -= bytesread.value
address += bytesread.value
return data
评论列表
文章目录