12.安卓逆向-frida基础-hook(安卓和Windows的Charles(青花瓷)抓包环境一条龙,解决可以抓包但无法上网问题-全网最全)

发布于:2024-10-13 ⋅ 阅读:(125) ⋅ 点赞:(0)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

内容参考于:图灵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,操作更方便哦


img


网站公告

今日签到

点亮在社区的每一天
去签到