最近在学习Frida作为我入门安卓逆向的第一步,在我的理解里面,frida-rpc就是更加快速完成目标的一种方式,在学完这个之后,再学习xposed应该会事半功倍吧。因为他们的共同点都是需要对apk进行分析,没有这个作为基础,一切都是白搭。
好了,现在开始吧,这次拿来练手的apk是xx合伙人
1.反编译
通过jadx打开发现,并没有进行加固处理,直接就看到了里面的细节
先拿到包名。
2.抓包
打开Charles,在登陆页面上输入手机号密码,通过抓包软件发现,这是一个post请求,里面携带的参数就只有这两个
data{"password":"123123123qwe","phone":"18672772567"}
apisign 13935304de1eb95bb1e7bcff7f517494
3.分析
这里可以知道,登陆的加密就这么点了,直接拿apisign去搜,运气不错,直接能看到结果就这么点
这一看就是加密的地方了,跟进去,继续分析
可以看到这里就是参数的生成地方,使用了MD5Util这个类,标亮之后发现这个类就是个普通类,并不在so里面,我们可以直接调用的,再观察这个方法所在地:
跟进去
就这么个方法,传入两个参数,我们这个时候再猜测一下,可以根据名称来看,第一个是加密key,第二个是password的str
再来就是验证我们的猜测了。先观察这个key是个什么鬼,在加密函数中第一个传入的是Constants.MD5_KEY,观察可以知道Constants就是直接传递进来的一个类,我们再看MD5_KEY是啥,
通过查找用例直接可以看到上面的结果,这玩意是个明文???
那行吧,继续验证,现在就开启frida来检测我们的观察:
4.Frida分析
直接上代码,填好固定的包名和函数名
把手机上的Fridaserver开起来,然后打开对应的app,直接登陆看看结果输出是什么:
好了,第一个参数第二个参数和最后加密后的参数就是这样了
这第一个参数不就是明文的加密key嚒。。。无语
第二个就是密码和手机号的字符串了,我们可以直接来启一个frida-rpc来试试来
5 frida-rpc
先上代码
我们直接主动调用这个函数,并且进行传参来测试一个返回数据
运行后可以看到这个结果,对比我们抓包的结果,完全一样。
到这里就可以使用frida-rpc来搞定这个app的登陆加密了,记录主要是为了让自己理解更深刻,后面会继续由易到难的分析各种app的。