游戏修改器 - 修改、搜索、保存和加载内存数据
import\x20sys\nimport\x20ctypes\nimport\x20tkinter\x20as\x20tk\nfrom\x20tkinter\x20import\x20messagebox\n\nclass\x20MemoryModifier:\n\x20\x20def\x20__init__(self):\n\x20\x20\x20\x20if\x20sys.platform.startswith('win32'):\n\x20\x20\x20\x20\x20\x20self.kernel32\x20=\x20ctypes.WinDLL('kernel32',\x20use_last_error=True)\n\x20\x20\x20\x20else:\n\x20\x20\x20\x20\x20\x20raise\x20NotImplementedError("Unsupported\x20operating\x20system")\n\n\x20\x20def\x20open_process(self, pid):\n\x20\x20\x20\x20process_handle\x20=\x20self.kernel32.OpenProcess(0x1F0FFF, False, pid)\n\x20\x20\x20\x20if\x20not\x20process_handle:\n\x20\x20\x20\x20\x20\x20error_code\x20=\x20self.kernel32.GetLastError()\n\x20\x20\x20\x20\x20\x20raise\x20OSError(error_code, "Could\x20not\x20open\x20process")\n\x20\x20\x20\x20return\x20process_handle\n\n\x20\x20def\x20read_memory(self, process_handle, address, data_type=ctypes.c_int):\n\x20\x20\x20\x20value\x20=\x20data_type()\n\x20\x20\x20\x20if\x20not\x20self.kernel32.ReadProcessMemory(process_handle, address, ctypes.byref(value), ctypes.sizeof(value), None):\n\x20\x20\x20\x20\x20\x20error_code\x20=\x20self.kernel32.GetLastError()\n\x20\x20\x20\x20\x20\x20self.kernel32.CloseHandle(process_handle)\n\x20\x20\x20\x20\x20\x20raise\x20OSError(error_code, "Could\x20not\x20read\x20memory")\n\x20\x20\x20\x20return\x20value.value\n\n\x20\x20def\x20write_memory(self, process_handle, address, new_value):\n\x20\x20\x20\x20value\x20=\x20type(new_value)(new_value)\n\x20\x20\x20\x20if\x20not\x20self.kernel32.WriteProcessMemory(process_handle, address, ctypes.byref(value), ctypes.sizeof(value), None):\n\x20\x20\x20\x20\x20\x20error_code\x20=\x20self.kernel32.GetLastError()\n\x20\x20\x20\x20\x20\x20self.kernel32.CloseHandle(process_handle)\n\x20\x20\x20\x20\x20\x20raise\x20OSError(error_code, "Could\x20not\x20write\x20memory")\n\nclass\x20MemoryModifierGUI:\n\x20\x20def\x20__init__(self, root):\n\x20\x20\x20\x20self.root\x20=\x20root\n\x20\x20\x20\x20self.root.title("内存修改器")\n\x20\x20\x20\x20self.root.geometry("300x250")\n\x20\x20\x20\x20self.process_id_label\x20=\x20tk.Label(self.root, text="进程ID:")\n\x20\x20\x20\x20self.process_id_label.pack()\n\x20\x20\x20\x20self.process_id_entry\x20=\x20tk.Entry(self.root)\n\x20\x20\x20\x20self.process_id_entry.pack()\n\x20\x20\x20\x20self.address_label\x20=\x20tk.Label(self.root, text="内存地址:")\n\x20\x20\x20\x20self.address_label.pack()\n\x20\x20\x20\x20self.address_entry\x20=\x20tk.Entry(self.root)\n\x20\x20\x20\x20self.address_entry.pack()\n\x20\x20\x20\x20self.value_label\x20=\x20tk.Label(self.root, text="新值:")\n\x20\x20\x20\x20self.value_label.pack()\n\x20\x20\x20\x20self.value_entry\x20=\x20tk.Entry(self.root)\n\x20\x20\x20\x20self.value_entry.pack()\n\x20\x20\x20\x20self.modify_button\x20=\x20tk.Button(self.root, text="修改", command=self.modify_memory)\n\x20\x20\x20\x20self.modify_button.pack()\n\x20\x20\x20\x20#\x20扩展部分开始\n\x20\x20\x20\x20self.game_label\x20=\x20tk.Label(self.root, text="游戏选择:")\n\x20\x20\x20\x20self.game_label.pack()\n\x20\x20\x20\x20self.game_var\x20=\x20tk.StringVar()\n\x20\x20\x20\x20self.game_dropdown\x20=\x20tk.OptionMenu(self.root, self.game_var, "游戏1", "游戏2", "游戏3")\n\x20\x20\x20\x20self.game_dropdown.pack()\n\x20\x20\x20\x20self.search_button\x20=\x20tk.Button(self.root, text="搜索内存值", command=self.search_memory)\n\x20\x20\x20\x20self.search_button.pack()\n\x20\x20\x20\x20self.save_button\x20=\x20tk.Button(self.root, text="保存内存数据", command=self.save_memory_data)\n\x20\x20\x20\x20self.save_button.pack()\n\x20\x20\x20\x20self.load_button\x20=\x20tk.Button(self.root, text="加载内存数据", command=self.load_memory_data)\n\x20\x20\x20\x20self.load_button.pack()\n\x20\x20\x20\x20#\x20扩展部分结束\n\n\x20\x20def\x20modify_memory(self):\n\x20\x20\x20\x20pid\x20=\x20int(self.process_id_entry.get())\n\x20\x20\x20\x20address\x20=\x20int(self.address_entry.get(), 16)\n\x20\x20\x20\x20new_value\x20=\x20int(self.value_entry.get())\n\x20\x20\x20\x20modifier\x20=\x20MemoryModifier()\n\x20\x20\x20\x20try:\n\x20\x20\x20\x20\x20\x20process_handle\x20=\x20modifier.open_process(pid)\n\x20\x20\x20\x20\x20\x20value\x20=\x20modifier.read_memory(process_handle, address)\n\x20\x20\x20\x20\x20\x20messagebox.showinfo("原始内存值", str(value))\n\x20\x20\x20\x20\x20\x20modifier.write_memory(process_handle, address, new_value)\n\x20\x20\x20\x20\x20\x20updated_value\x20=\x20modifier.read_memory(process_handle, address)\n\x20\x20\x20\x20\x20\x20messagebox.showinfo("更新后的内存值", str(updated_value))\n\x20\x20\x20\x20except\x20OSError\x20as\x20e:\n\x20\x20\x20\x20\x20\x20messagebox.showerror("错误", str(e))\n\x20\x20\x20\x20kernel32\x20=\x20ctypes.WinDLL('kernel32',\x20use_last_error=True)\n\x20\x20\x20\x20kernel32.CloseHandle(process_handle)\n\n\x20\x20#\x20扩展部分开始\n\x20\x20def\x20search_memory(self):\n\x20\x20\x20\x20game\x20=\x20self.game_var.get()\n\x20\x20\x20\x20messagebox.showinfo("搜索内存值", f"正在搜索{game}的内存值...")\n\n\x20\x20def\x20save_memory_data(self):\n\x20\x20\x20\x20game\x20=\x20self.game_var.get()\n\x20\x20\x20\x20messagebox.showinfo("保存内存数据", f"正在保存{game}的内存数据...")\n\n\x20\x20def\x20load_memory_data(self):\n\x20\x20\x20\x20game\x20=\x20self.game_var.get()\n\x20\x20\x20\x20messagebox.showinfo("加载内存数据", f"正在加载{game}的内存数据...")\n\x20\x20#\x20扩展部分结束\n\nif\x20__name__\x20==\x20"main":\n\x20\x20root\x20=\x20tk.Tk()\n\x20\x20app\x20=\x20MemoryModifierGUI(root)\n\x20\x20root.mainloop()
原文地址: https://www.cveoy.top/t/topic/pzUR 著作权归作者所有。请勿转载和采集!