We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
因为在网上找的教程都或多或少有一些不完整,没讲明白的地方。自己踩了一些坑。这里记录一下完整的安装配置的流程
因为我是前端,这里很多东西都是第一次设计,所以会啰嗦的尽量详细的都讲一遍怎么安装和配置
macOS 自带 python 环境,后面我们要用 pip 来装 frida 所以需要它。
不过自带的 python 环境是 2.7 的,在用对应版本的 pip 安装 frida 会有报错,所以我们第一步要准备一个 3.x 的 python 环境。
不推荐直接升级系统自带的 python 环境,我们先安装 Conda 来管理 python 环境(把 Conda 相成 nvm,类比 nvm 管理 node 版本一样,Conda 也是可以管理多个 python 环境,是个 python 版本管理工具)。
进入 Conda 网站,去下载安装包。
安装好了以后,在终端执行 python --version,应该就不是 2.7 而是 3.11.3 了,这是已经被 Conda 设置为了默认的版本,但是如果用 vs code 的终端,会发现还是 2.7,这里我暂时没有管,现在 iTerm 里能用了再说。
python --version
如果想要切换其他的版本,可以这样:
#创建一个 3.5 的环境 conda create --name py35 python=3.5 #激活它 source activate py35
去官网下载对应系统的模拟器。 并安装要 hook 的 apk 包。 设置里已经默认开启了 root 权限。 剩下的配置我们后面用到的时候在说
安装方式,两个装:
pip install frida-tools pip install frida
然后,我们需要安装 frida-server,这个我们一定要安装跟 frida 版本一致的。 我输入 frida --version 并看不到 frida 版本,所以是在 pip 安装的时候就看的安装的版本。 我的 frida 是 16.1.3,那么就在这里,到找 frida-inject-16.1.3-android-x86.xz 下载并解压。 这里我提供的下载地址只是 16.1.3,如果要换成别的版本,就把 url 上的 tag/16.1.3 换成对应的版本就可以了。 文件找 -android-x86.xz 结尾的,其他的不用管
frida --version
然后使用 adb 工具将解压后的产物放到模拟器内部 adb 不用我们自己安装,夜神模拟器的目录里有 adb,我们可以直接用。 进入夜神模拟器的目录下(/Applications/NoxAppPlayer.app/Contents/MacOS 这个目录根据自己安装的情况找),找到 adb,执行 push 命令
./adb push /Users/xxx/Downloads/frida-server-16.1.3-android-x86 /data/local/tmp/ # 第一个参数是文件的路径,第二个参数是要放到的模拟器系统的目录(是安卓系统里的目录,不是咱们的电脑里的目录,所以在电脑里是找不到的)
然后依然是使用 adb,来启动 frida-server
./adb shell # 启动 shell su chmod 777 /data/local/tmp/frida-server-16.1.3-android-x86 # 给 frida-server 读写权限,如果可以直接启动 frida-server 的话,也可以省略这步 data/local/tmp/frida-server-16.1.3-android-x86 # 启动 frida-server
然后不要关这个终端,我们再开启一个终端,执行 frida-ps -U 看一下有没有东西,是否开启成功了 有列表了,就说明我们 frida-server 开启成功了,如果没有我们要的对应 app,那么就在模拟器里点击 app, 把它打开,再重新执行一下就有了,以闲鱼为例:
frida-ps -U
去官网下载,注册网上搜一下就有,不注册也一样可以用
这一步是让电脑可以抓网站的包的,跳过也行
这里安装证书,然后到钥匙串访问中找到这个证书,改为「始终信任」
给电脑安装了证书,但是抓包的时候依然显示 unknown,需要配置一下这两个地方
给模拟器安装证书,不能够简单的在模拟器里打开浏览器,直接访问 chls.pro/ssl 这样安装,这样只是安装到了用户里面,需要安装到系统才可以顺利抓包
先在模拟器中代理到电脑的 ip ip 可以通过 ifconfig 或者 option+点击 wifi 图标查看
导出 charles 证书, 并重命名 我选择的是导出 pem, 使用终端命令,来查看 hash 值,并把它复制出来把这个证书文件改名为 hash.0: openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate.pem
adb push
./adb push /Users/xxx/Downloads/52e594d4.0 /system/etc/security/cacerts/
然后就可以在设置 - 安全 - 信任的凭据 - 系统下面找到它了
这个是来用反编译 apk 包的,我们直接去官网下载,然后安装,如果提示我们需要 java 依赖,就根据它提示给的网站进去直接下载安装就好了。
这里以闲鱼为例,我想抓包闲鱼,但是因为闲鱼是走的 spdy 协议,不是 http 协议,所以不能被抓包,我们需要强制关闭 spdy 协议让它走 http 协议。
先用 jadx-gui 打开闲鱼的 apk,然后找到对应的代码 然后就可以对这个方法进行 hook:
import frida, sys def on_message(message, data): print("[%s] => %s" % (message, data)) pid = 0 device = frida.get_usb_device(1000) process = device.enumerate_processes() for data in process: if data.name == "闲鱼": pid = data.pid break session = device.attach(pid) uuid = ''' Java.perform( function(){ console.log("############################ Frida 开启 ############################"); /* 此处是 hook 关闭 spdy 协议 */ const switchConfigSession = Java.use("mtopsdk.mtop.global.SwitchConfig"); if (switchConfigSession) { console.log(`------>定位到类名: ${switchConfigSession}`); switchConfigSession.C.implementation = function(){ console.log(`------>定位到函数: is_enableSpdy`); return false; } }; ''' script = session.create_script(uuid) script.on('message', on_message) script.load() sys.stdin.read()
这里 uuid 写的是 js 代码。我们拦截了 mtopsdk.mtop.global.SwitchConfig ,对里面的 C 方法进行重写,改成返回 false,就关闭了 spdy。
从网上找别人的教程,是 hook 的 A 方法,我复制过来尝试发现不管用,所以用了 jadx-gui 反编译,自己找代码,发现我用的安装包,换成了 C 方法,所以这里改成了 C 就可以了。
我们先启动 frida-server,在上面的「安装、启用 frida」里面有,然后再执行 pythone 代码 python ./code.py,代码可以正常跑起来不报错就成功了
python ./code.py
参考文章: Charles+frida抓包闲鱼APP Android 添加系统受信任证书,解决 Charles、Fiddler 等 HTTPS 抓包报错问题 mac本安装Frida
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
因为在网上找的教程都或多或少有一些不完整,没讲明白的地方。自己踩了一些坑。这里记录一下完整的安装配置的流程
因为我是前端,这里很多东西都是第一次设计,所以会啰嗦的尽量详细的都讲一遍怎么安装和配置
所需安装的软件
安装步骤
python 环境
macOS 自带 python 环境,后面我们要用 pip 来装 frida 所以需要它。
不过自带的 python 环境是 2.7 的,在用对应版本的 pip 安装 frida 会有报错,所以我们第一步要准备一个 3.x 的 python 环境。
不推荐直接升级系统自带的 python 环境,我们先安装 Conda 来管理 python 环境(把 Conda 相成 nvm,类比 nvm 管理 node 版本一样,Conda 也是可以管理多个 python 环境,是个 python 版本管理工具)。
进入 Conda 网站,去下载安装包。
安装好了以后,在终端执行
python --version
,应该就不是 2.7 而是 3.11.3 了,这是已经被 Conda 设置为了默认的版本,但是如果用 vs code 的终端,会发现还是 2.7,这里我暂时没有管,现在 iTerm 里能用了再说。如果想要切换其他的版本,可以这样:
安装模拟器
去官网下载对应系统的模拟器。
并安装要 hook 的 apk 包。
设置里已经默认开启了 root 权限。
剩下的配置我们后面用到的时候在说
安装、启用 frida
安装
安装方式,两个装:
然后,我们需要安装 frida-server,这个我们一定要安装跟 frida 版本一致的。
我输入
frida --version
并看不到 frida 版本,所以是在 pip 安装的时候就看的安装的版本。我的 frida 是 16.1.3,那么就在这里,到找 frida-inject-16.1.3-android-x86.xz 下载并解压。
这里我提供的下载地址只是 16.1.3,如果要换成别的版本,就把 url 上的 tag/16.1.3 换成对应的版本就可以了。
文件找 -android-x86.xz 结尾的,其他的不用管
然后使用 adb 工具将解压后的产物放到模拟器内部
adb 不用我们自己安装,夜神模拟器的目录里有 adb,我们可以直接用。
进入夜神模拟器的目录下(/Applications/NoxAppPlayer.app/Contents/MacOS 这个目录根据自己安装的情况找),找到 adb,执行 push 命令
./adb push /Users/xxx/Downloads/frida-server-16.1.3-android-x86 /data/local/tmp/ # 第一个参数是文件的路径,第二个参数是要放到的模拟器系统的目录(是安卓系统里的目录,不是咱们的电脑里的目录,所以在电脑里是找不到的)
启用
然后依然是使用 adb,来启动 frida-server
然后不要关这个终端,我们再开启一个终端,执行
frida-ps -U
看一下有没有东西,是否开启成功了有列表了,就说明我们 frida-server 开启成功了,如果没有我们要的对应 app,那么就在模拟器里点击 app, 把它打开,再重新执行一下就有了,以闲鱼为例:
安装 charles
安装
去官网下载,注册网上搜一下就有,不注册也一样可以用
配置
给电脑安装证书
这一步是让电脑可以抓网站的包的,跳过也行
这里安装证书,然后到钥匙串访问中找到这个证书,改为「始终信任」
配置 proxy settings 和 SSL Proxying Settings
给电脑安装了证书,但是抓包的时候依然显示 unknown,需要配置一下这两个地方
给模拟器安装证书
给模拟器安装证书,不能够简单的在模拟器里打开浏览器,直接访问 chls.pro/ssl 这样安装,这样只是安装到了用户里面,需要安装到系统才可以顺利抓包
先在模拟器中代理到电脑的 ip
ip 可以通过 ifconfig 或者 option+点击 wifi 图标查看
导出 charles 证书, 并重命名
我选择的是导出 pem, 使用终端命令,来查看 hash 值,并把它复制出来把这个证书文件改名为 hash.0:
openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate.pem
同样使用
adb push
然后就可以在设置 - 安全 - 信任的凭据 - 系统下面找到它了
jadx-gui 安装
这个是来用反编译 apk 包的,我们直接去官网下载,然后安装,如果提示我们需要 java 依赖,就根据它提示给的网站进去直接下载安装就好了。
使用 frida 来进行 hook
这里以闲鱼为例,我想抓包闲鱼,但是因为闲鱼是走的 spdy 协议,不是 http 协议,所以不能被抓包,我们需要强制关闭 spdy 协议让它走 http 协议。
先用 jadx-gui 打开闲鱼的 apk,然后找到对应的代码
然后就可以对这个方法进行 hook:
这里 uuid 写的是 js 代码。我们拦截了 mtopsdk.mtop.global.SwitchConfig ,对里面的 C 方法进行重写,改成返回 false,就关闭了 spdy。
从网上找别人的教程,是 hook 的 A 方法,我复制过来尝试发现不管用,所以用了 jadx-gui 反编译,自己找代码,发现我用的安装包,换成了 C 方法,所以这里改成了 C 就可以了。
使用 hook
我们先启动 frida-server,在上面的「安装、启用 frida」里面有,然后再执行 pythone 代码
python ./code.py
,代码可以正常跑起来不报错就成功了参考文章:
Charles+frida抓包闲鱼APP
Android 添加系统受信任证书,解决 Charles、Fiddler 等 HTTPS 抓包报错问题
mac本安装Frida
The text was updated successfully, but these errors were encountered: