使用工具
步骤
- 工具:装好frida的环境,模拟器或者真机一个(我是雷电4),jadx(最好一个老版本和一个新版本,老版本可以打开脱壳后的app,新版本可以看加固的包,我的分别是1.2.0和1.4.0),Androidkiller(主要用来看包名和搜索参数方法名)
- 步骤:可以用Python注入和js注入,我不会Python,就用js吧
2.1、先连接模拟器
先在cmd中连接模拟器并打开frida-server服务,名字改成自己的版本
`
2.2、jadx中找到加密参数和方法
全局搜索signature,找到如下
进入sk1.a方法
再进入SignUtil.a方法
经过分析,可以知道,最终是要hook这个native的signInternal方法,本来我是要用Xposed来hook的,但一直hook不到,才改成frida,frida可以hook native方法,不会Python,经过度娘,才找到这个方法
接下来就可以hook这个signInternal方法了
2.3、创建js文件,里面代码如下
Java.perform(function(){
var signUtil = Java.use("com.yidian.news.util.sign.SignUtil");
signUtil.signInternal.implementation = function(context, str) {
console.log("str =", str);
var sign = this.signInternal(context, str);
console.log("sign =", sign);
return sign;
}
})
先在模拟器中打开要抓的APP:某点资讯客户端
再新开一个cmd窗口
连接端口
```
解释:pc端27042的端口接收的数据转发成模拟器或者手机27042的端口上
查看一下手机进程:
frida-ps -U
U表示usb
hook包
frida-trace -i "open" -U com.**.**
这里我用的是进程id
这个4118就是app的进程id
D:\**\GetSignStr\test.js -p 4118
解释:js文件的全路径名 + -p 进程id
-p:进程id
结果:
从这里可以看出,str就是上面SignUtil.a方法中第二个参数,由好几个字符串拼接起来的,结果就是sign