一、需要的工具
1、抓包工具: 花瓶charles+小黄鸟HttpCanay
2、xposed+justTrustme
3、frida
二、对于以下抓包出现的情况:
1、能抓到请求包、但是没有正确的解析出协议
这种情况一般是sslping校验失败导致,可以采用 xposed+justTrustme 来解决,可以查看:xposed+justTrustme使用与分析
2、抓不到想要的请求包,但是能看到一些图片等无关经验的数据包
对于某物APP的抓包,没有找到具体的数据包
这种没有走系统代理,可以使用 drony 来转发请求处理
使用方式:
1、打开drony,右滑至SETTING标签页,选择 Networks
2、选择当前本wifi, 点击进入到 Networks details页面设置
3、选择Rules
4、Action 选择local proxy chain ,Application 选择应用名称
重新打开某物APP就能看到数据包了
3、配置 xposed+justTrustme 和drony后,还是不能完整的看到具体的请求包,但是能看到一些图片等无关经验的数据包
查看日志发现是flutter框架导致sslping校验不过:
可以查看看雪论坛 :基于frida和drony的针对flutter抓包的方法
简单的处理了一下
# -*- coding: utf-8 -*-
import frida
import sys
jscode = """
Java.perform(function () {
var m = Process.findModuleByName("libflutter.so");
var pattern = "FF 03 05 D1 FD 7B 0F A9 FA 67 10 A9";
var res = Memory.scan(m.base, m.size, pattern, {
onMatch: function(address, size){
console.log('[+] ssl_verify_result found at: ' + address.toString());
hook_ssl_verify_result(address);
},
onError: function(reason){
console.log('[!] There was an error scanning memory');
},
onComplete: function() {
console.log("All done")
}
});
});
function hook_ssl_verify_result(address) {
Interceptor.attach(address, {
onEnter: function(args) {
console.log("Disabling SSL validation")
},
onLeave: function(retval) {
console.log("Retval: " + retval);
retval.replace(0x1);
}
});
}
"""
process=frida.get_usb_device().attach('包名')
def on_message(message, data):
if message['type'] == 'send':
print("[*] {0}".format(message['payload']))
else:
print(message)
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()
启动脚本之后再抓包就能看到数据包了
4、对于上面的处理情况,号称最强手机抓包工具, 小黄鸟 HttpCanary 把证书安装到根目录,然后都能抓到包,本身就是搭建是vpn的抓包工具,加上把证书安装到根目录,就自然解决了,没有那么多的复杂的操作,使用真机效果更好
总结:有时候花里胡哨的整了一堆,结果。。。,工作中善于利用工具的人总是领先别人一步