热血江湖助手 · 分析资料站← 报告总目录助手主页
分区:13_内挂配置逆向源文件:内挂设置读写工具_使用说明.md篇幅:12.1 KB收录:2026-10-19 17:10

内挂设置读写工具 · 使用说明

目标:读写热血江湖 游戏内挂助手 的配置(不是我们助手外挂的配置)。
存储载体:D:\rxjh2025\client\<账号>.aut,固定 11812 字节
(4 字节文件头 + 4 槽 × 2952,每槽 2 页 × 1476)

一、三个入口,按场景选

入口位置适合
图形界面(推荐)双击 D:\AI空间\rxjh\内挂设置读写工具.bat看配置、勾开关、改对话、改参数
命令行python tools/rxjh_aut.py批量、脚本、对拍
CE 在线读写tools/rxjh_cfg.lua(Cheat Engine Lua)游戏运行中直接读写内存

三者读写的是同一套字节,只是通道不同。


二、图形界面

双击 内挂设置读写工具.bat → 自动打开浏览器(http://127.0.0.1:8765/),<br>命令窗口留着别关,关掉即停服务。

界面结构

┌ 账号下拉(自动扫描 client\*.aut,按修改时间倒序)  游戏状态  文件 MD5/时间 ┐
│                                    [新建档] [克隆] [备份/还原] [联动探针] │
│ ┌──────────┬──────────────────────────────────────────────────────┐ │
│ │ 槽 1~4    │ 开关(35) │ 對話(13) │ 參數(29) │ 原始字節              │ │
│ │ 页 1 / 2  │                                                       │ │
│ │ 快照信息  │                                                       │ │
│ └──────────┴──────────────────────────────────────────────────────┘ │
│ ● 未保存改动 N 项                        [放弃改动] [保存到文件]      │
└──────────────────────────────────────────────────────────────────────┘

新建档:按出厂默认生成一份新账号档(可顺带指定要开的开关序号,如 30,31)。<br>克隆:把当前选中账号的槽 0 配置整份复制给新账号(保留目标版本号、血蓝字段归 50%)。

四个标签

标签内容对应文件位置
开关35 个复选框,位 0~34页内 0x074 + i
對話每秒重複對話(3~999)+ 13 行内容 + 13 个勾选0x098(uint16) / 0x0A9+78×i / 0x09C+i
參數29 个 0~255 数值(99=未设置)页内 0x56C + i×2
原始字節只读 hex dump,可核对任意偏移整页 1476B

保存行为

联动探针(右上按钮)

解决「35 个开关位分别对应界面哪个勾选框」这个还没闭合的问题:

  1. 点「开始探测」→ 记录当前快照
  2. 回游戏,打开内挂面板,只改一个勾选,点「儲存」
  3. 回来点「比对变化」→ 直接告诉你是 槽? 页? 开关[12] 0 → 1

一次测一位,测几次整张表就齐了。


三、必须知道的机制(实测结论)

文件  ──登录进游戏,读一次──▶  内存镜像  ──只有点面板「儲存」──▶  文件
                                        (正常退出不写盘)
结论证据
文件是唯一真源,登录时读一次改成 Z01-NXE7HQ 后重开,13 行一字不差
正常退出游戏不写盘关游戏后 MD5 与关前完全一致
只有面板「儲存」会写盘面板改 999 → 文件 0x098 = E7 03
游戏运行中改文件不会被定时覆盖改完连采 15 秒纹丝不动;只有碰面板才被反写
内存镜像与文件逐字节同构11808 字节差异 0 处

所以标准操作流程是

完全退出游戏  →  改文件  →  重新登录进游戏  →  内挂面板才会是新值

注意:游戏运行期间,只要你在面板上点了「儲存」,内存里的旧值会把你的改动覆盖掉。<br>界面顶部会出现黄色提示条,就是提醒这件事。


四、字段对照表(已实证)

页基址:文件偏移 = 4 + 2952×槽 + 0x5C4×页(槽 0~3,页 0~1)

偏移长度含义备注
0x0002页标记 01 01非 01 01 视为该页未启用
0x0064版本标记 16 43 01 01随账号变
0x00C / 0x0104+4float(实测 0.84 / 0.55)混有运行时数据(疑似 HP%/MP%)
0x01C~0x06F12×8数值区每组前 4 字节 float
0x07435功能开关位图每字节一个开关,0/1
0x0982每秒重複對話次数 uint16 小端面板限制 3~999,999 = E7 03
0x09C1313 行对话的勾选位每字节 0/1
0x0A913×7813 行对话内容BIG5,00 结尾,剩余补零
0x4A8196第二组设置0x4BA 处另有版本标记
0x56C29×2参数表取每项低字节;面板上 99 = 未设置
0x5A6~0x5C3—尾部—

字符编码

对话内容存 BIG5(繁体)。<br>输入简体字会编码失败 —— 工具会明确报「含 BIG5 无法表示的字符」并拒绝保存,<br>不会静默写成 ?。要写中文请用繁体字。


五、命令行速查

cd D:\AI空间\rxjh\tools

python rxjh_aut.py list                      # 所有账号档一览
python rxjh_aut.py list orzo                 # 某档 4 槽概览
python rxjh_aut.py pages orzo                # 各页字段明细
python rxjh_aut.py dump  orzo --slot 0       # 槽 0 两页十六进制
python rxjh_aut.py fields orzo --slot 0 --page 0

# 改(--dry 只预演;默认自动备份)
python rxjh_aut.py set orzo --page 0 --count 555
python rxjh_aut.py set orzo --page 0 --switch 12=1 --switch 13=0
python rxjh_aut.py set orzo --page 0 --param 0=42 --param 3=99
python rxjh_aut.py set orzo --page 0 --item "0=測試內容"

# 槽操作
python rxjh_aut.py copy  orzo --from 0 --to 1     # 复制槽
python rxjh_aut.py clear orzo --slot 1            # 清空槽
python rxjh_aut.py diff  orzo --a 0 --b 1         # 比较两槽

# 导出 / 导入(JSON,含每页原始字节)
python rxjh_aut.py export orzo --out bak.json
python rxjh_aut.py import orzo --src bak.json --src-slot 0 --to-slot 1

# 新建 / 克隆(给新角色带配置)
python rxjh_aut.py default                        # 打印出厂默认骨架(不写文件)
python rxjh_aut.py new abc001                     # 生成空白默认档
python rxjh_aut.py new abc001 --switches 30,31    # 默认 + 开 30、31
python rxjh_aut.py clone orzo abc001              # 把 orzo 槽0 配置复制给 abc001
python rxjh_aut.py clone orzo abc001 --dry        # 只看会做什么

游戏在跑时 set 会被拦下,确认要写加 --force(new / clone 新建不存在的档不会拦)。

新建/克隆的语义:出厂默认 = 全 0 + 11 个骨架字节(文件头 6A + 页标记 01 01 + 版本 AA 42 + 01 01 + 两个 1F(float 0.5) + 版本镜像 AA 42)。<br>开关全关 / 每秒重复 0 / 对话空 / 参数 0 / 血蓝阈值 50%。克隆时会保留目标档的版本标记、把实时血蓝字段归 0.5。<br>详见 内挂默认档_来源与新建_20261019.md。

出厂模板(现成文件)

tools/ 下已放两份可直接用的初始档,改名即用:

文件版本标记说明
rxjh_初始模板_AA42.aut0x42AA与真实存档 loldsx3.aut MD5 完全相同(差异 0 字节)
rxjh_初始模板_4316.aut0x4316跟当前客户端版本,与该模板只差 4 字节
# 直接用(复制到 client 目录并改成账号名)
copy "D:\AI空间\rxjh\tools\rxjh_初始模板_4316.aut" "D:\rxjh2025\client\我的号.aut"

# 重新生成
python rxjh_aut.py default 我的模板.aut --version 0x42AA
python rxjh_aut.py default 带开关.aut --switches 30,31

默认档来源的反汇编取证见 内挂初始化配置_来源_20261019.md:exe 里没有静态模板数据块,是代码 memset(11808) + 写 4 个 01 现场生成的。

35 个开关(0x074..0x096)

python rxjh_aut.py switches orzo            # 35 项对照表:偏移 / 110 档实测开启率 / 判定 / 当前值
python rxjh_aut.py switches orzo --page 0   # 只看页 0

#30(0x092) 80%、#31(0x093) 77% 是几乎必开的两项。

详见 内挂35项开关_实测对照_20261019.md。


六、CE 在线读写(游戏运行中)

tools/rxjh_cfg.lua(30 个函数)+ tools/rxjh_ctrl.lua(控件库)。

先复制到纯 ASCII 路径(CE 的 loadfile 对中文路径不稳):

cp "D:/AI空间/rxjh/tools/rxjh_cfg.lua"  C:/rxlib/
cp "D:/AI空间/rxjh/tools/rxjh_ctrl.lua" C:/rxlib/

CE → Table → Show Cheat Table Lua Script,粘贴执行:

local cfg = assert(loadfile([[C:\rxlib\rxjh_cfg.lua]]))()
cfg.locate([[D:\rxjh2025\client\orzo.aut]])   -- AOB 自动定位当前进程的内存镜像
cfg.show(0, 0)                                 -- 打印槽0页0全部字段
cfg.set_count(0, 0, 555)                       -- 改每秒次数
cfg.switches(0, 0)                             -- 看 35 个开关
cfg.dump_to([[D:\rxjh2025\client\orzo.aut]])   -- 内存导出成 .aut(MD5 与真实存档一致)

⚠ 内存基址每次启动都变,必须 locate() 重新定位,不要写死地址。<br>⚠ 改内存不会自动落盘,也不会刷新已打开的面板;只有点面板「儲存」才会写回文件。


七、已验证 / 未验证

已验证

未闭合


八、故障排查

现象原因 / 处理
双击 bat 一闪而过命令窗口里会有错误;确认 python 路径存在,或改成系统 python
浏览器打不开端口被占会自动 +1,看命令窗口打印的地址
保存后游戏里没变必须完全退出游戏再重进(登录才读文件)
改完又变回去了你在面板点了「儲存」,内存旧值反写了 → 用「备份/还原」恢复
提示「含 BIG5 无法表示的字符」输入了简体字,改成繁体
提示「每秒重複對話只能是 3~999」面板本身的硬限制
文件列表是空的确认 D:\rxjh2025\client\ 下有 .aut,且大小为 11812
本页由 Markdown 报告自动转排;如需原始 md,可在原会话工作区取用。