Frida学习-Frida通信原理

两只羊 Lv3

从tcpdump开始

我们在研究Frida检测与绕过的时候,一直绕不开的几个点

扫描Frida server的默认端口27042

读/proc/self/task/检测特征线程,比如

1
2
3
2026-03-04 13:03:09.451 11077-11077 FridaDetect             twogoat.checker2                     E  Thread Detection: gmain 
2026-03-04 13:03:09.451 11077-11077 FridaDetect twogoat.checker2 E Thread Detection: gdbus
2026-03-04 13:03:09.451 11077-11077 FridaDetect twogoat.checker2 E Thread Detection: pool-frida

读/proc/self/maps,检查是否存在frida-agent.so

这些特征检测的绕过方法非常多且简单,无非就是服务开在另外的端口,把比较结果改了

那么是否有认真思考过,这个27042的端口到底是谁在用,frida-agent.so到底是怎么和server通信的,sever又是如何与主机的rpc通信的

直接尝试使用tcpdump抓一下包

1
tcpdump -i lo -s 0 -w frida_all.pcap tcp

在tcp流中,可以看到显示建立了一个Websocket通信,猜测是rpc与server之间的建立连接

image-20260504160233786

然后就是一个超长的tcp通信记录,可以看到其中出现了/frida/repl-1.js

image-20260504160343610

而/frida/repl-2.js中,就是我们注入脚本的内容

image-20260504160434283

而在后面的内容中,就是我们平常所说的“Hook”的内容,返回了从内存中读取的结果,js脚本的输出等等

而这里就是server和agent之间的通信,使用了D-Bus协议

image-20260504160546563

  • 标题: Frida学习-Frida通信原理
  • 作者: 两只羊
  • 创建于 : 2026-05-04 15:54:28
  • 更新于 : 2026-05-06 11:28:37
  • 链接: https://twogoat.github.io/2026/05/04/Frida学习-Frida通信原理/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
Frida学习-Frida通信原理