本帖最后由 fjqisba 于 2024-4-28 10:31 编辑
最近买了一个Nordic Ashes玩一玩,但是这个游戏实在是太肝了,于是乎想用CE引擎修改一下数量,加快游戏进度。
结果尝试了多种方法发现定位不到种子数量,网上试着找找别人的修改器,发现也不太好使,于是打算自己出手了。
解包
发现游戏用了GameAssembly.dll,貌似是C#转C++之类的技术吧,直接去Github
https://github.com/Perfare/Il2CppDumper
然后命令行走一个
Il2CppDumper.exe C:\Program Files (x86)\Steam\steamapps\common\Nordic Ashes\GameAssembly.dll C:\Program Files (x86)\Steam\steamapps\common\Nordic Ashes\Nordic Ashes_Data\il2cpp_data\Metadata\global-metadata.dat
成功解出数据
分析
解出来的script.json比较关键,里面有函数的签名和其在GameAssembly.dll中的偏移地址。
搜了搜leaf、seed之类的字符串,发现里面有一个YggdrasilManager__ExchangeSeedsForLeave函数非常可疑啊,这不就是把种子兑换成世界树叶子吗,进去分析了一下函数
发现*(a1 + 0xA4)这个值比较可疑啊,于是下个断点,断下来的时候把它改大一点,结果就直接成功了。
总结
*(a1 + 0xA4)这个值和实际拥有的种子数对不上,回想起之前用CE修改器修改种子数失败,我猜游戏并不存储你现有的种子数,存储的估计是你的历史曾获取的种子总数。
像界面上你拥有的种子数啊,叶子数量啊,相当于都是每次根据历史种子总数结合算法算出来的,CE自然就定位不到数值了
|