# 测试内存
import win32process
import win32con
import ctypes
import win32api
import win32gui
# 设置获取的最高权限
PROCESS_ALL_ACCESS = (0x000F0000 | 0x00100000 | 0xFFF)
# 获取进程句柄
window = win32gui.FindWindow(None, 'FXGG工具')
# print(window)
# 获取进程ID
process_id = win32process.GetWindowThreadProcessId(window)[1]
print(process_id)
# 以最高权限打开进程process_id
phand = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, process_id)
# 调用kernel32.dll,读取内存
kernel32 = ctypes.windll.LoadLibrary(r"C:\Windows\System32\kernel32.dll")
# 缓冲区获取基址值data1
data1 = ctypes.c_long()
# 读取基址 5532432928
kernel32.ReadProcessMemory(int(phand), 5532432928, ctypes.byref(data1), 4, None)
# 进行偏移
data2 = ctypes.c_long()
kernel32.ReadProcessMemory(int(phand), data1.value + 0xec8, ctypes.byref(data2), 4, None)
# 打印偏移后的值
print(data2.value)
这段代码运行后,出现了报错:
Traceback (most recent call last):
File "F:/Code/python/invincible.py", line 21, in <module>
kernel32.ReadProcessMemory(int(phand), 5532432928, ctypes.byref(data1), 4, None)
ctypes.ArgumentError: argument 2: <class 'OverflowError'>: int too long to convert
有没有哪位大佬指点一下我,或者教我一下用别的方法读写内存。谢谢!
可以参考这篇文章,希望对你有帮助:报错解决——ctypes.ArgumentError: argument 1:……….. : wrong type_weixin_30535913的博客-CSDN博客
解决ctypes.ArgumentError: argument 1: <class ‘TypeError‘>: wrong type_门前大橋下丶-CSDN博客
这个是int太长,不能转换
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632