Baldr Sky Dive1+2 插件Jbsd Ver1.0.0发布
Baldr Sky Dive1+2 插件Jbsd Ver1.0.0发布
前言
众所周知 巴德尔之空(Baldr Sky)是一部戏画在2009年发售的少女恋爱游戏
作为巴德尔系列的传统 那我们机甲战斗这块肯定少不了
但是想必很多人和博主一样 是一个手残党 或者说并没有那么多时间去研究combo连招 只是想单纯地看看剧情
对于2025年的人来说 毕竟是处在这样一个快节奏、快餐化的时代 时不时插入的动辄花费不少时间的战斗 属实是有点影响体验感(这里叠个甲 当然喜欢这种战斗并带入的玩家也不在少数 奈何博主是个剧情党)
因此 博主就想写一点小工具 优化一下战斗体验 所以一个十分简单的小外挂应运而生了
分析(可跳过)
首先感谢逆向大师doctor3的帮助
All in all
本工具使用Python-frida && Javascript
实现某地址指令的hook 并更换处理逻辑
Analysis
把BaldrSky.exe拖入CheatEngine(或者IDA)
打开Memory Viewer
准确定位到BaldrSky.exe+158D71 如下图
可以选中当前地址 按F5打个断点
然后进游戏随便找一个设置菜单 进练习里攻击一下假人 发现断点生效
那这里实际上就是每个机体受到伤害时减少血量的逻辑
sub [esi+00001564],edi
当我们把这个edi调成很大很大的值 然后恢复断点继续运行 发现练习的假人直接被我们秒杀了
然而这并非敌人受到伤害扣血的逻辑 而是所有机体(除某些剧情机体)受到伤害扣血的逻辑
每个机体的esi不同 所以他们[esi+00001564]
这个地址的值也不同
所以说盲目的修改edi会导致主角也被秒杀 所以在这里我们需要引入一个判断 然后对不同的机
体实现不同的逻辑
那么我这里用的是比较简易的frida
和javascript
先通过前期调试打印 发现主角机体的血量初始为1000(关闭所有增加血量的插件)
因此我们可以做这样一个逻辑
- 在
BaldrSky.exe+158D71
这个地址上进行hook - 检测
[esi+00001564]
这个地址的值是否为1000 - 若为1000 则将edi修改为0 保持原逻辑继续运行
- 若不为1000 则将edi*100 保持原逻辑运行
然后我们便得到了一个简单的主角无敌 敌人脆皮的小外挂
当然这个插件的bug很多 比如这个游戏有友方机体共同作战的场景 而友方机体血量也都不为1000 那么友方机体受到伤害时 也是个脆皮 而战斗基本上都要求友方也不能战死 所以得尽全力保护友方机体
但是由于我比较懒 而且全GE通关下来 我可以保证不超过3处是需要切换难度或者关闭外挂才能通过的关卡 所以还算勉强能用 就不深入研究了
注意事项
- Jbsd仅使用血量是否为1000判断是否是主角机体 只有当血量为1000才有无敌 否则会造成大量伤害 因此请关闭机能扩张中所有增加血量的插件 同时如果碰到敌方机体血量也为1000时请关闭Jbsd(情况比较少数,例:记忆溯行中基本所有的机体)
- 由于第1点的限制 所有友方机体血量都不为1000 若是碰到与友方机体共同战斗的场景 尽量尽快解决战斗 不然友方机体很可能也被敌方机体秒杀(实测使用轻机枪基本所有场景都可以保护住友方机体)
- 根据第2点 在战斗中可能会出现三种情况
- 队友战死 战斗失败 可选择Retry
- 队友战死 但是战斗正常结算 点击Close后闪退(这时重开插件和游戏即可)
- 队友战死 战斗正常结算 点击Close后继续剧情(这一般是死掉的队友不是主要人物 因此无伤大雅 或者在此处没有检测队友是死是活)
- 本插件并未实现无限热量的功能 因此最好使用轻机枪等射速快耗热量少的武器 在某些情况下保护队友可能比较困难 建议修改难度为VeryEasy后再次战斗
- 仅发布在Github上 插件的使用请遵照Github的README
发布
小剧透警告
什么!打不过吉鲁贝鲁特?打不过久利原老师?打不过千夏?打不过真酱?(这是真打不过)打不过镇静剂?打不过十九?什么!我是个纯爱战士!蕾被看光自爆那种事不要啊!菜叶被RAPE那种事不要啊!千夏被RAPE那种事...好像也不是不能接受
大丈夫大丈夫 本外桂带给你超人一般的体验 吉鲁贝鲁特?真女主跪下! 久利原老师?跪下! 千夏?跪下! 真酱?可爱捏! 镇静剂?跪下! 十九?给我这个恋母控的超级大脑AI看笑了
装上手枪和轻机枪 直接化身John Wick 一枪一个不是梦