这里演示的代码是通过Cheat English工具去将单机CS里的内存地址找到后,通过代码去修改内存数据的,代码仅供参考!!!!
这里就不教你们去使用Cheat English了,平台不让发,各位可以自行去bibi站去看视频!!!
这里安装python库
windows+R后,输入cmd后,输入如下命令即可自动安装
pip install +你想安装的库
使用“Memory64”库(注意:这个只能用python-32位的)
# 必须要用这个库
from Memory64 import *
# 用'FindWindowsPid'函数来找到名为'valve001'的窗口的进程ID
pid = FindWindowPid("Valve001",None)[-1]
#获取进程id
addr = SetupProce(pid)
# 获取模块地址
module = addr.GetBaseAddr("cstrike.exe")
# 这里是必须要的地址
memo = addr.ReadMemory(module + 0x1033240)
#子弹数
# 找偏移1
addr1 = addr.ReadMemory(memo + 0x7c)
# # 找偏移2(修改是从偏移2这里修改)
addr2 = addr.ReadMemory(addr1 + 0x5ec)
# # 找到了静态地址
addr3 = addr.ReadMemory(addr2 + 0xcc) # 通过偏移找到动态地址(读内存)
# # 写内存,改数据
addr.WriteMemory(addr2 + 0xcc, 500) # 写内存
#人物HP
# 找偏移1
addr1_1 = addr.ReadMemory(memo + 0x1E0)
# 这里不用赋值了,直接写
# 写内存,改数据
addr.WriteMemory_float(memo + 0x1E0 , 50)
#防弹衣
# 找偏移1
addr1_1_1 = addr.ReadMemory(memo + 0x7c)
# 找偏移2(修改是从偏移2这里修改)
addr2_2_2 = addr.ReadMemory(addr1_1_1 + 0x04)
# 找到了静态地址
addr3_3_3 = addr.ReadMemory(addr2_2_2 + 0x1BC)
# 写内存,改数据
addr.WriteMemory_float(addr2_2_2 + 0x1BC,500)
可以直接用python-64的做
用到的库有win32gui、win32process、win32api、ctypes
库的介绍:
* win32gui:win32gui库是用于访问Windows的本地GUI功能的。这个库是pywin32包的一部分,提供了对Windows API的调用,使得Python程序能够直接使用Windows的图形用户界面功能。使用win32gui库,你可以创建和管理窗口,处理用户输入,以及与Windows操作系统进行交互。
* win32process:win32process库是用于处理Windows系统进程的。这也是pywin32包的一部分,提供了对Windows API的调用,使得Python程序能够直接与Windows操作系统进行交互。使用win32process库,你可以创建新的进程,结束现有的进程,获取进程的相关信息,以及处理与进程相关的一系列操作。
* win32api:win32api库是用于访问Windows的本地API的。这是pywin32包的一部分,提供了对Windows API的调用,使得Python程序能够直接使用Windows的操作系统功能。使用win32api库,你可以执行各种系统任务,如创建和管理文件,处理环境变量,以及与Windows操作系统进行交互。
* ctypes:ctypes库是用于在Python代码中调用C语言编写的动态链接库的。它提供了与C语言兼容的数据类型,并且允许你在Python程序中调用C语言的函数。使用ctypes库,你可以将C语言的功能集成到Python代码中,从而扩展Python的功能。
# 界面模块
import win32gui #用来获取打开游戏的窗口类型和名称
import win32process #用来获取窗口的进程
# 系统模块
import win32api
# 调用系统内核模块!调用c写的一些动态链接库
import ctypes
# 获取窗口类型,窗口id
pid = win32gui.FindWindow(None,"Valve001")
# 获取进程id
addr = win32process.GetWindowThreadProcessID(pid)[1]
# 进程句柄,这个方法的底层是循环遍历!(0x1F0FFF是所有进程的地址,每个电脑都是一样的)
# False是用来进程句柄是否可以被子程序继承!保密措施!
memo = win32api.OpenProcess(0x1F0FFF,False,addr)
# 读写内存
addr1 = ctypes.windll.LoadLibrary(r"C:\windows\System32\kernel32.dll")
# 缓冲区 用来保存数据(这里也是用来找偏移),这里的4是查找数据时的4字节,None是不定义这里就是最大值,data1的数据类型在某些语言里面不能被识别!不兼容
data1 = ctypes.c_long()
addr1.ReadProcessMemory(int(memo)),0x006A9EC0,ctypes.byref(data1),4,None)
# 找偏移1
data2 = ctypes.c_long()
addr1.ReadProcessMemory(int(memo)),data1.value+0x768,ctypes.byref(data2),4,None)
# 找到静态地址
data3 = ctypes.c_long()
addr1.ReadProcessMemory(int(memo)),data2.value+0x5560,ctypes.byref(data3),4,None)
sun = input("请输入你想要的阳关值:")
addr1.WriteProcessMemory(int(memo),data2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))),4,None)
print(data3)