LOADING

加载过慢请开启缓存 浏览器默认开启

Unity游戏逆向与mod开发:与你共享Lo-Fi故事(2) Todo同步

2025/12/21 逆向 Unity

前言

我大概是写完了那个同步SMTC的mod,接下来就是用DOTween加动效还有一些细节修改就好了

那么我要实现我第二个目标了,就是Todo的同步

鉴权问题

既然要同步我们游戏肯定得获取Token去操作

那方案有几种

  • 拉起浏览器,用户授权 mod拿到refresh token
  • 或者Device Code Flow让用户输代码授权

第一种方式实现有点复杂,因为我们得在mod内部启动一个httplistener去监听Oauth的回调地址

第二种简单一点但是我觉得很不健康也不够易用 所以我还是打算拉起浏览器

开始坐牢

微软现在的模型不是单一的GPG Key或者Access Token

而是OAuth授权并获取Refresh Token,用Refresh Token获取Access Token,然后用Access Token去获取Todo数据

也就是说我得先创建App拿到ClientID才能去走OAuth的模型

Azure Portal申请

第一步就卡住了,微软死活不给我创建Azure账号

后面交了工单结果有人专门联系我去一对一处理 微软牛逼 我不骂你了

不管怎么说我们得先创建一个App 在Microsoft Entra里面

chrome_r2R4KB7leW.png

然后拿到ClientID再去研究怎么写代码

chrome_zIe6LXhlu2.png

Api处理

微软其实有提供SDK去干这些,但mod加这么大的SDK估计又要出一堆兼容性问题

而且手动构建http url也不算麻烦 就自己维护好了

到时候应该会写个库丢出来

我在思考的是如何实现更新后迅速同步到游戏中

微软本来的Todo是基于Windows Push Notification Services实现动态更新的

游戏做不到,而且官方自己应用的Api Key限流应该很高 几秒一次轮询都没问题

所以游戏的话方法不多 我暂时打算还是30秒一次查询

游戏逆向

有UE之后找类就好找很多了,游戏和这个有关的大概是这几个类:

  • FacilityTodo
  • TodoListUI
  • TodoListData
  • TodoData
  • 管理Todo持久化数据的 SaveDataManager

和音乐播放器设计其实如出一辙了

FacilityTodo这个类负责初始化UI以及管理数据

主要也是对着这个类做手脚

剩下的基本就是写代码

碎碎念

我看到别人给游戏做的mod里面被塞满了功能我其实不是特别理解

比如同步天气为什么要带一个全解锁的功能呢

就算不分两个repo起码分成两个dll吧

还有比如让游戏支持flac的同时为啥要顺便加上wallpaper engine支持

模块化设计呢 functional programing呢

总不能写mod也和微信一样想着包揽万象吧

当然别人怎么写是别人的事 我fork就是了 单纯吐槽一下