exe抓包工具
双击一个 exe,包工窗口闪一下没了。包工没报错,包工没日志,包工任务管理器里连进程都来不及看清。包工这种时候,包工抓包往往是包工唯一能撬开嘴巴的手段。
但“抓包”这个词在 Windows 上其实有点模糊。包工狭义上指抓网络包,包工广义上,包工凡是包工拦截程序与外部世界的通信——包括文件、注册表、包工API 调用——都算。包工搞 exe 分析的包工人,两样都得会。包工
网络层:Wireshark 是起点,不是终点
Wireshark 能抓到 exe 发出的所有 TCP/UDP 流量,前提是你选对了网卡。虚拟网卡、VPN 隧道、localhost 回环,这三处最容易漏。我见过一个样本,连的是 127.0.0.1:8888,Wireshark 默认不抓回环,折腾半天以为程序没联网。
抓到包只是第一步。现在的 exe 很少裸奔 HTTP,要么 TLS,要么自定义二进制协议。TLS 流量在 Wireshark 里就是一堆密文,除非你能拿到会话密钥。办法有两个:一是设置 SSLKEYLOGFILE 环境变量,让浏览器或某些库把密钥吐出来;二是用 Fiddler 或 mitmproxy 做中间人,把证书塞进系统信任区。后者对 exe 更通用,但遇到证书固定(certificate pinning)就歇菜。
自定义协议更麻烦。我抓过一个游戏辅助 exe,流量全是 0x01 开头、长度不固定。用 Wireshark 看就是乱码。后来拿 010 Editor 对着十六进制硬啃,发现前 4 字节是包长,第 5 字节是命令号,后面跟 protobuf 序列化数据。这种活没有捷径,就是耐心加运气。
系统层:API Monitor 和 Process Monitor 才是主力
很多 exe 根本不走网络。它读注册表、写文件、创建互斥体、注入其他进程。这时候 Wireshark 一点用没有。
Process Monitor(ProcMon)能记录所有文件、注册表、进程和网络活动。过滤条件设好,比如 Process Name is target.exe,然后看它启动时摸了哪些路径。我抓过一个勒索样本,ProcMon 里清清楚楚显示它先读 C:\Users\xxx\Documents,然后开始批量重命名文件为 .locked。行为链一目了然。
API Monitor 更底层,直接 hook Win32 API。想看 exe 怎么解密字符串?挂上 VirtualAlloc、WriteProcessMemory、CreateRemoteThread,调用栈和参数全给你列出来。缺点是兼容性一般,64 位程序有时候挂不上,得换 x64dbg 手动下断点。
一个真实案例
去年帮朋友看一个“发票助手”exe。双击后界面正常,但后台偷偷发数据。Wireshark 抓到它连了一个阿里云 IP,443 端口。用 Fiddler 做中间人,发现证书校验失败——它内置了证书指纹。换 API Monitor 挂 WinHttpSendRequest,在调用前下断点,看内存里的请求体。结果是明文 JSON,包含本机所有文档的文件名和路径。这程序连 TLS 都懒得好好做,证书固定只是摆设。
抓包工具的选择取决于 exe 的“嘴”长在哪。走网络就 Wireshark + Fiddler,走系统调用就 ProcMon + API Monitor。两个都不走?那它可能只是个计算器。
最后说一句:抓包不是万能钥匙。遇到 VM 检测、反调试、代码虚拟化,工具链再全也得跪。但多数商业软件和普通恶意样本,上面这几板斧足够撬开第一层壳了。









