Skip to content

内核探针 (Woozy Kernel)

内核探针是 1.9.0+ 版本的核心功能,它直接穿透游戏引擎,获取并操控坦克的物理数据(坐标、旋转、速度)。

与普通变量调试的区别

维度变量调试内核探针
作用对象混淆变量(如 BattleUsers.ranks游戏对象(如 LocalTank
数据层级应用层引擎层
访问方式通过 Hook 拦截直接穿透 React 状态树
典型用途修改队伍、监听数据实时操控坐标、旋转、速度
版本限制所有版本1.9.0+ 核心版

工作原理

内核探针通过以下路径穿透游戏:

app-root (DOM 根节点)

__reactContainer$... (React 内部容器)

child.child.stateNode (状态节点)

_reactInternalFiber (Fiber 树)

TOState (游戏状态对象)

BattleStatistics (战斗统计)

World (世界对象)

LocalTank (本地坦克对象)

position / quaternion / velocity (物理属性)

整个过程是动态发现的,不依赖硬编码的属性名,因此即使游戏更新也能自动适配。

打开内核探针

  1. 打开调试器面板
  2. 点击 「内核探针」 按钮(绿色高亮)
  3. 弹出实时监控窗口
┌─────────────────────────────────────────────────────┐
│ 内核探针                                            │
├─────────────────────────────────────────────────────┤
│ 坐标                                                │
│ X: [  0.00]  Y: [  0.00]  Z: [  0.00]             │
├─────────────────────────────────────────────────────┤
│ 旋转                                                │
│ W: [  0.00]  X: [  0.00]  Y: [  0.00]  Z: [  1.00]│
├─────────────────────────────────────────────────────┤
│ [速度归零]                         [复制]           │
│ ● 已锁定载具 (Key_xxxxx)                           │
│ 回车(Enter)写入内存                                 │
└─────────────────────────────────────────────────────┘

功能详解

坐标监控与修改

含义范围
X左右方向负数(左)→ 正数(右)
Y前后方向负数(后)→ 正数(前)
Z上下方向(高度)地面 ≈ 0~30,负数(地下)→ 正数(空中)

修改方法:

  1. 在输入框中输入新坐标
  2. Enter
  3. 坦克会立即传送到新位置

示例:

  • 瞬移到高处:Z 输入 500 → 按 Enter
  • 瞬移到左侧远处:X 输入 -300 → 按 Enter

旋转监控与修改

内核探针使用四元数表示旋转,格式为 (w, x, y, z)

范围说明
W-1 到 1旋转弧度(余弦)
X-1 到 1X 轴分量
Y-1 到 1Y 轴分量
Z-1 到 1Z 轴分量

常见旋转值:

朝向WXYZ
默认方向0001
旋转 90° 向右0.707000.707
旋转 180°1000
旋转 -90° 向左0.70700-0.707

修改方法:

  1. 在输入框中输入新四元数值
  2. Enter
  3. 坦克会立即转向

⚠️ 注意:不熟悉四元数的用户建议不要修改旋转值,错误的输入可能导致坦克方向错乱。

速度归零

点击 「速度归零」 按钮:

  • velocity.xvelocity.yvelocity.z 全部设为 0
  • 坦克会立刻停止移动
  • 配合坐标修改使用:瞬移后点击速度归零,防止被服务器拉回

数据复制

点击 「复制」 按钮,可以将当前所有物理数据复制到剪贴板:

json
{
  "Quaternion": { "x": 0, "y": 0, "z": 0, "w": 1 },
  "position": { "x": 100.5, "y": 200.3, "z": 50.2 },
  "velocity": { "x": 0, "y": 0, "z": 0 }
}

实时状态显示

探针窗口底部显示当前状态:

状态颜色说明
● 等待连接...🔴 红色未进入战斗或内核未就绪
● 已锁定载具 (Key_xxxxx)🟢 绿色已成功获取坦克对象

与其他功能的联动

配合变量调试

内核探针修改的是真实游戏对象,变量调试拦截的是混淆变量。两者是不同层面的修改:

功能修改层面效果
变量调试修改 BattleUsers.ranks改变玩家等级显示(可能无效)
内核探针修改 LocalTank.position真实移动坦克

配合插件系统

插件可以通过 API 调用内核探针:

javascript
// 插件示例:自动瞬移
const api = ctx.getApi();
const kernel = api.getKernel();

// 瞬移到坐标 (100, 200, 50)
kernel.position.x = 100;
kernel.position.y = 200;
kernel.position.z = 50;

// 清空速度防止回弹
kernel.velocity.x = 0;
kernel.velocity.y = 0;
kernel.velocity.z = 0;

常见问题

问:显示“未找到载具”怎么办?

答: 请确认:

  • ✅ 已进入战斗(倒计时结束)
  • ✅ 坦克已生成
  • ✅ 游戏版本为最新

如果仍然不行,尝试刷新页面重新进入战斗。

问:修改坐标后坦克弹回原位?

答: 这是服务器的位置校验,内核探针会自动清空速度,但如果仍然回弹:

  1. 修改坐标后立即点击「速度归零」
  2. 尝试连续多次修改
  3. 某些模式/地图禁止坐标修改

问:数值会自动恢复?

答: 如果游戏引擎持续更新该属性(如速度受加速度影响),修改后可能会被覆盖。可以:

  1. 使用 JS 脚本持续注入(变量调试功能)
  2. 每帧强制写入(需要编写插件)

问:探针的数值是实时更新吗?

答: 是的。探针窗口使用 requestAnimationFrame 循环刷新,约 60 次/秒实时更新,延迟极低。

技术细节

发现机制

内核探针通过以下步骤动态发现对象路径:

  1. app-root__reactContainer$ 获取 React Fiber 树
  2. 递归遍历找到 BattleStatistics 相关状态
  3. 提取 World 世界容器
  4. 找到 LocalTank 本地坦克
  5. positionquaternionvelocity 创建代理对象

为什么能适配游戏更新?

因为整个过程不依赖硬编码的属性名,只依赖固定的数据结构模式(如长度为 3 的数组表示坐标、长度为 4 的数组表示四元数)。只要游戏引擎的数据结构不变,内核探针就能自动适配。

安全性

⚠️ 重要警告

风险说明
游戏规则修改坐标、速度等物理属性属于作弊行为
检测风险服务端可能检测异常移动并封号
使用建议仅限私人服务器或技术研究,严禁在正式对战中使用

下一步

内部技术交流 · 禁止外传