使用的是雷电模拟器。使用时注意雷电模拟器文件夹里自带的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然后就可以愉快地分析网络流了