如果要单独的进程抓包,就需要注入之后Hook进程的Socket函数。
CozyShark只选择Hook了两个常用的函数send/recv。
由于API Hook属于另外的内容,所以这里略过。
为了开发方便,CozyShark选择使用Detours。
Detours是一个由微软开发的一个API Hook函数库,使用它只需要下载之后编译,这里同样跳过。
为了方便测试,CozyShark添加了三个Tester。
- Hook.Tester.Server是一个TcpServer,并且只可以接收消息(recv)
- Hook.Tester.Client是一个TcpClient,并且只可以发送消息(send)
- Hook.Tester是一个典型的dll注入器。
本体部分是一个dll:CozyShark.Hook.dll,它负责对抓取到的数据的转发。
在将本体注入目标进程之后,Hook掉ws2_32.dll中的send和recv函数,开始抓取数据。
CozyShark原计划使用zpublic中的ipc组件,但是由于意外情况,需要自己实现。
由于同时只对一个进程进行数据包抓取,所以可以使用命名管道来进行ipc。