实现
去除启动界面隐私政策
去除身份实名验证
去除正版授权验证(凭感觉)
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
下边只是图片,不用看,不知道为啥显示在这里。