import subprocess import time import pymem import pymem.process import pymem.pattern def mod_mem(pid): # 打开进程 pm = pymem.Pymem(pid) module = pymem.process.module_from_name(pm.process_handle, 'WeChatWin.dll') # 查找并替换数值 new_value = 0x63090A13 # 在内存中搜索旧值 old_pattern = b'\x1E\x00\x07\x63' addresses = pymem.pattern.pattern_scan_module(pm.process_handle, module, old_pattern, return_multiple=True) for address in addresses: pm.write_int(address, new_value) print(f'Value at address {hex(address)} changed') def get_all_pids(image_name): # Correctly split the command arguments result = subprocess.run(['tasklist', '/FO', 'list', '/FI', 'IMAGENAME eq ' + image_name], stdout=subprocess.PIPE).stdout.decode('gbk') # store pids in array pids = set() for line in result.split('\n'): if 'PID' in line: pids.add(int(line.split(': ')[1])) return pids INAME = 'WeChat.exe' previous_pids = get_all_pids(INAME) while True: current_pids = get_all_pids(INAME) new_pids = list(current_pids - previous_pids) print('New pids:', new_pids) for pid in new_pids: time.sleep(1) mod_mem(pid) previous_pids = current_pids # sleep for 1 second time.sleep(1)