imxz | 发布于 2019-02-08 19:03:08 | 阅读量 396 |
发布于 2019-02-08 19:03:08 |

又名,打手枪的正确姿势?!
 依旧是存档修改.
果真,一个人的时候就是闲的蛋疼.
前两天下载了这款游戏,
但是玩一玩就鸡儿要充值,要会员.
还有鸡儿体力限制,想肝都不行.
对我来说 也懒得肝,搞不定就卸载游戏 不玩了.

游戏是IOS版本的.
细看了下是Unity3D制作的游戏.
我的想法是看看有没有安卓版本的.
在看看是不是C#Dll形式存在的代码.
如果是这样 那就搞, 如果是il2Cpp形式的 就放弃.
懒得费时看C++汇编了

准备
1.一个越狱的手机
2.VS
3.脑子

Android版本下载地址:
http://www.pc6.com/azyx/604623.html
发现正合心意.

将其解压拖入ILSpy发现 主要的 C#Dll Assembly-CSharp.dll无法被正确解析,
无效的COFF头部.
百度+谷歌了一下. 说用 dnSpy 反编译工具 就行了.
现在我们可以看游戏代码了,
然后呢 我们定位 游戏存档.
存档的位置在 程序的数据目录下的Documents目录下 名字叫 savegame.bin

其中 savegame.bin.bkp 是上一次的备份.
后续的分析中可以看到

 

将C# Dll 解压出来后

全部拖入 dnSpy 中 反编译 然后搜索 savegame


先说一下,这个游戏是有云端存档的.就是存档会发送到云端.

同账号可以互相拉取存档.

所以这里可以看到 有上传存档的地方.

这个并不在研究之列,因为比较麻烦 暂时还不能进行验证.

我在一家淘宝店中看到的,

那他用的应该就是文档上传以及下载

 

跟入 App.SaveFilePath 可以看到它在拼接 存档地址

跟入Save 可以看到 它在地址后面主动拼接了bin, 其中还有个加密的key

 

继续跟入

 

  发现它开始写存档了

先是写入了4字节的头部,

然后写入占位4字节

然后写入是否加密存档.

这里 我们 可以主动的 将 SaveStream 它自己实现的流 类 拷贝出来 

在VS中 建立 C# 控制台工程 还原相关联的所有类即可

继续跟入

 它就在写入数据了

但是这里要注意.

这个自定义的流 在写入的时候 将会 直接进行 RC4 加密 

我们这个时候将关联的所有对象 还原.

就差 秘钥了

从代码上看

它写入的是 CRC值 ^ 秘钥的 UINT型 但是 我在这里被忽悠了,

它的秘钥长度是很长的,但是他取出来的只是4个长度,

如果反推 则只能的到 4字节的秘钥 , 并非完全的秘钥,

我们重点需要去寻找秘钥如何产生的!

有了写,反向就是读!

 

让我们开始寻找秘钥吧

 跟入 

App.SaveGameKey

 

 其中函数 SaveGameKeyFromUserId 是 使用 UserID 产生秘钥的方法 需要还原.

我们需要跟入

GetUserID

它个字段的包装,

我们需要跟_userid 查找它的使用的地方

 

  我们找到了 KeychainAccess.GetKeychainString() 它是由这个过来的,继续跟入

 

我们可以看到 它是使用了 Unity3D 引擎上的 PlayerPrefs 来进行 存放和读取的

由于Unity3D 是跨平台的 

 PlayerPrefs 在不同的平台上 存放的方式 以及路径是不一样的

这个帖子说了 对应平台的路径[https://blog.csdn.net/william_lv/article/details/39520367]

我们在IOS上的数据目录下的Library/Preferences/包名.plist中可以找到 键为 unityplugin.keychain 的 UUIDString 值

 这样我们就找到了Key

 

 我们使用这个 就可以 进行读写了

 

其中定位金币和钻石的位置 不太好找 

我找了较长的时间 只是定位了 金币和钻石

 

因为没有明确的名字 他这个应该是Hash值.坏滴很.

我的定位思路也比较模糊了.

就不发了

 

将存档读取修改写出然后替换即可.

代码放在了GitHub上,需要的自取

 

https://github.com/Imzpy/games

文件名叫 Sniper3D.rar

 

看下最终效果吧

 

 

 东西随便买 舒服滴很

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


内容更新于: 2019-02-09 12:44:37
链接地址: http://imxz.cn/post/%E9%80%86%E5%90%91%E4%B9%8B%E8%AE%B0-%E7%8B%99%E5%87%BB%E8%A1%8C%E5%8A%A83D-%E4%BB%A3%E5%8F%B7%E7%8C%8E%E9%B9%B0-%E5%AD%98%E6%A1%A3%E4%BF%AE%E6%94%B9%E5%99%A8%E7%9A%84%E5%AE%9E%E7%8E%B0

上一篇: C++与Lua交互之联调

下一篇: 记<消灭病毒>游戏存档生成器实现过程

396 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航