内容简介:最近比较怀旧,在玩一个比较老的PC游戏。由于游戏难度太高了,于是就打算自己写一个修改器。通过查阅资料,在 Windows 下的修改器主要需要用到四个函数:OpenProcess, CloseHandle, WriteProcessMemory, ReadProcessMemory。这几个都是C++的函数,在Python中可以通过ctypes来直接调用。
最近比较怀旧,在玩一个比较老的PC游戏。由于游戏难度太高了,于是就打算自己写一个修改器。
通过查阅资料,在 Windows 下的修改器主要需要用到四个函数:OpenProcess, CloseHandle, WriteProcessMemory, ReadProcessMemory。
这几个都是C++的函数,在 Python 中可以通过ctypes来直接调用。
然后接下来介绍一下基本的操作流程。
1.通过 任务管理器 或者其他方式得到需要修改的游戏进程。然后通过 OpenProcess
注入该进程。
PROCESS_QUERY_INFORMATION = 0x0400 PROCESS_VM_OPERATION = 0x0008 PROCESS_VM_READ = 0x0010 PROCESS_VM_WRITE = 0x0020 hProcess = ctypes.windll.kernel32.OpenProcess( PROCESS_QUERY_INFORMATION|PROCESS_VM_READ|PROCESS_VM_OPERATION|PROCESS_VM_WRITE, False, pid )
2.然后可以通过 ReadProcessMemory
来扫描游戏的内存找到需要修改的数值项的内存地址。
buf = ctypes.c_int32() nread = ctypes.c_size_t() ret = ctypes.windll.kernel32.ReadProcessMemory( hProcess, base_addr, ctypes.byref(buf), ctypes.sizeof(buf), ctypes.byref(nread) )
这里是读取 base_addr
地址之后的4个字节的内容。可以通过循环来遍历游戏的内存,找到需要修改的地址。
当然,为了方便也可以直接使用 Cheat Engine 之类的软件来查找,然后把找到的内存地址记录下来即可。
3.得到需要修改的内存地址之后,就可以 WriteProcessMemory
来修改该地址保存的值。
buf = ctypes.c_int32(value) nread = ctypes.c_size_t() ret = ctypes.windll.kernel32.WriteProcessMemory( hProcess, base_addr, ctypes.byref(buf), ctypes.sizeof(buf), ctypes.byref(nwrite) )
这里是往 base_addr
这个地址写入值为 value
的4字节内容。
4.最后如果不再需要修改了的话,就通过 CloseHandle
关闭该注入操作。
ctypes.windll.kernel32.CloseHandle(hProcess)
以上都是针对 Windows 系统的,对于 Linux 系统的话 可以通过 ptrace
( http://man7.org/linux/man-pages/man2/ptrace.2.html ) 操作实现。由于我没有 Linux 的游戏就没有研究了。
上面修改器的完整源代码,如有需要可通过以下链接获取:
https://github.com/wusuopu/cheat_engine_caesar3以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Eloquent: 修改器
- [ Laravel 5.7 文档 ] Eloquent ORM —— 访问器和修改器
- AAAI-17论文提出深度学习C语言修改器DeepFix:用人工智能加「;」
- 基于顺丰同城接口编写sdk,java三方sdk编写思路
- 使用 Clojure 编写 OpenWhisk 操作,第 1 部分: 使用 Lisp 方言为 OpenWhisk 编写简明的代码
- 编写一个Locust文件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Data Mining
Bing Liu / Springer / 2011-6-26 / CAD 61.50
Web mining aims to discover useful information and knowledge from Web hyperlinks, page contents, and usage data. Although Web mining uses many conventional data mining techniques, it is not purely an ......一起来看看 《Web Data Mining》 这本书的介绍吧!