某小游戏从内存读取令牌,Python版
最近某款小游戏爆火,大家都在熬夜点点,看广告想办法通关。论坛中也涌现出很多大佬开发小帮助大家通关过瘾的工具,js,c#,python版本的有。这篇有用的易语言从Token的比较,然后开始从两个工具获取资金、跟数据论坛感兴趣的,查看自己的测试关于Python的文章,
最终成功在下面不断改进
代码由于是从网上摘取的,在阅读的文章中非常实际地用了,记下这个是大家提供的文章,只是实际操作。
再此声明:代码论坛学习讨论,如若用于不当大过、篡改行为,如若有不当行为,均请本人
处理,烦请管理员删帖,勿记,谢谢~
import ctypes
from ctypes import *
from ctypes.wintypes import *
import json
import psutil
import re
import sys
import win32api
from win32con import PROCESS_ALL_ACCESS
k32 = WinDLL('kernel32')
k32.OpenProcess.restype = HANDLE
k32.OpenProcess.argtypes = DWORD, BOOL, DWORD
k32.ReadProcessMemory.restype = BOOL
k32.ReadProcessMemory.argtypes = HANDLE, LPVOID, LPVOID, c_size_t, POINTER(c_size_t)
BUF_SIZE = 1024 * 500
prodess_name = '????.exe'
pattern = re.compile('(?<=("token":"))[.\\w]*?(?=(","))')
def get_proc_pid():
for proc in psutil.process_iter():
if proc.name() == prodess_name:
p_proc = psutil.Process(proc.pid)
return p_proc.parent().pid
def rpm(pid, address):
process = k32.OpenProcess(PROCESS_ALL_ACCESS, False, pid)
buf = create_string_buffer(BUF_SIZE)
s = c_size_t()
mem_data = k32.ReadProcessMemory(process, address, buf, BUF_SIZE, byref(s))
return address + BUF_SIZE, str(buf.raw)
def get_app_token(pid):
start_address = 0x05890000 # 0x00380000 0x05890000
end_address = 0xFF9F0000
data = rpm(pid, start_address)
token = pattern.search(data)
while not token and data < end_address:
data = rpm(pid, data)
token = pattern.search(data)
if token:
break
token = token.group()
print('当前Token:\n' + token + '\n')
return token
if __name__ == '__main__':
pid = get_proc_pid()
if not pid:
print('请确认游戏已打开')
sys.exit()
token = get_app_token(pid)
环境是
1。python39
2. win10
操作步骤
1. 保存代码
2. 替换prodes_name
3.打开游戏
4. 执行脚本
沙发垫
支持楼主,谢谢分享。 谢谢大佬 谢谢大牛
感谢楼主的分享 谢谢大佬分享 6666 感谢楼主分享 谢谢分享!
页:
[1]