一、如何判断是否flutter应用app?
打开该app,运行
adb shell dumpsys activity top
这里出现flutter即是flutter应用了。
二、如何解决flutter应用抓包问题?
flutter开发的app,ssl证书校验在libflutter.so中的ssl_crypto_x509_session_verify_cert_chain函数中,用frida把它hook返回true即可。
打开ide搜索字符串ssl_server
,双击进去找到ssl_crypto_x509_session_verify_cert_chain函数的偏移地址进行hook;
hook代码如下
javascript
function hook_ssl() {
Java.perform(function () {
var base = Module.findBaseAddress("libflutter.so");
var ssl_crypto_x509_session_verify_cert_chain = base.add(0x659AEA);
console.log("找到函数偏移地址:",ssl_crypto_x509_session_verify_cert_chain)
Interceptor.attach(ssl_crypto_x509_session_verify_cert_chain, {
onEnter: function(args) {
console.log("hook 开始!")
},
onLeave: function(retval) {
console.log("返回值: " + retval);
retval.replace(0x1);
console.log("解除ssl验证成功\n---------------------");
}
});
}
)};
setTimeout(hook_ssl,1690) // 设置延时找对hook时机(太快函数还没加载出来,太慢app已经发起请求了)
以上操作完成后,charles+postern抓包即可。