这是一个基于Python的Apex Legends游戏内存偏移量导出工具,支持通过DMA硬件直接读取运行中的游戏进程。
- 🔍 自动扫描偏移量: 使用特征码扫描技术自动查找游戏内存偏移
- 🎯 DMA硬件支持: 通过MemProcFS支持DMA硬件读取(PCILeech等)
- 🧪 文件模式: 支持从dump文件加载进行离线测试
- ⏰ 定时自动读取: 可设置间隔时间自动导出偏移量
- 📋 文件管理: 方便地查看和预览已保存的偏移量文件
- 💾 INI格式保存: 偏移量以标准INI格式保存,易于解析
- 🖥️ 友好GUI界面: 基于tkinter的现代化图形界面
- Python 3.8+
- tkinter(Python自带,通常无需额外安装)
如果要使用DMA硬件读取,需要安装MemProcFS:
- 下载 MemProcFS: https://github.com/ufrisk/MemProcFS/releases
- 将以下文件复制到项目目录:
vmmpyc.pyd(Python绑定)vmm.dllleechcore.dllFTD3XX.dll(FPGA硬件驱动)
python start.pypython main_gui.py- 连接好DMA硬件(PCILeech FPGA等)
- 选择"DMA硬件"模式
- 点击"初始化DMA"
- 输入进程名(默认:r5apex.exe)
- 点击"连接进程"
- 点击"立即读取偏移"开始扫描
- 选择(加载dump文件)"
- 点击"初始化DMA"
- 选择游戏的dump文件(.dmp或其他二进制文件)
- 点击"连接进程"
- 点击"立即读取偏移"开始扫描
- 设置"自动读取间隔"(秒)
- 点击"开始自动读取"
- 工具会按设定间隔自动导出偏移量
- 在"已保存的文件"列表中选择文件
- 点击"预览选中文件"查看内容
- 点击"打开文件位置"在资源管理器中查看
偏移量文件保存在 output/ 目录下,文件名格式:
apex_YYYYMMDD_HHMMSS.ini
INI文件结构:
[Info]
timestamp = 2025-11-06 13:45:00
baseaddress = 0x140000000
[Convars]
sv_cheats = 0x12345678
cl_ragdoll_maxcount = 0x23456789
[RecvTable.DT_Player]
m_iHealth = 0x420
m_vecVelocity = 0x500
[RecvTable.DT_BaseEntity]
m_vecOrigin = 0x100
[Buttons]
+attack = 0x1000
+jump = 0x1004
[Mics]
localplayer = 0x21BC9F8
entitylist = 0x1E13D18
[weaponSettings]
ammo_clipsize = 0x1234
[dataMap.CPlayer]
m_lifeState = 0x10ApexDumpPython/
├── main_gui.py # GUI主程序
├── dma_reader.py # DMA内存读取模块
├── apex_dumper.py # Apex偏移量导出模块
├── pattern_scanner.py # 特征码扫描引擎
├── start.py # 启动脚本
├── requirements.txt # 依赖列表
├── README.md # 说明文档
└── output/ # 输出目录(自动创建)
└── apex_*.ini # 导出的偏移量文件
工具会自动扫描并导出以下6大类偏移量:
自动扫描游戏中的所有ConVar变量及其地址
扫描所有网络数据表,包含:
- DT_Player 相关属性
- DT_BaseEntity 相关属性
- 其他网络同步数据结构
扫描所有按键命令,如:
- +attack, +jump, +duck 等
扫描所有C++类的数据映射信息
- 基础: LocalPlayer, EntityList, ViewRender, NameList
- 系统: GlobalVars, NetworkVarTablePtr, InputSystem, LevelName
- 玩家: m_vecAbsOrigin, camera_origin, lastVisibleTime, studioHdr
- 武器: WeaponSettingsMeta_base, WeaponNames, ModelNames
- 网络: CHLClient, observerList, netChannel, ClientState, SignonState
- 其他: highlightSetting, commandNumber, cinput, localplayerHandle
扫描所有武器配置字段及其偏移量
- 使用风险: 此工具仅供学习和研究使用,请勿用于作弊或其他违规行为
- 反作弊检测: DMA硬件读取相对安全,但仍需注意使用频率
- 特征码更新: 游戏更新后特征码可能失效,需要更新pattern
- 硬件要求: DMA模式需要PCILeech等专业硬件
如果游戏更新导致偏移量扫描失败,需要更新特征码:
- 打开
apex_dumper_full.py - 找到对应的特征码字符串(如
"48 8D 0D ?? ?? ?? ?? 48 8B D7 FF 50 58") - 使用IDA/Ghidra等工具查找新的特征码
- 更新代码中的pattern字符串
本项目仅供学习研究使用。
- 基于原C++项目
CApexDumpWasm移植 - 使用 MemProcFS 进行DMA内存读取
- 感谢所有开源贡献者
如有问题或建议,欢迎提交Issue。