Skip to content

Repository files navigation

Apex Legends 偏移量导出工具

这是一个基于Python的Apex Legends游戏内存偏移量导出工具,支持通过DMA硬件直接读取运行中的游戏进程。

✨ 功能特性

  • 🔍 自动扫描偏移量: 使用特征码扫描技术自动查找游戏内存偏移
  • 🎯 DMA硬件支持: 通过MemProcFS支持DMA硬件读取(PCILeech等)
  • 🧪 文件模式: 支持从dump文件加载进行离线测试
  • 定时自动读取: 可设置间隔时间自动导出偏移量
  • 📋 文件管理: 方便地查看和预览已保存的偏移量文件
  • 💾 INI格式保存: 偏移量以标准INI格式保存,易于解析
  • 🖥️ 友好GUI界面: 基于tkinter的现代化图形界面

📦 安装依赖

Python环境

  • Python 3.8+
  • tkinter(Python自带,通常无需额外安装)

DMA硬件支持(可选)

如果要使用DMA硬件读取,需要安装MemProcFS:

  1. 下载 MemProcFS: https://github.com/ufrisk/MemProcFS/releases
  2. 将以下文件复制到项目目录:
    • vmmpyc.pyd (Python绑定)
    • vmm.dll
    • leechcore.dll
    • FTD3XX.dll (FPGA硬件驱动)

🚀 使用方法

方式1: 使用启动脚本(推荐)

python start.py

方式2: 直接运行GUI

python main_gui.py

📖 使用说明

1. DMA模式(真实硬件)

  1. 连接好DMA硬件(PCILeech FPGA等)
  2. 选择"DMA硬件"模式
  3. 点击"初始化DMA"
  4. 输入进程名(默认:r5apex.exe)
  5. 点击"连接进程"
  6. 点击"立即读取偏移"开始扫描

2. 文件模式

  1. 选择(加载dump文件)"
  2. 点击"初始化DMA"
  3. 选择游戏的dump文件(.dmp或其他二进制文件)
  4. 点击"连接进程"
  5. 点击"立即读取偏移"开始扫描

3. 自动读取

  1. 设置"自动读取间隔"(秒)
  2. 点击"开始自动读取"
  3. 工具会按设定间隔自动导出偏移量

4. 查看保存的文件

  • 在"已保存的文件"列表中选择文件
  • 点击"预览选中文件"查看内容
  • 点击"打开文件位置"在资源管理器中查看

📁 输出文件

偏移量文件保存在 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 = 0x10

🔧 项目结构

ApexDumpPython/
├── 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大类偏移量:

1️⃣ Convars (控制台变量)

自动扫描游戏中的所有ConVar变量及其地址

2️⃣ RecvTable (网络接收表)

扫描所有网络数据表,包含:

  • DT_Player 相关属性
  • DT_BaseEntity 相关属性
  • 其他网络同步数据结构

3️⃣ Buttons (按键绑定)

扫描所有按键命令,如:

  • +attack, +jump, +duck 等

4️⃣ dataMap (数据映射)

扫描所有C++类的数据映射信息

5️⃣ Mics (杂项偏移 - 26+个核心偏移)

  • 基础: 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

6️⃣ weaponSettings (武器设置)

扫描所有武器配置字段及其偏移量

⚠️ 注意事项

  1. 使用风险: 此工具仅供学习和研究使用,请勿用于作弊或其他违规行为
  2. 反作弊检测: DMA硬件读取相对安全,但仍需注意使用频率
  3. 特征码更新: 游戏更新后特征码可能失效,需要更新pattern
  4. 硬件要求: DMA模式需要PCILeech等专业硬件

🔄 更新特征码

如果游戏更新导致偏移量扫描失败,需要更新特征码:

  1. 打开 apex_dumper_full.py
  2. 找到对应的特征码字符串(如 "48 8D 0D ?? ?? ?? ?? 48 8B D7 FF 50 58"
  3. 使用IDA/Ghidra等工具查找新的特征码
  4. 更新代码中的pattern字符串

📄 许可证

本项目仅供学习研究使用。

🙏 致谢

  • 基于原C++项目 CApexDumpWasm 移植
  • 使用 MemProcFS 进行DMA内存读取
  • 感谢所有开源贡献者

📮 反馈

如有问题或建议,欢迎提交Issue。

About

A Python-based memory offset export tool for Apex Legends games, supporting direct reading of running game processes via DMA hardware

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages