Files
HEROLL/docs/2026-08-24_逆向-HEROLL丹药与Boss循环-report.md

3.5 KiB
Raw Permalink Blame History

HEROLL 丹药与 Boss 循环逆向纠错报告

日期:2026-08-24
工具链:IL2CPP 元数据、runtime-decrypted libil2cpp.so、radare2 6.2.0、配置表、公开资料交叉检索、TypeScript/Playwright
Scope:case scope · timeline

结论

  1. potion.csv 的 HealLevel.value=50/80/110…650 是固定 HP,不是最大生命百分比。独立的 Potion_PercentHeal(valueA=10) 才额外增加 10% 最大生命恢复。
  2. Boss 循环按负责人实机确认实现:玩家 ROLL 2 次后开启 4 次 ROLL 倒计时;倒计时结束逐个把 4 个非祝福玩家地块变成怪物地块,然后回到 0/2。
  3. 旧双击启动器闪退来自 LF-only UTF-8 CMD 与 Windows PowerShell 5.1 的 BOM-less UTF-8 解码问题;已改为 ASCII+CRLF CMD、UTF-8 BOM+CRLF PS1,并加入错误留窗和端到端自测。

Evidence

ID 证据 复现 Hash
E-001 potion.csv 的 21 级曲线 见 E-001 8049…EFA99
E-002 GetPotionFinalHeal @ 0x5473568 native 方法体 见 E-002 AC35…00DA
E-003 Gauge 更新、spawn 调用与清零链 见 E-003 43CE…5CD
E-004 公开资料没有精确基础公式 见 E-004 n/a
E-005 负责人实机 2+4+4 规则确认 见 E-005 n/a
E-006 MVP、浏览器与启动器验收 见 E-006 n/a

Findings

ID 状态 置信度 结论
F-001 validated high HealLevel 是固定 HP;PercentHeal 是独立百分比加项
F-002 validated high Boss 是 2 ROLL 蓄势 + 4 ROLL 倒计时 + 转换 4 格
F-003 validated high 启动器故障由 CMD/PS1 编码与换行兼容性造成

完整字段见 findings.md。

Path

flowchart LR
  cfg["HealLevel 固定值"] --> base["基础恢复 HP"]
  pct["PercentHeal 10% Max HP"] --> add["额外恢复"]
  base --> sum["相加"]
  add --> sum
  adaptive["Adaptive multiplier"] --> final["除以 100 后取整"]
  sum --> final --> clamp["生命上限钳制"]
stateDiagram-v2
  [*] --> Build0
  Build0 --> Build1: ROLL 1
  Build1 --> Countdown4: ROLL 2
  Countdown4 --> Countdown3: ROLL 3
  Countdown3 --> Countdown2: ROLL 4
  Countdown2 --> Countdown1: ROLL 5
  Countdown1 --> BossAction: ROLL 6
  BossAction --> Convert4: 逐格感染动画
  Convert4 --> Build0: 重置循环

完整调用路径见 path.md。

复现命令

C:\Users\toshio\Tools\radare2\bin\radare2.exe -q -c "e asm.lines=false; s 0x5473568; af; pdf; q" work\heroll-stage-2-5\libil2cpp.runtime-decrypted.so
cd mvp
.\Validate-Heroll-MVP.ps1
cd ..
cmd.exe /d /c "set HEROLL_MVP_SELF_TEST=1&& call HEROLL_MVP_双击启动.cmd"

遗留边界

  • 2 + 4 + 转换 4 格 的精确时序来自负责人实机确认;bounded native 证据只闭环 Gauge 增量、范围、spawn 调用和清零。
  • 其他丹药强化若需要宣称“原作完整还原”,仍应逐个恢复 native 消费者;当前 MVP 保留已实现的验证语义。