游戏数据修改器:修改游戏内存数据
///'import sys//nimport ctypes//nimport tkinter as tk//nfrom tkinter import messagebox, ttk//n//nclass MemoryModifier://n def init(self)://n if sys.platform.startswith('win32')://n self.kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)//n else://n raise NotImplementedError(/'Unsupported operating system/')//n//n def open_process(self, pid)://n process_handle = self.kernel32.OpenProcess(0x1F0FFF, False, pid)//n if not process_handle://n error_code = self.kernel32.GetLastError()//n raise OSError(error_code, /'Could not open process/')//n return process_handle//n//n def write_memory(self, process_handle, address, value)://n if isinstance(value, int)://n buffer = (ctypes.c_byte * ctypes.sizeof(value)).from_buffer(value)//n elif isinstance(value, float)://n buffer = (ctypes.c_byte * ctypes.sizeof(ctypes.c_float)).from_buffer(value)//n else://n buffer = value.encode()//n//n bytes_written = ctypes.c_size_t()//n result = self.kernel32.WriteProcessMemory(process_handle, address, buffer, ctypes.sizeof(buffer), ctypes.byref(bytes_written))//n if not result or bytes_written.value != ctypes.sizeof(buffer)://n raise OSError(/'Failed to write memory/')//n//n def read_memory(self, process_handle, address, data_type)://n if data_type == /'int/'://n buffer = ctypes.c_int()//n result = self.kernel32.ReadProcessMemory(process_handle, address, ctypes.byref(buffer), ctypes.sizeof(buffer), None)//n if not result://n raise OSError(/'Failed to read memory/')//n return buffer.value//n elif data_type == /'float/'://n buffer = ctypes.c_float()//n result = self.kernel32.ReadProcessMemory(process_handle, address, ctypes.byref(buffer), ctypes.sizeof(buffer), None)//n if not result://n raise OSError(/'Failed to read memory/')//n return buffer.value//n else://n buffer = (ctypes.c_byte * 256)()//n result = self.kernel32.ReadProcessMemory(process_handle, address, ctypes.byref(buffer), ctypes.sizeof(buffer), None)//n if not result://n raise OSError(/'Failed to read memory/')//n return buffer.value.decode().strip(/'//x00/')//n//n def close_process(self, process_handle)://n self.kernel32.CloseHandle(process_handle)//n//n//nclass GameDataModifierGUI://n def init(self, root)://n self.root = root//n self.root.title(/'游戏数据修改器/')//n self.root.geometry(/'400x300/')//n//n self.process_id_label = tk.Label(self.root, text=/'进程ID:/')//n self.process_id_label.pack()//n self.process_id_entry = tk.Entry(self.root)//n self.process_id_entry.pack()//n//n self.memory_address_label = tk.Label(self.root, text=/'内存地址:/')//n self.memory_address_label.pack()//n self.memory_address_entry = tk.Entry(self.root)//n self.memory_address_entry.pack()//n//n self.data_type_label = tk.Label(self.root, text=/'数据类型:/')//n self.data_type_label.pack()//n self.data_type_combobox = ttk.Combobox(self.root, values=[/'int/', /'float/', /'str/'], state=/'readonly/')//n self.data_type_combobox.current(0)//n self.data_type_combobox.pack()//n//n self.new_value_label = tk.Label(self.root, text=/'新值:/')//n self.new_value_label.pack()//n self.new_value_entry = tk.Entry(self.root)//n self.new_value_entry.pack()//n//n self.modify_button = tk.Button(self.root, text=/'修改游戏数据/', command=self.modify_game_data)//n self.modify_button.pack()//n//n self.modifier = MemoryModifier()//n//n def modify_game_data(self)://n try://n pid = int(self.process_id_entry.get())//n address = int(self.memory_address_entry.get(), 16)//n data_type = self.data_type_combobox.get()//n new_value = self.new_value_entry.get()//n//n process_handle = self.modifier.open_process(pid)//n//n if data_type == /'int/'://n self.modifier.write_memory(process_handle, address, int(new_value))//n elif data_type == /'float/'://n self.modifier.write_memory(process_handle, address, float(new_value))//n else://n self.modifier.write_memory(process_handle, address, new_value.encode())//n//n messagebox.showinfo(/'成功/', /'内存值已修改/')//n except OSError as e://n messagebox.showerror(/'错误/', str(e))//n except ValueError://n messagebox.showerror(/'错误/', /'请输入有效的进程ID和内存地址/')//n finally://n self.modifier.close_process(process_handle)//n//n//ndef start_application()://n window = tk.Tk()//n//n game_data_modifier_gui = GameDataModifierGUI(window)//n//n window.mainloop()//n//n//nif name == /'main/'://n start_application()//n//nimport random//nimport tkinter as tk//nfrom tkinter import messagebox//n//nclass GuessNumberGame://n def init(self)://n self.number = random.randint(1, 100)//n self.attempts = 0//n//n self.window = tk.Tk()//n self.window.title(/'猜数字游戏/')//n self.title_label = tk.Label(self.window, text=/'欢迎来到猜数字游戏!/', font=(/'Arial/', 16))//n self.title_label.pack(pady=10)//n self.description_label = tk.Label(self.window, text=/'我已经想好了一个1到100之间的数字,请你猜猜是多少。/', font=(/'Arial/', 12))//n self.description_label.pack(pady=5)//n self.guess_entry = tk.Entry(self.window, width=20, font=(/'Arial/', 12))//n self.guess_entry.pack(pady=10)//n self.submit_button = tk.Button(self.window, text=/'提交/', command=self.check_guess, font=(/'Arial/', 12))//n self.submit_button.pack(pady=5)//n self.result_label = tk.Label(self.window, text=/'/', font=(/'Arial/', 12))//n self.result_label.pack(pady=5)//n self.attempts_label = tk.Label(self.window, text=/'/', font=(/'Arial/', 12))//n self.attempts_label.pack(pady=5)//n self.update_attempts_label()//n self.window.mainloop()//n//n def check_guess(self)://n try://n guess = int(self.guess_entry.get())//n self.attempts += 1//n//n if guess < self.number://n self.result_label.config(text=/'猜错了,你猜的数字太小了!/')//n elif guess > self.number://n self.result_label.config(text=/'猜错了,你猜的数字太大了!/')//n else://n self.result_label.config(text=/'恭喜你,猜对了!/')//n//n self.update_attempts_label()//n except ValueError://n messagebox.showerror(/'错误/', /'请输入有效的数字/')//n//n def update_attempts_label(self)://n attempts_address = hex(id(self.attempts))//n self.attempts_label.config(text=f/'Attempts 内存地址: {attempts_address} 值: {self.attempts}/')//n//nGuessNumberGame()//n/
原文地址: https://www.cveoy.top/t/topic/pUYF 著作权归作者所有。请勿转载和采集!