阳光肥肥 发表于 2021-11-8 19:00

Python简易读写内存库Pymem

本帖最后由 阳光肥肥 于 2021-11-8 19:04 编辑

python本身可以用ctypes等库进行内存的读写,如已经有dalao的Python64位游戏读写
但是可以看到直接使用ctypes的话,用起来比较麻烦。代码比较多

这里有一个封装过的库,写起代码来简单很多
安装
pip install pymem

使用示例
以经典的植物大战僵尸为例好了,CE找到的阳光的地址如图


使用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)))


# 使用指针读写
# == 0x1A39E7E0
# == 1A399280
# == 02761A10

base = 0x006A9EC0
ptr1 = pm.read_int(base)# == 02761A10
print(ptr1)
ptr2 = pm.read_int(ptr1 + 0x768)# == 1A399280
print(ptr2)
sun = pm.read_int(
    ptr2 + 0x5560
)# == 0x1A39E7E0, 读取0x1A39E7E0内的值 即阳光值
print('使用指针读取到的阳光值是:' + str(sun))


更多使用方法请看pymem文档

大兵马元帅 发表于 2021-11-8 19:07

本帖最后由 大兵马元帅 于 2021-11-8 19:14 编辑

要搞就搞网络游戏,单机游戏太没意思了,而且这个都是烂大街的东西了,十几年前别的语言早就做到了,现在没必要用python再搞一遍了

阳光肥肥 发表于 2021-11-8 19:37

大兵马元帅 发表于 2021-11-8 19:07
要搞就搞网络游戏,单机游戏太没意思了,而且这个都是烂大街的东西了,十几年前别的语言早就做到了,现在没 ...

。。大部分python能干的活别的语言也能干,不过用python不就是想少写两行代码吗?

ynboyinkm 发表于 2021-11-8 20:11

楼主强,学习好,感谢!

vethenc 发表于 2021-11-8 20:19

感谢分享,不明觉厉

STARSHINEA 发表于 2021-11-8 21:29

可以,感谢楼主分享

max2012 发表于 2021-11-8 21:33

也木有发现node js有时候比python还好用,尤其与web有关的

githubi 发表于 2021-11-8 21:40

请问这个是可以更改所有版本的植物大战僵尸游戏吗

阳光肥肥 发表于 2021-11-8 22:07

githubi 发表于 2021-11-8 21:40
请问这个是可以更改所有版本的植物大战僵尸游戏吗

不能,这里已经找到了地址
用python去读写这个地址而已。
一般情况还是得先用CE找到地址。

githubi 发表于 2021-11-8 22:12

阳光肥肥 发表于 2021-11-8 22:07
不能,这里已经找到了地址
用python去读写这个地址而已。
一般情况还是得先用CE找到地址。

谢谢解答,请问用CE找这个地址好找吗,新人刚了解到CE这个软件
页: [1] 2 3
查看完整版本: Python简易读写内存库Pymem