碧蓝航线Lua代码和JSON数据提取方案

最终成果 Lua代码: AzurLaneTools/AzurLaneLuaScripts JSON数据: AzurLaneTools/AzurLaneData 相关工具 数据解密工具 碧蓝航线使用了luajit作为脚本引擎, 核心代码都保存在 scripts32 文件中, 此外还有部分数据保存在 sharecfgdata 目录下. scripts32文件使用了两层加密: 外层是对 UnityAssetBundle 文件整个加密, 可以使用 uabdec 进行还原. 还原后, 得到 UnityAssetBundle 文件, 可以使用 UnityPy 等工具提取出加密后的 LuaJIT 字节码. (PS: 其实是对字节码进行了部分魔改) 这些字节码可以使用 bcdec 进行还原, 还原后将会得到正常版本的 LuaJIT字节码. 开发过程中, 也尝试对上面两个解密工具进行了一些二次开发, 例如linux环境适配、支持使用stdin/stdout直接输出等. 对于JSON数据提取来说, 可以直接补全或者模拟部分运行环境后, 直接执行这些LuaJIT字节码, 可以免除反编译的时间. AzurLaneData 目前的提取流程就是使用的这一方式. 当然, 在没有看到过反编译结果的情况下, 补全或者模拟运行环境其实是不太现实的任务, 因此在分析阶段还是会依赖于反编译的结果. 反编译工具 LuaJIT 字节码的反编译也有一些现成的工具, AzurLaneLuaScripts 目前使用的是AzurLaneTools/ljd. 这是基于Dr-MTN/luajit-decompiler进行了一些针对性二次修改的版本, 主要修改其实就是针对反编译时的各种报错进行手动处理. 此外, 还加上了一些辅助函数, 例如支持bytes的输入和输出, 从而减少文件IO. 其他工具 除了数据处理之外, 数据获取也是一个不可忽略的部分. 这里需要的文件是 scripts32 文件, 以及 sharecfgdata 目录下的所有文件....

2022-06-15 · AutumnSun

混合图片生成原理推导

记录一下’混合图片生成工具’的实现原理和一些相关资源

2022-04-29 · AutumnSun

碧蓝航线CD计算工具

部署地址: azurlanetools.github.io/az-cd Github仓库: AzurLaneTools/az-cd 不知道为啥, Wiki的大佬们都非常喜欢使用Excel来实现一些计算功能. 我个人是更习惯于直接上代码, 通过代码而不是一堆Excel函数来实现计算逻辑. 这个CD计算工具也参考了Wiki和Excel版计算器中不少的内容. CD计算器的数据源方面, 一开始是想着从Wiki爬取的, 后来随着解包项目的落地, 自然变成了直接解析解包结果. 不过, 由于舰娘头像等图片内容目前没有上传到Github, 因此CD计算工具也就没法实现全自动更新. 之后有时间再继续完善吧.

2021-07-09 · AutumnSun