Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions pvz/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,7 @@ def read_memory(data_type, *address, array=1):
size = ctypes.sizeof(buffer)
success = ReadProcessMemory(pvz_handle, offset, ctypes.byref(buffer), size, ctypes.byref(bytes_read))
if success == 0 or bytes_read.value != size:
memory_lock.release()
critical("读取内存失败, 错误代码 %d." % GetLastError())

else:
Expand All @@ -575,6 +576,7 @@ def read_memory(data_type, *address, array=1):
buff = ctypes.create_string_buffer(size) # 目标数据缓冲
success = ReadProcessMemory(pvz_handle, offset, ctypes.byref(buff), size, ctypes.byref(bytes_read))
if success == 0 or bytes_read.value != size:
memory_lock.release()
critical("读取内存失败, 错误代码 %d." % GetLastError())

result = struct.unpack(fmt_str, buff.raw)
Expand Down Expand Up @@ -627,6 +629,7 @@ def write_memory(data_type, values, *address):
size = ctypes.sizeof(buffer)
success = ReadProcessMemory(pvz_handle, offset, ctypes.byref(buffer), size, ctypes.byref(bytes_read))
if success == 0 or bytes_read.value != size:
memory_lock.release()
critical("读取内存失败, 错误代码 %d." % GetLastError())

else:
Expand All @@ -637,6 +640,7 @@ def write_memory(data_type, values, *address):
buff.value = struct.pack(fmt_str, *values) # 将目标数据载入缓冲区
success = WriteProcessMemory(pvz_handle, offset, ctypes.byref(buff), size, ctypes.byref(bytes_written))
if success == 0 or bytes_written.value != size:
memory_lock.release()
critical("写入内存失败, 错误代码 %d." % GetLastError())

memory_lock.release()
Expand Down Expand Up @@ -733,6 +737,12 @@ def asm_push(code):
asm_add_dword(code)


# push 0x12
def asm_push_byte(code):
asm_add_byte(0x6A)
asm_add_byte(code)


# mov exx, 0x12345678
asm_mov_exx_code = {
"eax": [0xB8],
Expand Down