想直接看结果的直接看最后部分
推广可以换3天会员,我们还是先从推广这里破解,毕竟不需要修改程序,兑换的会员永久可用,后期升级也不用再次破解。第一步 抓包:{"sign=75708acd1f8b068edb4ffe4c523e9ed8","data=6d62546b省略76ee5","_ver=v1","timestamp=1677588163"}
1.png (20.95 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
Jadx打开,搜索“_ver”,结果太多,前面加个双引号再搜索。
2.png (33.2 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
只有两条,点进去发现还是在一个位置。 _ver、data、sign都对上了,f551e其实就是timestamp。可以看到data数据是执行m13880e,Ctrl+单击m13880e。
3.png (10.96 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
继续Ctrl+单击mo33246f
4.png (10.89 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
继续Ctrl+单击 EncryptUtil.encrypt
5.png (27.04 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
又是调用libsojm.so模块。解压apk,找到libsojm.so,用IDA载入。
6.png (40.9 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
7.png (43.29 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
然后混淆的太厉害,水平有限,搞不懂。尝试新写个app调用libsojm.so,直接崩溃,应该是so内部有限制。看来想解密是不行了。回到上面EncryptUtil.encrypt的地方发现也有个几个函数,盲猜decrypt应该是解密的函数,decryptHls解密视频数据,decryptImg解密图片数据。decrypt上右击-查找用例。
8.png (20.35 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
点击第二条。
9.png (10.96 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
同样mo33244b右击-查找用例
10.png (13.52 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
进第一条
11.png (10.02 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
继续m13878a右击-查找用例
12.png (11.05 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
进第二条
13.png (17.48 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
果然是获取返回数据中的data,然后解密。我们可以用MT管理器的注入日志功能来打印出解密后的数据。
14.png (63.11 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
模拟器中打开MT管理器,找到app点击,左下角功能,注入日志记录。
15.png (50.14 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
回到jadx中标签栏右击-复制类名 “com.省略.lib.encrypt.C4354c”,C4354c是便于我们阅读jadx自己命名的名称,只保留最后一位,真实类名是 com.省略.lib.encrypt.c,粘贴到MT管理器中,然后确定。会生成一个_log结尾的app。
16.png (25.04 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
点击新的app-查看-点击classes.dex-DEX编辑器++-全选-确定。
17.png (39.35 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
搜索-新的搜索-搜索类名 com.省略.lib.encrypt.c 结果就一个,点击进去。
18.png (86.42 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
点击右上角三个点-搜索-Lmt-下一个 把这两行剪切,这就是MT管理器注入的日志记录功能[Java] 纯文本查看 复制代码 .local v0, "0001.java:1":V
invoke-static {v0}, Lmt/LogF1E2C9;->a(Ljava/lang/Object;)V
19.png (60.51 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
点击右上角左边的指南针按钮,选择M图标o的方法点切换。因为上面分析了我们要记录mo33254o中的解密数据,所以选择o,M表示method方法。
20.png (58.4 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
向下找到method结尾的地方。1032行可以看出调用com.省略.lib.encrypt.c 中的a方法,就是上面Jadx的m13878a。1034是把结果给p1,1036行返回结果。所以我们在1035行添加日志记录,再结果出来还未返回的时候记录。粘贴上面剪切的代码,v0改为p1,然后一路返回,保存,签名。安装新的app,打开app,然后在MT2/logs目录下会有.log文件。打开发现如下的数据:{"daily_view":1,"data":{省略省略"type":"android","version":"5.7.1","web_url":""}},"isVip":false,"msg":null,"status":200}直接看到“isVip”。。。简单问题想复杂了。。。从这里开始看
21.png (20.85 KB, 下载次数: 0)
下载附件
2023-3-8 16:27 上传
回到Jadx,搜索isVip,点第二条。
22.png (30.19 KB, 下载次数: 0)
下载附件
2023-3-8 16:28 上传
response.body、isVip、daily_view,猜测是获取返回信息,然后提取isVip和daily_view。上面的“服务器异常,请稍后再试”可以用来定位。
23.png (44.77 KB, 下载次数: 0)
下载附件
2023-3-8 16:28 上传
MT搜索“服务器异常,请稍后再试”,搜索类型为代码。也可以用上面的类定位方法。Jadx中类名为AbstractC5124g,所以选择g的那条。
24.png (79.79 KB, 下载次数: 0)
下载附件
2023-3-8 16:28 上传
向下找到isVip和daily_view。
25.png (108.1 KB, 下载次数: 0)
下载附件
2023-3-8 16:28 上传
修改如上图。然后本地会员破解完成。兜兜转转又回到原点,一开始就搜索isVip的话就一步到位了。只是简单破解,能看免费视频了,其他功能再慢慢研究吧。