免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
内容参考于:图灵Python学院
本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:11.安卓逆向-安卓开发基础-api服务接口设计2
一般按CTRL+F会打开一个内容搜索的弹框,直接搜索 安卓抓包 可以定位,安卓抓包内容,搜索 Windows抓包 可以定位Windows抓包内容
上一个内容为止就写完了安卓开发,关于必要的代码学习就结束了,剩下的在逆向中学习,接下来开始手机端的hook
本次开始使用真机,这里的真机是pixel4安卓10,使用usb2.0连接,usb3.0没法连接
frida说明:
firda是一个强大的动态分析工具,firda可以在一个app运行的时候对app植入一些脚本进行操作、修改操作,它是通过动态二进制叉桩技术(DBI)来实现的
DBI能做的事情:
(1)访问进程的内存,也正因为它让hook很方便
(2)在应用程序运行时覆盖一些功能
(3)从导入的类中调用函数
(4)在堆上查找对象实例并使用这些对象实例
(5)Hook,跟踪和拦截函数等等
搞安卓逆向它是必须品,公司里都用这个,做HOOK除了firda好用没别的了,它可以写js操作java代码,想调试手机上的app只能通过HOOK来实现,HOOK做的是拦截代码的事情
安装firda
首先查看手机的架构:adb shell getprop ro.product.cpu.abi
![]()
最新版的 frida 不是很稳定。推荐安卓7、8安装 frida 12.8.0 版本,安卓10安装frida14版本 ,安卓 12安装frida16版本
安装之前,要安装Python环境
Python环境看这个大哥写的:https://blog.csdn.net/2301_79585673/article/details/132686792,Python环境安装百度一搜一大堆
安装完Python环境之后安装firda时可能会报错,报错了不要慌,把最后一行的错误信息,红颜色的就是错误信息,最后一个红颜色的信息复制一下,去百度搜,会搜出很多解决方法,把里面的命令挨个执行一遍,总会好的,错误情况都不一样这里没法写清楚只能百度搜
![]()
然后开始安装firda
首先执行 pip install frida-tools==9.2.5 安装frida-tools
然后执行 pip install frida==14.2.18 安装frida
![]()
然后下载一个fridaserver
地址:https://github.com/frida/frida/releases
下载下图红框的版本,14.2.18,版本号一定要对应,如果这里的版本与上方安装的版本不对应会没法hook
![]()
然后点击下图红框位置
![]()
我的手机架构是arm64,就下载下图红框的东西,下载完之后解压
![]()
解压完之后把下图的文件放到手机里,需要放到一个权限比较高的目录里,放到 /data/local/tmp/,放之前最好改个名字,因为后面会频繁使用
![]()
进入 /data/local/tmp/ 目录需要root权限,如下图输入su然后按回车就会申请root权限,这时手机里应该会有弹框提示xxx要root权限直接点允许就行
![]()
获得root权限之后,如下图红框它会变成#号
![]()
然后输入cd /data/local/tmp/,进入 /data/local/tmp/目录,然后输入ls查看目录下的文件和文件夹,如下图f14就是firida14.2.18的server,这里改名了
![]()
然后给f14设置一下权限,chmod 777 f14,777是可读可写的权限
![]()
然后现在就可以运行了,运行的指令 ./f14 就可以运行了,如下图,然后多次按CTRL+C是退出
![]()
指定端口启动:./frida-server -l 0.0.0.0:8889
电脑上:adb forward tcp:8887 tcp:8889,执行了它会设置转发
关闭转发:adb forward --remove tcp:8887
关闭所有转发:adb forward --remove-all
![]()
运行之后,就可以使用firda的指令了,常用指令frida,frida-ps, frida-trace ,frida是hook命令,frida-ps是查看进程的, frida-trace是跟踪函数调用。
frida-ps指令:
正在运行的进程(APP) frida-ps -Ua
![]()
正在运行的全部进程(APP) frida-ps -Uai
![]()
杀死正在运行的进程(APP)frida-kill -U 包名,下图红框的列就是包名
![]()
frida-kill -U 包名,执行之后的效果就是app退出了
![]()
安卓10配置青花瓷抓包环境-安卓抓包的内容开始处
在开始Frida HOOK指令之前要把手机的配置搞一下,以抓包为例,安卓7以上证书要添加到系统路径,这里要下载一个Charles抓包工具它被人称为青花瓷,https://blog.csdn.net/qq_55977327/article/details/131876945看这个大哥写的(官网可能下载慢,已经把青花瓷安装包放到了百度网盘中),然后手机的网络要与电脑在同一个局域网里,最简单的办法是电脑开热点手机连接电脑热点,连接网络之后需要设置网络代理,这里通过Postern这个app来设置代理
青花瓷激活码:这是为了那些打不开破解工具网址的同志: dca1c3c22ce65ab1da
![]()
然后打开Postern之后,点击下图红框配置代理
![]()
然后点击添加代理服务器
![]()
然后来到青花瓷,如下图选择Proxy Settings...
![]()
如下图
![]()
然后再回到postern里,如下图
![]()
这里的名字要用英文
![]()
然后点保存
![]()
然后点了保存之后
![]()
然后代理服务器添加完还要设置点东西,如下图配置规则
![]()
然后点添加规则
![]()
内容如下图,写完内容点保存
![]()
点击完保存之后就可以打开vpn,这样可以抓取手机上的http请求
![]()
https请求没法抓,https需要安装证书,下面开始安装证书,来到青花瓷,选择如下图的选项
![]()
下载证书方式:手机打开浏览器输入下图红框的地址
![]()
访问了上方的地址之后可能会显示下图的样子,没有下载的反应,这是因为使用postern代理的原因,这里需要手机自带的代理
![]()
手机自带的代理如下图,然后就能下载了
![]()
下载之后安装,点击它
![]()
然后选择证书安装
![]()
随便写个名字点确定
![]()
然后就有了,这时的证书是在用户下,安卓7之后用户下的证书没用了,这个证书查看的位置不同手机会有差异需要自行百度找,一般是 设置-》安全-》加密与凭据-》信任的凭据
![]()
需要安装一个插件 Move_Certificates,这个插件可以把用户下的证书放到系统下,这个插件放到百度网盘里了,把复制到手机里,要记着目录
![]()
打开面具(Magisk)如果不认识它说明手机没root
![]()
然后点击模块,点击从本地安装
![]()
找到Move_Certificates点击它就能安装了,我把它放到了Download( /storage/emulated/0/Download)
![]()
安装之后点击重启
![]()
重启完成之后它就到了系统下了,这样就是抓https请求了
![]()
上方postern设置的配置代理可能没法用,如下图红框,上方设置的内容可能会无法抓包
需要改成SOCKS5方式,如下图
然后如下图红框里的几个端口,需要配置一下
选择下图SSL Proxying Settings
然后点击下图红框
然后把上方用红框圈出来的端口分别写到Port里面,如下图
add完的效果,如下图
这样搞完就能抓包了,如下图http是的包可以正常抓取,它的入参和返回值也正常,如果突然Charles(青花瓷)可以抓包,但是手机没法上网了(比如浏览器页面打不开,提示网络错误等),这时重置证书,然后重新安装证书就会好了,重置证书的方法写在下面了
效果图:不使用SOCKS5就会如下图,https的请求无法抓取
然后Charles安装的证书过期了咋办?点击下图的选项
然后点击下图红框的按钮重置证书,然后再重新下载证书,重新安装证书就好了,然后如果跟着前面走来的会通过Move_Certificates-v1.9这个东西把证书放到系统下,
卸载证书需要来到下图的目录里
上图的目录里放的全是系统证书(也就是把证书安装之后的文件放到上图的目录里它会变成系统证书),如下图,删除完文件然后重启手机,证书就会卸载,然后再重新安装证书(不卸载直接安装证书现在没试)
有时候会出现,Charles可以正常抓包,但是手机无法上网,这时需要重置证书,重新在手机上安装证书,不重置证书只重新在手机上安装证书没试过不知道行不行(重置证书再重新安装2024-10-7日试过是可以解决Charles可以正常抓包,但是手机无法上网的问题)
到这手机的配置就好了
顺手写一下Windows抓包-Windows抓包内容开始处
首先点击下图里的
点击完上图的会出现下图的内容,然后点击 安装证书 按钮
然后选择本地计算机
然后点击浏览
然后选择受信任的根证书颁发机构
然后点击下一步
然后点击完成
点了完成再设置一下,下图的内容(上方安卓抓包哪块有详细写下图里的东西是什么),设置完下图的内容就可以抓包了
然后点击下图Windows Proxy开启Windows抓包,再次点击会关闭Windows抓包(可以方便手机抓包)
如果突然Charles(青花瓷)可以抓包,但是没法上网了(比如浏览器页面打不开,提示网络错误等),这时重置证书,然后重新安装证书就会好了,重置证书的方法写在上面了(安卓抓包那块)
然后开始Frida HOOK指令
Frida指令:记得启动f14(frida server)
Frida它有两种使用方式 一种是cmd命令,一种是使用Python
frida操作app的方式也有两种 一种是spwan 一种是attach,spwan 方式不管app在运行还是没运行都会进行重启,在启动过程中它会让app处于一种准备状态,就是app可以启动但是没有启动,也就是在没启动之前注入脚本,attach方式是在app运行过程中注入脚本
attach方式
首先新启动一个cmd,并且来到存放脚本的目录里,如下图
![]()
然后输入 frida -U com.trs.xkb.newsclient -l ./hook请求.js,hook请求.js放到百度网盘中了
![]()
带端口的执行方式
![]()
Python
![]()
import sys import time import frida def on_message(message,data): print("message",message) print("data",data) device = frida.get_usb_device() # 获取目标应用程序的PID pid = device.get_process("com.trs.xkb.newsclient").pid # 附加到目标进程 session = device.attach(pid) # 读取Frida脚本 js_cpde = ''' Java.perform(function () { var OkHttpClient = Java.use("okhttp3.OkHttpClient"); OkHttpClient.newCall.overload("okhttp3.Request").implementation = function (request) { console.log("HTTP Request -> " + request.url().toString()); var call = this.newCall(request); // 获取新的 Call 对象 var response = call.execute(); // 调用新的 Call 对象的 execute 方法 console.log("HTTP Response -> " + response.body().string()); return call } }) ''' # 创建Frida脚本并加载 script = session.create_script(js_cpde) # 设置当脚本有消息时的回调函数 script.on("message",on_message) # 加载脚本到目标进程 script.load() # 阻塞主线程,以保持脚本运行 sys.stdin.read()
如果没法运行,使用python -m pip freeze指令查看Python安装的Firda版本是否正确,正确的版本是14.2.18,如下图红框
![]()
spawn 模式:效果与上方差不多就不截图了直接上代码
指令:frida -U -f com.trs.xkb.newsclient -l ./hook请求.js
Python
import frida def on_message(message,data): print("message",message) print("data",data) # 通过Spawn模式启动一个新的应用程序进程,并在该进程中加载Frida脚本 device = frida.get_usb_device() pid = device.spawn(["com.luoge.com"]) # 恢复应用程序的执行 device.resume(pid) session = device.attach(pid) with open("script.js") as f: script = session.create_script(f.read()) script.on("message",on_message) script.load() # 阻塞主线程,以保持脚本运行 sys.stdin.read()
端口转发启动:效果与上方差不多就不截图了直接上代码
首先启动f14指令: ./f14 -l 0.0.0.0:8881
电脑新开cmd启动端口转发,指令:adb forward tcp:8881 tcp:8881,这个命令可能会导致电脑上不去网,提前下载好360管家或腾讯管家,等无法上网之后使用360管家或腾讯管家进行网络修复
然后:frida -H 127.0.0.1:8881 -f com.package.name -l ./hook请求.js
Python
# -*- coding: UTF-8 -*- import frida, sys jsCode = """ console.log("test"); """ def message(message, data): if message['type'] == 'send': print(f"[*] {message['payload']}") else: print(message) # ./fs120800 -l "0.0.0.0:6666" # adb wifi 10.0.0.23 process = frida.get_device_manager().add_remote_device('127.0.0.1:6666').attach('com.kevin .app') script = process.create_script(jsCode) script.on("message",message) script.load() sys.stdin.read()
上方的代码不全,只有手写的代码
完整代码:
链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg?pwd=q9n5
提取码:q9n5
复制这段内容后打开百度网盘手机App,操作更方便哦