frida的安装使用以及解决抓包app时遇到的证书校验

frida的安装和使用

这里使用夜神模拟器来演示frida的使用,因为真机开启frida-server服务时需要root权限,模拟器自带root

  1. 下载夜神模拟器并启动 夜神官网

  2. 打开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 
    
    
  3. 本机安装frida, frida-tools

     #安装frida, frida-tools
     pip install frida frida-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/
     #查看frida版本,可以找到对应的frida-server的版本
     frida --version
     ==16.3.3
     
    
  4. frida github文件下载下载对应的frida-server版本,从以上的模拟器系统(x86),以及frida版本(16.3.3)寻找
    选择对应的frida-server版本

  5. 下载该压缩包文件后,一定要进行解压, 然后对解压后的文件进行重命名,名字可以自定义,为了方便,我这边重定义为frida-server

    解压缩后的文件重命名

  6. 将解压缩的文件上传到手机,并对文件进行权限设置,且运行文件

    #上传文件到模拟器的/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
    ==没有任何报错且输出则表明该服务已经开启,如果想后台运行,则可以后台运行
    
    
  7. 另开一个命令行,转发端口,进行监听

    adb forward tcp:27042 tcp:27042 
    ​
    adb forward tcp:27043 tcp:27043
    
  8. 查看手机进程,能够查验到则说明安装成功

    #显示所有进程
    frida-ps -U
    

    在这里插入图片描述
    查看运行中的应用以及包名

    frida-ps -U -a
    

    在这里插入图片描述

  9. 示例: 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'
        }
    })
    
  10. 示例: 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'))
        }
    })
})
  1. 使用上面两个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修改证书返回结果,从而跳过证书校验
提示:这个只是用来演示frida的使用,但是如果每次都需要开启frida服务才能抓包就很麻烦,可以看我另一篇博客charles使用ssl证书抓包https请求失败解决方案,来永久性解决

  1. 下载charles并抓包app,可以查看该博客进行学习操作, 很详细!!Charles抓包App教程

  2. 下载DroidSSLUnpinning github地址,下载zip文件,并解压

    在这里插入图片描述

  3. 手机端或者模拟器开启frida-server服务

  4. 进入到解压后的文件…\DroidSSLUnpinning\ObjectionUnpinningPlus目录下,对指定包名进行hook就可以跳过证书验证了


#查看现在模拟器上所有运行的app信息,包括包名
frida-ps -U -a
#com.baidu.searchbox  为包名,我这里使用的是baidu作为测试app
frida -U -l hooks.js  -f com.baidu.searchbox

在这里插入图片描述

使用Frida、Selenium和Xposed可以基本解决抓包、人机校验和生成签名这几个关键问题。 首先,Frida是一个强大的动态分析工具,可以通过注入JavaScript脚本来监控和修改应用程序的行为。因此,可以使用Frida来进行抓包操作。通过在目标应用程序内注入脚本,可以拦截网络请求并获取请求和响应的数据,从而实现抓包功能。这样就能够分析和调试应用程序的网络通信,进而获取所需的数据。 其次,Selenium是一个用于自动化测试的工具,可以模拟用户的操作行为。对于一些需要人机校验(例如验证码)的情况,可以使用Selenium来自动化处理。通过Selenium的webdriver,可以控制浏览器执行各种操作,包括输入、点击、滚动等。这样就能够绕过人机校验,自动完成验证过程。 最后,Xposed是一个运行于Android系统上的框架,可以在不修改应用程序源代码的情况下,实现对应用程序的修改和扩展。使用Xposed,可以对应用程序进行hook,拦截特定的方法调用,并在其前后进行自定义处理。通过这种方式,可以实现动态生成签名,并替换原始签名。这样就可以绕过签名验证,让应用程序通过验证,实现所需的功能。 综上所述,基本上使用Frida、Selenium和Xposed就能够解决抓包、人机校验和生成签名这几个关键问题。但是需要注意,使用这些工具可能涉及到一定的法律和道德问题,应该合法合规使用,遵守相关的法律法规。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值