一.背景:
现在的很多的app都是用禁止网络代理来防止抓包。在请求的时候都使用了Proxy.NO_PROXY
二.解决方案
1.传输层的vpn进行流量转发(本篇重点)
·通过postern 配置socks5代理到charles 抓包(postern是在传输层久把流量转发指定的中间人(代理/抓包软件))
· 通过drony转发
· 通过proxifier 转发流量
2.HttpCanary
Android平台抓包工具,功能非常强大,基于传输层,连TCP UDP也能抓。首先去其设置中安装证书(Android7.0+注意要系统证书)
3.Hook相关函数
样例1
function hookProxy() {
Java.perform(function () {
let URL = Java.use("java.net.URL");
URL.openConnection.overload("java.net.Proxy").implementation = function (arg1) {
console.log("hook了HttpURLConnection")
return this.openConnection();
}
let Builer = Java.use("okhttp3.OkHttpClient$Builder");
let newBuilder = Builer.$new();
Builer.proxy.overload("java.net.Proxy").implementation = function (arg1) {
console.log("hook了okhttp3")
return newBuilder;
}
}
);
}
样例2
console.log("[*] Starting script");
Java.perform(function () {
var ss = Java.use("okhttp3.OkHttpClient$Builder");
ss.proxy.implementation = function (x) {
console.log(x.type())
console.log(x.address())
console.log(x)
//以上打印的是java.net.proxy中附带的方法。具体看查看源码
return this.proxy(null)
}
});
console.log("end");
三.通过postern转发的流程介绍
1.添加代理服务器
2.添加相应的参数
3.配置规则
可以把多余的删除掉。只留下自己配置的那一个,代理也是一样。
开始抓包: 如果是第一次配置代理,charles会弹出一个是否允许这个客户端,点击allow极客。
题外话:这个是不需要自己去设置里面设置代理的,直接又postern转发出来的
关于charlse的配置:
1.支持ssl。配置端口和ip都是*
2.证书设置
把证书保存到电脑上。
证书推送到手机上,后通过sdka安装证书到用户证书下:
adb push C:xxxxxx.pem /sdcard/1.pem
然后把用户证书移动到系统证书上,就可以愉快的抓包了:
adb shell #连接手机进入shell模式
#su root #如果你不root权限可以试着这个一般都是root
cd /data/misc/user/0/cacerts-added #移动至于用户证书目录
mount -o remount,rw /system #将系统证书目录权限改成可读可写就可以移动文件不然不行
cp * /etc/security/cacerts/ #这里可以使用cp也可以使用mv
mount -o remount,ro /system #移动完之后记得把权限改回只读
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理