Veuillez vous référer à cet article intitulé: How VNC, Fog Creek Copilot and other remote control software works.
Je vais fournir quelques détails supplémentaires ici, à partir de ce que dit ce billet de blog, mais c'est plus spécifique au code source de Fog Creek Copilot. Toutes ces données ont été tirées de l'examen du code source.
Fondamentalement Copilot n'a pas été écrit à partir de zéro en C++ mais à la place il a été construit à partir de la TightVNC de la GPL. Oui, cela signifie que la source principale de Copilot doit également être fournie. Vous pouvez obtenir le Fog Creek copilot source code here. Et pour autant que je comprenne, vous pourriez construire votre solution hors du code source de ce projet aussi longtemps que vous l'avez fait aussi.
Le projet est divisé en une version Mac et une version Windows. La version Mac est construite dans l'objectif C et la version de Windows est construite en Win32 C++ (pas MFC). Pour la version Windows il y a une solution Helper faite en VS 2008 et une solution Host (l'hôte est la personne aidée) faite en VS 2008. Je pense qu'ils n'ont pas utilisé Qt de Trolltech à cause de sa taille de lien importante, c'était important à eux de garder le téléchargement très petit car il devait d'abord être téléchargé par tout le monde aidant quelqu'un et tout le monde ayant besoin d'aide à chaque fois.
Il n'existe aucune configuration x64 ni IA64, donc tout le code sous Windows s'exécute uniquement en tant que processus x86. Il peut fonctionner sur une fenêtre 64 bits via WOW64, comme n'importe quel autre processus 32 bits. Si je comprends bien, le développement a été fait avec l'hôte fonctionnant sur une VM pour la plupart. Le développement de l'assistant a été fait sur leur bureau.
Le code source Copilot utilise boost 1.38 et plusieurs autres bibliothèques tierces. Ces bibliothèques incluent STUNT pour NAT traversal, MatrixSSL, libntlm (bibliothèque pour l'authentification NTLM de Microsoft) et omnithread (bibliothèque de threads et de synchronisation).Pour la plupart, il utilise des sockets de style bsd, mais il a aussi du code réseau dans boost :: asio. Ceci est problématique car boost :: asio 1.38 contient beaucoup de bugs corrigés dans le boost 1.40. Le projet a un dll de hook de Windows aussi bien pour accrocher des messages de clavier, de souris et d'autres fenêtres sur l'hôte.
Il existe un projet shell qui ne ressemble pas au shell Windows mais qui contient essentiellement 3 binaires: l'hôte, le deleter et les hooks dll. Il les extrait. Ce qu'ils ne donnent pas est le code source pour le Reflector et le site Web, qui, d'après ce que j'ai compris de certains articles de blog sur projectaardvark.com, ils sont tous deux en C#, Tout le reste en C++. Le but du réflecteur est d'aider à traverser NAT. Le nouveau blog qui remplace projectaardvark.com est appelé Air Traffic. VNC est arrêté par le protocole de tampon d'image à distance. Le protocole RFB lui-même n'est pas si difficile si vous avez beaucoup d'expérience de protocole.
a beaucoup aidé, merci – balexandre