import win32process # 進程模塊 import win32con # 系統定義 import win32api # 調用系統模塊 import ctypes # c語言類型 import win32gui #界面 import time # 系統常量,標識最高權限打開一個進程 PROCESS_ALL_ACCESS = (0x000F0000|0x00100000|0xFFF) # |位運算, 0x 十六進制 window = win32gui.FindWindow("MainWindow","植物大戰僵屍中文版") # 查找窗體 # 根據窗體抓取進程編號(pid 是進程編號 hid和pid一般描述一個進程信息) hid,pid = win32process.GetWindowThreadProcessId(window) # phand 打開一個進程(參數意思是使用最高權限非安全打這個進程) phand = win32api.OpenProcess(PROCESS_ALL_ACCESS,False,pid) print(phand) # c語言整數類型,讀取數據 date = ctypes.c_long() # 調用系統內核模塊(Kerne123.dll windows內核) mydll = ctypes.windll.LoadLibrary("C:\\Windows\\System32\\kernel32.dll") while True: # 讀取內存(“4”表示占4個字節,types.byref(date)表示轉遞地址信息,寫入的結果到date中) # int(phand)打開的進程編號 “244866760”需要讀取的內存的地址 mydll.ReadProcessMemory(int(phand), 411410192, ctypes.byref(date), 4, None) # 讀內存 (可以獲取內存中對應的數據) print(date.value) if date.value <2450: newdata = ctypes.c_long(2450) # 設定修改的數據 mydll.WriteProcessMemory(int(phand), 411410192, ctypes.byref(newdata), 4, None) time.sleep(1)