本帖最后由 阳光肥肥 于 2021-11-8 19:04 编辑
python本身可以用ctypes等库进行内存的读写,如已经有dalao的Python64位游戏读写
但是可以看到直接使用ctypes的话,用起来比较麻烦。代码比较多
这里有一个封装过的库,写起代码来简单很多
安装
[Bash shell] 纯文本查看 复制代码 pip install pymem
使用示例
以经典的植物大战僵尸为例好了,CE找到的阳光的地址如图
地址
使用python读写
[Python] 纯文本查看 复制代码 from pymem import Pymem
# exe名称
pm = Pymem('PlantsVsZombies.exe')
print('Process id: %s' % pm.process_id)
# 直接读写
sun = pm.read_int(0x1A39E7E0)
print('阳光值是:' + str(sun))
print('写入阳光值10000...')
pm.write_int(0x1A39E7E0, 10000)
print('当前阳光值是:' + str(pm.read_int(0x1A39E7E0)))
# 使用指针读写
# [1A399280 + 5560] == 0x1A39E7E0
# [02761A10 + 768] == 1A399280
# [006A9EC0] == 02761A10
base = 0x006A9EC0
ptr1 = pm.read_int(base) # [base] == 02761A10
print(ptr1)
ptr2 = pm.read_int(ptr1 + 0x768) # [02761A10 + 768] == 1A399280
print(ptr2)
sun = pm.read_int(
ptr2 + 0x5560
) # [1A399280 + 5560] == 0x1A39E7E0, 读取0x1A39E7E0内的值 即阳光值
print('使用指针读取到的阳光值是:' + str(sun))
运行结果
更多使用方法请看pymem文档
|