python内存修改器求思路

2013-07-27 07:45:35 +08:00
 alai
情况:
一个练手工具,功能仿CheatEngine或GameMater
运行并输入初始数值,自动扫描指定程序的占用内存并等待变化值
变化后再次扫描,显示变化区域的内存地址并等待输入

问题:
用什么方法有效读取指定程序的占用内存
能不能通过前期准备框定可能变化的内存范围
从而不读取全部内存加快读取速度

求教
6701 次点击
所在节点    Python
4 条回复
for4
2013-07-27 09:02:13 +08:00
常规方法 ctypes+windbg
也可以写一个dll注入目标程序,dll中加载py脚本.搜索pydotdll
timonwong
2013-07-27 09:18:01 +08:00
Win32API:
读取:
ReadProcessMemory, hProcess句柄需要通过OpenProcess()打开,需要访问权限需要指定 PROCESS_VM_READ 权限

写入:
WriteProcessMemory, OpenProcess()打开的句柄需要指定 PROCESS_VM_WRITE权限。

还有种方法是在另外的进程中创建一个Thread,不过设计到大量问题我在想只能用原生API实现,要不就只能自己写个Python的emitter, 自动生成机器代码,然后把通过VirtualAllocEx分配一个页面,注入到另外的进程中去。

读取的权限还好说点,写入比较麻烦,估计需要管理员权限了。


ReadProcessMemory是可以指定起始地址和大小的。
Mutoo
2013-07-27 09:31:47 +08:00
python不是解析语言么,边解析边执行,bytecode和一般的静态程序也不一样,如何内存搜索?
shiweifu
2013-07-27 10:20:09 +08:00
买本windows 核心编程
搜搜pywin32

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/77117

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX