From 1aa3f064601e5115dd9ef9403350782bd59e9f2d Mon Sep 17 00:00:00 2001 From: LondonClass <43668206+LondonClass@users.noreply.github.com> Date: Sun, 21 Aug 2022 22:46:43 +0800 Subject: [PATCH 1/4] Update core.py --- pvz/core.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pvz/core.py b/pvz/core.py index ecaf447..08929c7 100644 --- a/pvz/core.py +++ b/pvz/core.py @@ -733,6 +733,12 @@ def asm_push(code): asm_add_dword(code) +# push byte +def asm_push(code): + asm_add_byte(0x6a) + asm_add_dword(code) + + # mov exx, 0x12345678 asm_mov_exx_code = { "eax": [0xB8], From cba697be20b62c9884a6281f7a1dd195f1813fb6 Mon Sep 17 00:00:00 2001 From: LondonClass <43668206+LondonClass@users.noreply.github.com> Date: Sun, 21 Aug 2022 23:01:26 +0800 Subject: [PATCH 2/4] Update core.py --- pvz/core.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pvz/core.py b/pvz/core.py index 08929c7..ab74461 100644 --- a/pvz/core.py +++ b/pvz/core.py @@ -733,10 +733,10 @@ def asm_push(code): asm_add_dword(code) -# push byte -def asm_push(code): +# push 0x12 +def asm_push_byte(code): asm_add_byte(0x6a) - asm_add_dword(code) + asm_add_byte(code) # mov exx, 0x12345678 From 335fefba6a33ee0a3d3e33d44f1b71a22238c36b Mon Sep 17 00:00:00 2001 From: LondonClass <43668206+LondonClass@users.noreply.github.com> Date: Mon, 22 Aug 2022 09:53:01 +0800 Subject: [PATCH 3/4] Update core.py --- pvz/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvz/core.py b/pvz/core.py index ab74461..f1d1e98 100644 --- a/pvz/core.py +++ b/pvz/core.py @@ -735,7 +735,7 @@ def asm_push(code): # push 0x12 def asm_push_byte(code): - asm_add_byte(0x6a) + asm_add_byte(0x6A) asm_add_byte(code) From f9622dcb8935614182db0dd3ba8a259a4d33d39b Mon Sep 17 00:00:00 2001 From: LondonClass <43668206+LondonClass@users.noreply.github.com> Date: Sat, 27 Aug 2022 22:45:36 +0800 Subject: [PATCH 4/4] Update core.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 抛出异常前,应当先解除内存锁,否则再次调用时会死锁 --- pvz/core.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pvz/core.py b/pvz/core.py index f1d1e98..12b8040 100644 --- a/pvz/core.py +++ b/pvz/core.py @@ -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: @@ -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) @@ -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: @@ -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()