环境
Windows10主机安装adb、frida16.1.4
BlueStacks 5 China官网最新版
准备阶段
-
模拟器root,在设置中就可以找到
-
模拟器打开ADB开关
-
连接adb,做端口转发
adb connect 127.0.0.1:5555 adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27043
抓包
-
连接adb shell,向模拟器上传frida-server,并启动frida-server端
adb push frida-server-16.1.4-android-x86_64 /data/local/tmp/frida-server-16.1.4-android-x86_64 adb shell su root cd /data/local/tmp ./frida-server-16.1.4-android-x86_64
-
查看要抓的包名-引用自https://zhuanlan.zhihu.com/p/467828480?utm_id=0
1、查看将要启动或退出app的包名
adb shell am monitor(只有在启动或退出的时候才会打印)
2、查看安装的第三方app的包名
adb shell pm list packages -3
3、查看当前界面的app的包名
adb shell dumpsys window windows | findstr mFocusedApp
4、查看启动的app的包名
adb shell dumpsys activity top | find "ACTIVITY"
5、查看所有启动的应用的包名
adb shell dumpsys activity activities | findstr "Run"
6、查看当前启动应用的包名
adb shell dumpsys window w |findstr \/ |findstr name=
7、通过应用查看包名
aapt dump badging D:\test\xxx.apk(APK的全名)
(aapt不是可运行命令的话,需要配置环境)
8、其他方法
(1、查看进程的方法查看包名 2、查看日志的方法 3、直接在手机设置打开应用与权限查看)
**有些命令需要adb root ; adb remount 之后才能使用 ;( remount不成功的话用:adb shell verity-disabled 运行之后重启手机在remount)
-
在adb shell中执行命令,开启tcpdump抓包,这个目录是模拟器资源管理器的Download目录,方便导出
tcpdump -i any -s 0 -w /mnt/sdcard/Download/damai.pcap
-
Windows端执行frida hook,抓ssl证书
sslkeyfilelog.js 文件内容
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') )
frida -U -l .\sslkeyfilelog.js -f cn.damai(替换为自己的包名)
-
开始在模拟器端执行各种APP中的操作,例如登录、搜索等,这些数据包都会被抓取,操作完毕后,在adb shell中按Ctrl c关闭tcpdump抓包
-
把步骤4中抓到的sslkey放到sslkey.txt文件,把步骤3中抓到的damai.pcap导出来
-
用wireshark打开damai.pcap,去wireshrak导航栏的编辑-首选项中选TLS,导入sslkey.txt就能解密
-
解密后,可以看到请求包
#过滤条件 http && tcp.dstport==443 http && tcp.dstport==443 and !(http.request.uri contains ".webp" or http.request.uri contains ".jpg" or http.request.uri contains ".png" or http.request.uri contains ".jpeg")
常见问题
-
如果碰到提示
adb.exe: error: more than one device/emulator
答:在使用adb命令时指定-s,例如adb -s 127.0.0.1:5555 shell
-
为什么要端口转发27042和27043
答:Frida是一个用于动态代码注入的调试工具,常使用端口 27042 与设备通信。通过端口转发,可以在电脑上运行的 Frida 客户端与设备上的 Frida 服务进行通信。