我一直对gh0st的通信框架有个疑惑。受控端向控制端发送数据的过程中(就是svchost->gh0st),比如有一块很大的数据,它是采用分块传输的。
整个数据被分为若干个小的缓冲区,每块8192字节。
为了标示数据的类型,它是在整个数据的第一字节设置了一个token,控制端接收到这个数据后,根据这个token来以不同的方式处理这些数据。那么问题就是,既然svchost是以分块传输的,那么gh0st接受到的数据肯定也是分块的,并且,只有第一块数据buffer包含token。那么,gh0st是如何将这些数据块正确地拼接在一起呢?
如果在分块传输一大片数据的过程中,心跳包、文件传输等其他token的数据buffer又来了,怎么区别呢?