frida抓Android网络包操作备忘

使用的是雷电模拟器。使用时注意雷电模拟器文件夹里自带的adb.exe拉的一批,要自己弄个新的adb套件;

如果还没有frida-server,上GitHub下载一个,

1
adb push frida-server /data/local/frida-server

准备一个dumpSSLKey.js,内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function startTLSKeyLogger(SSL_CTX_new, SSL_CTX_set_keylog_callback) {
console.log("start----")
function keyLogger(ssl, line) {
console.log(new NativePointer(line).readCString());
}
const keyLogCallback = new NativeCallback(keyLogger, 'void', ['pointer', 'pointer']);

Interceptor.attach(SSL_CTX_new, {
onLeave: function (retval) {
const ssl = new NativePointer(retval);
const SSL_CTX_set_keylog_callbackFn = new NativeFunction(SSL_CTX_set_keylog_callback, 'void', ['pointer', 'pointer']);
SSL_CTX_set_keylog_callbackFn(ssl, keyLogCallback);
}
});
}
startTLSKeyLogger(
Module.findExportByName('libssl.so', 'SSL_CTX_new'),
Module.findExportByName('libssl.so', 'SSL_CTX_set_keylog_callback')
)

开始抓包:

Step 1:

1
adb shell /data/local/tmp/frida-server

Step 2:

这里-w后的地址为你在模拟器上配置的与电脑host共享的地址

1
adb shell tcpdump -i any -s 0 -w /sdcard/Pictures/output.pcap

Step 3:

-f后为包名

1
frida -U -l dumpSSLKey.js -f net.crigh.mysport

在此时,命令行会输出一些内容,这些内容需要保存至本地,后续要用

Step 4:

完成后启动Wireshark,将pcap文件拖进来,然后 编辑->首选项->Protocols->TLS

将(Pre)-Master-Secret Log Filename中填入Step 3中的文件名。

回到主页,上方filter中填http然后就可以愉快地分析网络流了