日期: 2024.06.28
声明:文章内容仅供学习参考,严禁用于商业用途,否则由此产生一切后果与作者无关,如有侵权请联系作者进行删除
app 版本:30.8.4
firda 版本:12.4.8
ida版本: 7.7
010 Editor
平台:andriod arm64-v8a

拿到一个新的app,首先需要的是抓包,才能找到需要对应分析的接口,以及接口中需要什么加密,该app采用一些常规的方式进行抓包时,发现抓不到包。一般遇到这种情况,我们就有两种方案:
-
通过google搜索,看看是否存在前人对该app进行一定的研究;
-
在1没有的基础下,就需要自己从头开始研究,通过日志 插桩等方式;
很幸运,该app的分析在搜索引擎上简直五花八门,可以定位到同系列自研通信协议的libsscronet.so中,也有不少的hook_sscronet.js存在,也确实可用,但后续需要对该app进行解密分析,太多的frida代码有点不舒服,故这里带来除去frida注入的方式绕过的第二方案。
通过站在前人的肩膀上,我们已知通信协议libsscronet.so中,存在判断逻辑决定通信方式,其中主要对应的关键词为 :
1.VerifyCert
2.HandleVerifyResult
我们拿到libsscronet.so 后,使用ida打开;反编译成功后,shift+f12,打开ida的全局字符串搜索工具,对关键词位置进行定位;

通过跟踪两个关键词和前人经验,得三处需要修改返回值的地方,把三处return 的值修改为0。

下面就是如何对该三处地方进行修改,这里以其中一处HandleVerifyResult,作为例子,首先来到该位置的return处,返回其汇编代码,可知:
return 1LL 对应的汇编代码为:
MOV W0, #1
如图:

因为我们是要修改so文件,so文件在有限的能打开的阅读器中是以16进制展现的,这里的阅读器使用的是010Editor。
这里我们利用网站:https://armconverter.com/,指令16进制转换网站。
20 00 80 52 修改为 00 00 80 52。

通过ida view试图定位需要修改的位置:



依次修改三处位置后保存,这样我们就把so修改好了。
接下来就是把so文件通过adb 工具 push进app的内存中;
1.首先把so文件移入临时文件:
adb push libsscronet.so /data/local/tmp
2.赋予so高级权限,可以移动到内存中然后copy到app内存中:
chmod 777 libsscronet.so
cp libsscronet.so
/data/app/com.xxx.xxx-4s7MfVkLQU1vSwdYYh9ccw==/lib/arm64
3.赋予权限
chgrp system libsscronet.so
chown system libsscronet.so
chmod 777 libsscronet.so
4. 重启app,就可以愉快滴抓包啦。
公众号: jqiu爬虫分析日记,后续会同步更新打通tiktok相关协议等等

