请看这篇标题为:How VNC, Fog Creek Copilot and other remote control software works的文章。
我将在此提供一些其他详细信息,来自该博客文章的内容,但更具体到 Fog Creek Copilot 源代码。所有这些数据都是通过查看源代码获得的。
基本上,Copilot 不是用 C++ 从头开始编写的,而是基于 GPL 的 TightVNC 构建的。是的,这意味着 Copilot 的主要来源也必须提供。你可以得到Fog Creek copilot source code here。据我了解,只要您也将其设为 GPL,您就可以使用该项目的源代码构建您的解决方案。
该项目分为 Mac 版本和 Windows 版本。 Mac 版本内置于 Objective C,windows 版本内置于 Win32 C++(不是 MFC)。对于 Windows 版本,VS 2008 提供了一个 Helper 解决方案,VS 2008 提供了一个 Host 解决方案(主机是被帮助的人)。我认为他们没有使用 Trolltech 的 Qt,因为它的链接大小很大,这很重要给他们以保持下载量非常小,因为它最初必须由每个帮助某人和每个需要帮助的人下载。
没有 x64 或 IA64 配置,因此 Windows 上的所有代码仅作为 x86 进程运行。它可以通过 WOW64 在 64 位窗口上运行,就像任何其他 32 位进程都可以使用一样。
据我了解,大部分开发都是通过在 VM 上运行的主机完成的。 Helper 的开发是在他们的桌面上完成的。
Copilot 源代码使用 boost 1.38 和其他几个第三方库。这些库包括用于 NAT 遍历的 STUNT、MatrixSSL、libntlm(用于 Microsoft 的 NTLM 身份验证的库)和omnithread(线程和同步库)。
大部分情况下它使用 bsd 风格的套接字,但在 boost::asio 中也有一些网络代码。这是有问题的,因为 boost::asio 1.38 中有很多在 boost 1.40 中修复的错误。该项目还有一个windows hook dll,用于在主机上挂钩键盘、鼠标和其他windows消息。
有一个 shell 项目,它与 windows shell 不同,但它基本上包含 3 个二进制文件:主机、删除程序和 hooks dll。它提取这些。
他们没有给出的是 Reflector 和网站的源代码,据我在 projectaardvark.com 上的一些博客文章中了解到,它们都是 C#,其他都是 C++。反射器的目的是协助 NAT 穿越。顺便取代projectaardvark.com的新博客叫Air Traffic。
VNC 基于远程帧缓冲协议。如果您有很多协议经验,RFB 协议本身并不难。