frida的安装和使用
这里使用夜神模拟器来演示frida的使用,因为真机开启frida-server服务时需要root权限,模拟器自带root
-
下载夜神模拟器并启动 夜神官网
-
打开power shell, adb连接模拟器,查看模拟器的系统型号
adb connect 127.0.0.1:62001 ==already connected to 127.0.0.1:62001 adb shell getprop ro.product.cpu.abi ==x86
-
本机安装frida, frida-tools
#安装frida, frida-toolspip install frida frida-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/#查看frida版本,可以找到对应的frida-server的版本frida --version==16.3.3
-
从frida github文件下载下载对应的frida-server版本,从以上的模拟器系统(x86),以及frida版本(16.3.3)寻找
-
下载该压缩包文件后,一定要进行解压, 然后对解压后的文件进行重命名,名字可以自定义,为了方便,我这边重定义为frida-server
-
将解压缩的文件上传到手机,并对文件进行权限设置,且运行文件
#上传文件到模拟器的/data/local/tmp adb push frida-server /data/local/tmp/frida-server #进入模拟器系统 adb shell #进入到tmp目录下 cd /data/local/tmp #对frida-server进行权限处理,真机需要root, 但是模拟器自带root权限 chmod 777 frida-server #执行frida-server, 切记前面加 ./ ./frida-server ==没有任何报错且输出则表明该服务已经开启,如果想后台运行,则可以后台运行
-
另开一个命令行,转发端口,进行监听
adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27043
-
查看手机进程,能够查验到则说明安装成功
#显示所有进程 frida-ps -U
查看运行中的应用以及包名frida-ps -U -a
-
示例: hook java层的函数
Java.perform(() => {let MainActivity = Java.use('com.germey.appbasic1.MainActivity')console.log('start hook')MainActivity.getMessage.implementation = (arg1, arg2) => {send('Start Hook!')return '8'} })
-
示例: hook native层
Java.perform(function () {Interceptor.attach(Module.findExportByName('libnative.so', 'Java_com_germey_appbasic2_MainActivity_getMessage'),{onEnter: function (args) {send('hook onEnter')send('args[1]=' + args[2])send('args[2]=' + args[3])},onLeave: function (val){send('hook onLeave')val.replace(Java.vm.getEnv().newStringUtf('5'))}})
})
- 使用上面两个js文件对app进行hook
#hook_java.js 实行hook的js文件#com.germey.appbasic1 app的包名,可以使用命令 frida-ps -U -a 查看运行中的app包名frida -U -l hook_java.js -f com.germey.appbasic1
frida+DroidSSLUnpinning 解决charles抓app包https请求证书校验失败问题
正常使用charles抓app包的时候,比如百度, 会发现配置好代理后,页面无法加载,此时就是因为证书校验没通过,而使用frida+DroidSSLUnpinning就可以通过hook修改证书返回结果,从而跳过证书校验
-
下载charles并抓包app,可以查看该博客进行学习操作, 很详细!!Charles和夜神模拟器结合对安卓应用进行抓包
-
下载DroidSSLUnpinning github地址,下载zip文件,并解压
-
进入到解压后的文件…\DroidSSLUnpinning\ObjectionUnpinningPlus目录下,对指定包名进行hook就可以跳过证书验证了
#查看现在模拟器上所有运行的app信息,包括包名
frida-ps -U -a
#com.baidu.searchbox 为包名,我这里使用的是baidu作为测试app
frida -U -l hooks.js -f com.baidu.searchbox