Unity3D+il2cpp游戏 某荒野生存游戏逆向过程 仅过隐私政策、实名认证、正版授权

查看 128|回复 10
作者:纸条   
刚学完逆向搞的,没啥技术含量,包含完成整过程所以图比较多。
实现
去除启动界面隐私政策
去除身份实名验证
去除正版授权验证(凭感觉)
AndroidKiller反编译
直接拖到AndroidKiller反编译,反编译不成功是工具太老了。
去除启动界面隐私政策

直接搜索对应的文字:

往上找到跳转:

判断条件直接改成 goto,跳过隐私政策:

Il2CppDumper逆向
复制libil2cpp.so、global-metadata.dat到i文件夹下,逆向得到相关文件。具体以实际路径为准。
Il2CppDumper.exe ./i/libil2cpp.so ./i/global-metadata.dat o
得到这些

IDA修改
用大姐姐打开libil2cpp.so文件,等待加载完成,这里不动就加载完了

下边的执行脚本步骤感谢论坛大佬 mlgmxyysd 的分析文章。
选择脚本文件:

选择 IL2CppDumper 里的 ida_py3.py ,选择分析出的 stringliteral.json


等脚本跑完再次执行脚本,选择 ida_with_struct_py3.py,然后分别选择分析出来的 script.json 和 il2cpp.h,脚本运行时间比较长,让 IDA 先在后台跑。

去除身份实名验证
使用编辑器打开Il2CppDumper逆向得到的stringliteral.json文件。
搜索 验证错误 :

对应这个地址:

大姐姐按G键跳转到地址:

就是这段代码了

右键点击 List cross references to… 来列出字符串的交叉引用。

直觉告诉我是第二个

OK按钮后跳转到这里

按空格键查看代码执行流程,可以看到做了某些判断,如果不成立就执行验证错误这段代码

没学过汇编看不懂什么意思,让AI帮看一下:
CBZ X0, loc_1A749C0:
● CBZ 是 Compare and Branch on Zero(比较并在零时跳转)的缩写,它会检查寄存器的值是否为零。
● X0 是要检查的寄存器,如果其值为零,则跳转到 loc_1A749C0 处执行代码。
那么直接给寄存器赋值为0,那是不是跳转过去了呢?
LDR X0, [X20,#0xA0]:
● LDR 是 Load Register(加载寄存器)的缩写,它将从内存中加载数据到寄存器。
● X0 是目标寄存器,[X20,#0xA0] 是源地址,表示从 X20 + 0xA0 的地址加载数据到 X0 寄存器。
空格切换回来,鼠标光标停留在LDR这一行

直接修改这一段为MOV X0, #0 ,就是将寄存器X0的值修改为0

点击后是这样的

修改改为MOV X0, #0  回车确认修改

保存so文件

保存编译运行,失败了,但是错误验证提示没了,说明思路没问题,距离成功又近了一步。

看看验证成功后是什么样的,输入真实的身份证进行认证,这个是认证之后的,函数是PeopleModeManager$$OpenChoseBoard

回到验证错误这里,空格再次查看执行流程,出现错误的话跳过了认证成功的代码,所以改这里是没用的。

不出现错误的话就一直循环执行认证的代码,所以修改这里也是不对的

往上翻到最上边验证错误分支这里,这里判断寄存器是否为0,如果不为0就跳转到上边图中验证错误的代码。那么这里直接让他跳转到另一段代码就好了。

直接把TBZ             W0, #0, loc_1A748C0 修改为 B               loc_1A748C0 直接跳过验证错误的这段代码

打包运行看看效果

隐私、认证跳过去了,然后内购、正版验证下边就无解了,没有对应的代码,求大佬支个招。


31.png (111.33 KB, 下载次数: 0)
下载附件
2023-12-11 12:48 上传

去除正版授权验证(凭感觉)
可以直接CTRL + F 搜索“保存打包运行,失败了”跳过失败的步骤。忽然来了灵感,搜索跳转链接的地址
{
  "value": "https://www.taptap.com/app/147513",
  "address": "0x24349F0"
},
一样的,详细步骤都在上边了。

搜索到三个函数,前两个看起来是跳转到链接,第三个是获取链接,这里就有意思了,为什么这么说,因为一定是某个原因导致他要获取下载正版APP的链接,只要往上追踪,不就可以跳过了(正版授权)吗?

往上翻,第一个跳转在这里,但是在上边还存在跳转,从左边的虚线、箭头的函数可以看出来。

继续往上翻,都是包含GetAppStoreUrl函数的,翻到这里就是跳转开始的地方

空格键切换到代码执行流程

不成功跳转到下方图片函数这里

这里的函数又做了一个判断,成功了跳转出打开链接的所有函数。

看到这里恍然大悟,这一大片都是执行打开链接的函数,钻了个牛角尖。继续回到最原始的问题,刚刚空格切换过来的地方,为什么会获取链接?BL 是 Branch with Link 的缩写,同样用于函数调用。看到这两个函数,再结合下边一大片获取链接的函数,我是不是可以理解为未解包和解包?未逆向和逆向?

直接修改跳转到未解包应该跳转的代码loc_14F9964,对应的截图可以看往上数第二张图红框部分。

保存打包运行,失败了,真是奇了怪了。
但是我们的ARM 指令在共享库中是按照其出现的顺序执行的。当程序调用库中的函数时,操作系统将加载该共享库,并按照函数的入口地址开始执行其中的指令。所以直接在ARM指令界面这里鼠标继续往上翻,能看到一些GoToTheGameDownloadForBroken、GetBugCodeUrl、GetUpdateInfoUrl等等函数。一直到看到这个函数,GetLaiyuan,当时是理解为获取来源,来源,来源,可能就是这里...

直接空格,直接拖动到最上边的代码分支,又看到熟悉的两个函数


直接改成跳转到成功的地方

打包运行,成功了。

有空继续看看内购的。
结束 附SO文件
下边是对应的so文件,大佬一可以帮看看内购的:
https://www.123pan.com/s/ZbN8Vv-M52od.html 提取码:Y4bb
下边只是图片,不用看,不知道为啥显示在这里。

函数, 寄存器

纸条
OP
  


芽衣 发表于 2023-12-11 15:21
内购是签名验证问题,肯定无解。估计要调用支付宝或者微信

谢谢大佬!18年有大佬整过,不知道是不是同一个方法,当时他整的是过正版,那时候还没内购,不知道他是怎么弄的,因为这里搜不到方法了,不知道是动态的还是怎么的
芽衣   

尽快修改一下你的帖子贴图,因为你方法用错了,图片会很快失效,参考这个方法贴图:https://www.52pojie.cn/misc.php? ... 29&messageid=36
tulei2522563   

内购是签名验证问题,肯定无解。估计要调用支付宝或者微信
zw8861   

感谢大神的教程
ldecxh   

学习学习,有点复杂
ts73033   

Il2CppDumper逆向得到的stringliteral.json,好像失败了。哦哦不对前面我弄错了
aa361328   

论坛有你更精彩
叼烟的声音   

这么多图~~~~~~~~~~~
fnckyon2014   

虽然图挺乱,我竟然耐心看完了。。。
您需要登录后才可以回帖 登录 | 立即注册