Python写一个修改只狼金币的demo

废话不多说直接上代码

import time

import win32gui  # 界面模块
import win32process  # 进程模块
import win32api
import ctypes

kernel32 = ctypes.windll.LoadLibrary(r"kernel32.dll")  # 核心文件
PROCESS_ALL_ACCESS = (0x000F0000 | 0x00100000 | 0xFFF)  # 调用最高权限执行
window_handle = win32gui.FindWindow(None, "Sekiro")  # 找到窗口句柄
print("window_handle",window_handle)
process_id = win32process.GetWindowThreadProcessId(window_handle)[1]  # 获取进程ID
print("process_id",process_id)
process_handle = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, process_id)  # 得到进程句柄
print("process_handle",process_handle)



def findAdress(phandle,basead,shift):
    tmpData = ctypes.c_void_p()
    kernel32.ReadProcessMemory(int(phandle), ctypes.c_void_p(basead), ctypes.byref(tmpData), 8, None)
    aimdata = ctypes.c_void_p()
    for s in shift[:-1]:
        kernel32.ReadProcessMemory(int(phandle), ctypes.c_void_p(tmpData.value+s), ctypes.byref(aimdata), 8, None)
        tmpData = aimdata
        print("tmp_data",aimdata)
        time.sleep(1)
    return aimdata.value+shift[-1]

aim = findAdress(process_handle,0x143D5AAC0,[0x68,0x238,0x7C])
print("金币地址:",aim)
data4 = ctypes.c_void_p()
kernel32.ReadProcessMemory(int(process_handle), ctypes.c_void_p(aim), ctypes.byref(data4),8, None)
print("金币数量",data4)



money_num = 99991
kernel32.WriteProcessMemory(int(process_handle),ctypes.c_void_p(aim), ctypes.byref(ctypes.c_long(int(money_num))), 8,None)

python版本3.9 用到了pywin32 模块 建议直接下载pywin32-304.0-cp39-cp39-win_amd64.whl 手动安装。

经验分享 程序员 微信小程序 职场和发展