この記事を参照してください: VNC、Fog Creek Copilot、およびその他のリモート コントロール ソフトウェアの仕組み.
そのブログ投稿の内容から、ここで追加の詳細を提供しますが、それは Fog Creek Copilot のソース コードに固有のものです。このデータはすべて、ソース コードを調べて取得したものです。
基本的に、Copilot は C++ でゼロから作成されたのではなく、GPL 化された TightVNC から構築されました。はい、これは Copilot のメイン ソースも提供する必要があることを意味します。Fog Creek 副操縦士のソース コードは、ここから入手できます。私が理解している限りでは、このプロジェクトのソース コードを GPL にする限り、ソリューションを構築することができます。
プロジェクトは Mac 版と Windows 版に分かれています。Mac バージョンは Objective C でビルドされ、Windows バージョンは Win32 C++ (MFC ではない) でビルドされます。Windows 版には、VS 2008 で作成されたヘルパー ソリューションと VS 2008 で作成されたホスト ソリューション (ホストは支援される人) があります。リンク サイズが大きいため、Trolltech の Qt を使用しなかったと思います。これは重要でした。ダウンロードを非常に小さく保つために、最初は毎回誰かを助けている全員と助けを必要としている全員がダウンロードする必要があったためです。
x64 構成も IA64 構成もないため、Windows 上のすべてのコードは x86 プロセスとしてのみ実行されます。他の32ビットプロセスが使用できるのと同じように、WOW64を介して64ビットウィンドウで実行できます。
私が理解しているように、開発はほとんどの場合、VM 上で実行されているホストで行われました。ヘルパーの開発はデスクトップ上で行われました。
Copilot のソース コードは、boost 1.38 と、その他のいくつかのサードパーティ ライブラリを使用しています。これらのライブラリには、NAT トラバーサル用の STUNT、MatrixSSL、libntlm (Microsoft の NTLM 認証用ライブラリ)、および omnithread (スレッド化および同期ライブラリ) が含まれます。
ほとんどの部分で bsd スタイルのソケットを使用しますが、boost::asio にいくつかのネットワーク コードも含まれています。boost::asio 1.38 には多数のバグがあり、boost 1.40 で修正されているため、これは問題です。このプロジェクトには、ホスト上のキーボード、マウス、およびその他の Windows メッセージをフックするための Windows フック DLL もあります。
Windows シェルとは異なりますが、基本的に 3 つのバイナリ (ホスト、デリータ、およびフック dll) を含むシェル プロジェクトがあります。これらを抽出します。
彼らが提供していないのは、Reflector と Web サイトのソース コードです。projectaardvark.comのいくつかのブログ投稿からわかるように、それらは両方とも C# であり、それ以外はすべて C++ です。リフレクタの目的は、NAT トラバーサルを支援することです。ちなみにprojectaardvark.comに代わる新しいブログはAir Trafficと呼ばれます。
VNC は、リモート フレームバッファ プロトコルに基づいています。プロトコルの経験が豊富であれば、RFB プロトコル自体はそれほど難しくありません。