FR 2859548 A1 20050311 FR 0310610 A 20030909 La présente invention concerne un procédé de surveillance de l'exécution de programmes sur un ordinateur. Un programme en cours d'exécution sur un ordinateur effectue en général des lectures ou des écritures de données dans des fichiers situés dans des répertoires prédéterminés de l'ordinateur. Il fait également en général appel à des procédures externes, notamment des procédures du système d'exploitation de l'ordinateur sur lequel il s'exécute. C'est ainsi que certains virus, pour se propager à l'intérieur d'un ordinateur, voire d'un réseau reliant plusieurs ordinateurs, se présentent sous la forme de programmes exécutables, ou bien sont intégrés à des programmes exécutables de l'ordinateur dont ils modifient l'exécution, dans le but d'effectuer certaines actions indésirables telles que : - détruire des fichiers ; - remonter des informations sur l'utilisation de l'ordinateur ; usurper l'identité d'un utilisateur pour envoyer des messages frauduleux vers des destinataires répertoriés dans un fichier prédéterminé de l'ordinateur ; - modifier certains fichiers pour y introduire un autre virus ; - accéder à la base des registres de l'ordinateur pour y trouver des logiciels ou des mots de passe. Pour lutter contre de tels virus, il existe des programmes anti-virus qui analysent tous les fichiers introduits dans l'ordinateur, que cette introduction de fichiers soit réalisée par copie du contenu d'une disquette, par téléchargement via Internet ou par tout autre type de chargement sur l'ordinateur. Ces programmes anti-virus disposent d'une description d'une liste de virus connus. Ils sont adaptés pour analyser les fichiers chargés sur l'ordinateur et ne pas autoriser la copie de ceux qui comportent un virus. Cependant les programmes anti-virus ne permettent pas de détecter l'intrusion de nouveaux virus non connus dans la liste. Ils doivent donc être régulièrement mis à jour pour lutter contre de nouveaux virus toujours plus nombreux. Ainsi, ce type de procédé implique nécessairement que s'engage une course entre les émetteurs de virus d'une part et les détecteurs de virus d'autre part, ces derniers ayant toujours à rattraper les premiers. Il est également possible de se protéger contre une exécution détournée d'un programme d'ordinateur en exigeant que celui-ci soit fourni avec un certificat délivré par un organisme de confiance, garantissant qu'il ne comporte pas de virus. Cette solution n'est pas très satisfaisante puisque la certification est difficile à obtenir et qu'elle est basée sur un système de confiance. De plus, elle ne permet pas à proprement parler de surveiller l'exécution du programme d'ordinateur. L'invention vise à remédier à ces inconvénients en fournissant un procédé de surveillance de l'exécution d'un programme d'ordinateur qui soit fiable, également pour lutter contre des virus éventuellement non encore connus des programmes anti-virus. A cet effet, l'invention a pour objet un procédé de surveillance de l'exécution de programmes sur un ordinateur, caractérisé en ce qu'il comporte les étapes suivantes : - on compare les instructions d'un programme initial aux données d'un fichier de description associé à ce programme initial, le fichier de description comportant des données sur des appels de procédures externes au programme initial, effectués par ces instructions ; lors de l'exécution des instructions du programme initial, on effectue l'appel de procédures externes uniquement lorsque celles-ci sont prévues et autorisées dans le fichier de description. Ainsi, grâce à l'invention, le programme d'ordinateur peut être surveillé pendant tout le cours de l'exécution de ses instructions, en ce qui concerne ses appels de procédures externes, notamment les procédures du système d'exploitation de l'ordinateur généralement visées par les virus. Même lorsque le virus est programmé pour apparaître avec un temps de retard prédéfini, ce procédé permet de le détecter, puisqu'il permet de surveiller toutes les exécutions d'instructions du programme d'ordinateur. Dans un mode de réalisation préféré, un procédé selon l'invention peut en outre comporter la caractéristique selon laquelle, lors de l'exécution des instructions du programme initial, le fichier de description comportant en outre des données sur l'environnement d'exécution du programme initial, on teste si les opérations de lecture et/ou écriture de données s'effectuent dans l'environnement prévu dans le fichier de description. Le programme d'ordinateur peut être alors surveillé pendant tout le cours de l'exécution de ses instructions, également en ce qui concerne ses lectures et écritures de données sur le disque dur de l'ordinateur. Dans un mode de réalisation préféré, un procédé selon l'invention peut en outre comporter la caractéristique selon laquelle on génère une librairie de protection qui comporte des procédures d'appel de procédures du système d'exploitation de l'ordinateur et de surveillance des opérations de lecture et/ou écriture de données effectuées lors de l'exécution de ces procédures du système d'exploitation, et selon laquelle, lors de l'exécution des instructions du programme initial, on remplace chaque appel de procédure du système d'exploitation par l'appel de la procédure d'appel et de surveillance correspondante de la librairie de protection. La librairie de protection constitue alors un écran permanent contre les virus, puisque le nouveau programme exécuté à la place du programme initial n'appelle jamais directement les procédures externes du système d'exploitation. Un procédé de surveillance de l'exécution d'un programme d'ordinateur selon l'invention peut en outre comporter l'une ou plusieurs des caractéristiques suivantes : - les données sur l'environnement d'exécution du programme initial comportent un élément de définition de l'environnement d'exécution comprenant au moins l'un des éléments suivants : # un élément définissant la localisation du fichier principal du programme initial ; # un élément définissant les noms des répertoires et sous-répertoires où doivent se trouver les fichiers associés au programme initial ; # un élément définissant certains répertoires particuliers identifiés de l'ordinateur, par exemple le répertoire du système d'exploitation et/ou le répertoire des polices de caractères ; # un élément définissant le nombre de fichiers et les noms des fichiers qui doivent se trouver dans chacun desdits répertoires ; # un élément définissant l'arborescence d'enregistrement des clés dans la base de registre de l'ordinateur ; et # un élément définissant les noms de ces clés de registre et leurs valeurs ; - les données sur des appels de procédures externes au programme initial comportent au moins un élément de définition des contrôles à effectuer sur un appel de procédure comprenant : # un élément définissant le nom d'une procédure externe à contrôler ; et # un élément définissant la librairie ou le fichier exécutable auquel cette procédure externe appartient ; - les données sur des appels de procédures externes au programme initial comportent en outre un élément définissant les contrôles à effectuer pour laisser passer ou empêcher l'appel d'une procédure externe, ces contrôles portant au moins l'un des paramètres d'appel suivants : # test de localisation d'un nom de fichier fourni en paramètre, # test de valeur d'un paramètre, # test d'un bit particulier d'un paramètre ; - le procédé comprend en outre les étapes suivantes : # on génère un nouveau programme à partir du programme initial dans lequel chaque appel de procédure du système d'exploitation des instructions du programme initial est remplacé par l'appel de la procédure d'appel correspondante de la librairie de protection ; # pour l'exécution des instructions du programme initial, on exécute le nouveau programme à la place du programme initial ; le programme initial étant associé à au moins une librairie initiale et/ou au moins un fichier exécutable initial comportant des procédures externes autres que les procédures du système d'exploitation, le procédé comprend en outre les étapes suivantes : # on génère au moins une nouvelle librairie et/ou au moins un nouveau fichier exécutable à partir de la librairie initiale et/ou du fichier exécutable initial, en y remplaçant chaque appel d'une procédure externe du système d'exploitation par un appel de la procédure correspondante de la nouvelle librairie de protection et de surveillance des opérations de lecture et/ou écriture de données effectuées lors de l'exécution de cette procédure externe du système d'exploitation ; # lors de la génération du nouveau programme à partir du programme initial, chaque appel de procédure externe de la librairie initiale et/ou du fichier exécutable initial est remplacé par l'appel de la procédure correspondante de la nouvelle librairie et/ou du nouveau fichier exécutable ; - on vérifie, à l'aide d'une liste conservant en mémoire les fichiers et les clés de registre créés lors de l'exécution du nouveau programme, que celui-ci ne tente pas de supprimer ou d'ouvrir en lecture un fichier ou une clé de registre qu'il n'a pas lui-même créé en cours d'exécution et qui n'est pas prévu dans le fichier de description ; le procédé comporte un étape de signalisation d'un incident, lorsque les instructions du programme initial ne s'exécutent pas dans l'environnement d'exécution défini dans le fichier de description ; -l'étape de signalisation est déclenchée également lorsqu'un appel à une procédure externe effectué lors de l'exécution d'une instruction du programme initial n'est pas prévu ou autorisé dans le fichier de description, ou lorsque le nouveau programme en cours d'exécution tente de supprimer ou d'ouvrir en lecture un fichier ou une clé de registre qu'il n'a pas lui-même créé en cours d'exécution et qui n'est pas prévu dans le fichier de description. lors de l'étape de signalisation, on stoppe l'exécution du programme en cours. L'invention sera mieux comprise à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés dans lesquels : - la figure 1 représente schématiquement la structure générale d'un système de mise en oeuvre du procédé selon l'invention ; et - la figure 2 représente les étapes successives d'un procédé selon l'invention. Le système représenté sur la figure 1 comporte un programme initial 10 destiné à être exécuté sur un ordinateur (non représenté). Pour son exécution sur l'ordinateur, le programme initial 10 peut être associé à plusieurs librairies et/ou fichiers exécutables comportant un certain nombre de procédures externes. Parmi ces procédures externes, certaines sont des procédures du système d'exploitation de l'ordinateur, d'autres sont des procédures fournies avec le programme 10 sous forme de librairies ou fichiers exécutables spécifiques. A titre d'exemple non limitatif, le programme 10 représenté sur la figure 1 est associé à deux librairies 12 et 14 comportant des procédures externes. Par exemple la librairie 12 comporte des procédures externes fournies avec le programme initial 10, alors que la librairie 14 comporte des procédures du système d'exploitation de l'ordinateur dont certaines sont appelées par le programme. Les procédures du système d'exploitation peuvent être par exemple des demandes d'accès aux fichiers stockés sur le disque dur de l'ordinateur, des demande d'accès à la base de registre de l'ordinateur, ou d'autres programmes. Le programme initial 10 est accompagné d'un fichier de description 16, tel que celui fourni en annexe B de la description. Le fichier de description 16 est par exemple généré à partir d'un schéma prédéfini de fichiers de description de programmes de type XML, tel que celui fourni en annexe A de la description. Il comporte des données sur l'environnement d'exécution du programme initial et sur des appels de procédures externes effectués lors de l'exécution normale de ses instructions. A tout moment, un utilisateur ou un administrateur peut modifier ce fichier de description 16 pour ajouter ou supprimer des appels de procédures externes. Ceci a pour effet de limiter ou étendre les possibilités d'exécution du programme initial 10. Le schéma de description fourni en annexe A comporte par exemple des éléments "ProgDirDeclListType" et "ExtCallDescTypwe" prévus pour décrire l'environnement d'exécution du programme initial, et notamment les répertoires dans lesquels il est supposé s'installer. Ces mêmes éléments sont prévus pour décrire les répertoires de clés de registre auxquels le programme est autorisé à avoir accès. L'élément "ExtCalDescType" est en particulier prévu pour décrire les répertoires dans lesquels le programme est autorisé à lire, modifier ou supprimer des données qu'il n'a pas créées lui-même, ainsi que les fichiers qu'il est autorisé à renommer dans ces répertoires. Plus précisément les éléments spécifiques du schéma de fichiers de description qui permettent de déclarer les conditions d'exécution d'un programme, dans l'exemple fourni en annexe A, sont les éléments "ExecutionEnvironment" et "ExternalCallDesc". L'élément "ExecutionEnvironment" permet de définir au moins l'un des éléments suivants : - la localisation du programme principal (élément ProgramLocation) ; - les noms des répertoires et sous-répertoires où doivent se trouver les fichiers associés au programme (éléments "ProgramDirectoryDeclaration" et "SubDirectoryList") ; certains répertoires particuliers identifiés de l'ordinateur (répertoire du système d'exploitation, répertoire des polices de caractères, etc.) ; le nombre de fichiers (élément "FileNumber") et les noms des fichiers (élément "File") qui doivent se trouver dans chacun de ces répertoires ; l'arborescence d'enregistrement des clés dans la base de registre (éléments "ProgramKeyDirectoryDeclaration" et "KeyList") ; les noms de ces clés de registre et leurs valeurs (attributs "name" et "value" de l'élément "KeyDirectoryCondition"). L'élément "ExternalCallDesc" permet de définir les contrôles à effectuer sur les appels de procédures externes : - le nom d'une procédure externe à contrôler (élément "FunctionName") ; - la librairie ou le fichier exécutable auquel cette procédure appartient (élément "Library"). De façon optionnelle, il permet aussi de définir les contrôles à effectuer pour laisser passer ou empêcher l'appel de cette procédure (élément "Condition") portant sur au moins l'un des paramètres d'appel suivants : - test de localisation d'un nom de fichier fourni en paramètre (élément "LocationTest") ; - test de valeur d'un paramètre (élément "ValueTest") ; test d'un bit particulier d'un paramètre (élément "BitTest"). A partir de la librairie 14, on génère une nouvelle librairie de protection 22 comportant des procédures d'appel des procédures de la librairie 14 et de surveillance des opérations de lecture et d'écriture de données effectuées lors de l'exécution de ces procédures de la librairie 14. Notamment, les procédures de la librairie de protection 22 sont adaptées pour examiner les conditions à remplir par les paramètres d'appel des procédures externes de la librairie 14 pour permettre l'exécution de celles-ci. Le programme initial 10, son fichier de description 16 et la librairie 12 sont fournis en entrée d'un module de traitement 18, adapté pour générer un nouveau programme 20 associé à une nouvelle librairie 21. Les procédures externes de la librairie 12 sont susceptibles de comporter des instructions d'appel de procédures du système d'exploitation que comporte la librairie 14. Le module de traitement 18 est donc adapté pour générer la nouvelle librairie 21 à partir de la librairie 12 en y remplaçant chaque appel de procédure externe de la librairie 14 par un appel de la procédure correspondante de la nouvelle librairie de protection 22. Il est aussi adapté pour générer le nouveau programme 20 à partir du programme initial 10 en y remplaçant chaque appel de procédure externe de la librairie 12 ou 14 par un appel de la procédure correspondante de la nouvelle librairie 21 ou 22. Ainsi, la nouvelle librairie de protection 22 fait écran entre, d'une part, le nouveau programme 20 et la nouvelle librairie 21, et, d'autre part, la librairie 14. La génération de la nouvelle librairie de protection 22 est de préférence indépendante de la génération du nouveau programme 20 et de la nouvelle librairie 21, puisqu'elle concerne des procédures indépendantes de la présence du programme initial 10 dans l'ordinateur. Elle peut être réalisée une fois pour toute lors de l'installation de l'ordinateur. Par contre lors de son exécution, la nouvelle librairie de protection 22 fait appel au fichier de description 16, et à une liste 24 qui sera décrite en référence à la figure 2, pour contrôler tout appel à l'une des procédures de la librairie 14. Le procédé de surveillance de l'exécution de programmes mis en #uvre par le système décrit précédemment est représenté sur la figure 2. Il comporte une première étape 30 de lecture du programme d'ordinateur initial 10 et du fichier de description 16 associé. Lors de cette étape, on compare les instructions du programme initial 10 aux données du fichier de description 16 associé au programme. Lors de l'étape 32 suivante, on peut prévoir l'affichage de procédures externes appelées par les instructions du programme initial 10, mais dont l'appel n'est pas prévu par le fichier de description 16. On peut prévoir également l'affichage de répertoires et de fichiers dans lesquels le programme initial 10 n'est pas autorisé à écrire ou lire des données, tel que prévu par le fichier de description 16. Ces dysfonctionnements peuvent en effet trahir la présence d'un virus perturbant l'exécution prévue des instructions du programme initial 10. Ensuite, lors d'une étape 34 exécutée par le module de traitement 18, on génère la librairie 21 à partir de la librairie 12. Lors de cette étape également, on génère le nouveau programme d'ordinateur 20 à partir du programme initial 10, en remplaçant les appels de procédures externes par des appels de procédures correspondantes des nouvelles librairies 21 et 22. Comme cela a été dit précédemment, la nouvelle librairie 22 a de préférence été générée au préalable, avant l'exécution de ce procédé de surveillance. Lors de l'étape 36 suivante, on exécute le nouveau programme 20 à la place du programme initial 10. Pendant son exécution, le nouveau programme 20 appelle une première procédure de la librairie de protection 22 lors d'une étape 38, soit directement, soit indirectement via l'appel d'une procédure de la nouvelle librairie 21. Lors de l'étape 40 suivante, on teste si cet appel de procédure externe est le premier. Si oui, on passe à une étape 42 de test sur l'environnement d'exécution du nouveau programme 20. Lors de cette étape 42, à l'aide du fichier de description 16, on détermine si le nouveau programme 20 est installé dans le répertoire prévu par le fichier de description 16 et si ses opérations de lecture/écriture s'effectuent dans les répertoires ou sous-répertoires prévus par le fichier de description 16. Si des problèmes d'environnement d'exécution sont détectés, on passe à une étape 43 de signalisation d'un incident. Lors de cette même étape 43, on arrête de préférence l'exécution du nouveau programme 20. En variante, on peut aussi ignorer l'instruction en cours d'exécution et passer à la suivante dans le nouveau programme 20. Sinon, on passe à une étape 44 de test. On passe également directement à cette étape 44 suite à l'étape 40, si l'appel de procédure externe effectué n'est pas le premier. Lors de l'étape 44, on teste s'il y a un problème d'appel d'une procédure externe non prévu par le fichier de description 16. On vérifie également, à l'aide d'une liste 24 conservant en mémoire les fichiers et les clés de registre créés lors de l'exécution du nouveau programme 20, que celui-ci ne tente pas de supprimer ou d'ouvrir en lecture un fichier ou une clé de registre qu'il n'a pas lui-même créé en cours d'exécution et qui n'est pas prévu dans le fichier de description 16. La liste 24 est par exemple stockée par l'ordinateur sous forme d'un fichier. Si l'un des problèmes précédents est détecté lors de l'étape 44, on passe à l'étape 43. Sinon, on passe à une étape 46 d'exécution de la procédure appelée lors de l'étape 38. Ensuite, on passe à une étape 48 lors de laquelle on inscrit l'opération effectuée lors de l'étape 46 dans la liste 24, si cette opération a conduit à la création d'au moins un nouveau fichier ou à l'écriture de données dans au moins un fichier existant. Enfin, on passe de nouveau à l'étape 38 dès que le nouveau programme 20 effectue l'appel d'une nouvelle procédure de la librairie de protection 22, soit directement, soit via l'appel d'une procédure de la nouvelle librairie 21. Il apparaît clairement qu'un procédé selon l'invention permet de se prémunir efficacement contre l'intrusion de virus sur un ordinateur, en luttant contre leurs effets, plutôt qu'en tentant de les détecter a priori. On notera que l'invention n'est pas limitée au mode de réalisation précédemment décrit. En effet, en variante, le fichier de description 16 peut inclure la liste 24. Annexe A - Exemple de schéma de fichiers de description de programmes minOccurs = "0" maxOccurs = "unbounded"/> type = "LocationTestType"/> Annexe B - Exemple de fichier de description de programme value = "HKEY~LOCAL~MACHINBSOFTWARBmySoftware7> Ouverture de fichier hfile = OpenFile(FileName,&ofstruct,OF~READ); MSVCRT.DLL To exclude READING of files not created by the program outside the program directory and subdirectory "data" locationTestOp = "IS~NOT ~IN~DIRECTORY" directoryBaseType = "registered~directory" directoryBase = "ProgramDirectory" locationTestOp = "IS NOT SUB DIRECTORY" directoryBase = "ProgramDirectory" subDirectory = "data"/> parameterMask = "OOOOFO"/> Lecture de fichier ouvert ReadFile(hFileLec, tmp, IgMaxTmp, &nbOctetsLus, NULL); MSVCRT.DLL Lecture d'un registre RegQueryValueEx(hProgNameKey, -T("Path"), NULL, &typeVariable, (LPBYTE)&lpszValeurChemin, &IgTamponValeurChemin); ADV API32.DLL To exclude READING of keys not created by the program outside the program keydirectory locationTestOp = "IS~SUB~DIRECTORY" directoryBaseType = "registered~key~directory" directoryBase = "ProgramKeyDirectory" subDirectory = "data"/> Création d'un pointeur sur une clé de reg istre RegQueryValueEx(hProgNameKey, -T("Path"), NULL, &typeVariable, (LPBYTE)&lpszValeurChemin, &IgTamponValeurChemin); ADVAPI32.DLL renommage d'un fichier int= rename( const char *oldname, const char *newname ); MFC42.DLL To exclude RENAMING of files not created by the program outside the program directory and subdirectory "data" directoryBase = "ProgramDirectory"/> suppression d'un fichier int = remove(const char * pathName); MFC42.DLL To exclude REMOVING of files not created by the program outside the program directory and subdirectory "data" REVENDICATIONS 1. Procédé de surveillance de l'exécution de programmes sur un ordinateur, caractérisé en ce qu'il comporte les étapes suivantes : - on compare (30) les instructions d'un programme initial (10) aux données d'un fichier de description (16) associé à ce programme initial, le fichier de description comportant des données sur des appels de procédures (12,14) externes au programme initial, effectués par ces instructions ; lors de l'exécution (36,38, 40,42, 44,46, 48) des instructions du programme initial, on effectue (46) l'appel de procédures externes uniquement lorsque celles-ci sont prévues et autorisées dans le fichier de description (16). 2. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon la revendication 1, dans lequel lors de l'exécution (36,38, 40,42, 44,46, 48) des instructions du programme initial, le fichier de description (16) comportant en outre des données sur l'environnement d'exécution du programme initial, on teste (42) si les opérations de lecture et/ou écriture de données s'effectuent dans l'environnement prévu dans le fichier de description (16). 3. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon la revendication 2, dans lequel les données sur l'environnement d'exécution du programme initial (10) comportent un élément de définition de l'environnement d'exécution comprenant au moins l'un des éléments suivants : - un élément définissant la localisation du fichier principal du programme initial ; - un élément définissant les noms des répertoires et sous-répertoires où doivent se trouver les fichiers associés au programme initial ; un élément définissant certains répertoires particuliers identifiés de l'ordinateur, par exemple le répertoire du système d'exploitation et/ou le répertoire des polices de caractères ; - un élément définissant le nombre de fichiers et les noms des fichiers qui doivent se trouver dans chacun desdits répertoires ; un élément définissant l'arborescence d'enregistrement des clés dans la base de registre de l'ordinateur ; -un élément définissant les noms de ces clés de registre et leurs valeurs. 4. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon l'une quelconque des revendications 1 à 3, dans lequel les données sur des appels de procédures (12,14) externes au programme initial comportent au moins un élément de définition des contrôles à effectuer sur un appel de procédure comprenant : - un élément définissant le nom d'une procédure externe à contrôler ; - un élément définissant la librairie ou le fichier exécutable auquel cette procédure externe appartient. 5. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon la revendication 4, dans lequel les données sur des appels de procédures (12,14) externes au programme initial comportent en outre un élément définissant les contrôles à effectuer pour laisser passer ou empêcher l'appel d'une procédure externe, ces contrôles portant sur au moins l'un des paramètres d'appel suivants : # test de localisation d'un nom de fichier fourni en paramètre ; # test de valeur d'un paramètre ; # test d'un bit particulier d'un paramètre. 6. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon l'une quelconque des revendications 1 à 5, dans lequel on génère une librairie de protection (22) qui comporte des procédures d'appel de procédures du système d'exploitation de l'ordinateur et de surveillance des opérations de lecture et/ou écriture de données effectuées lors de l'exécution de ces procédures du système d'exploitation, et dans lequel, lors de l'exécution des instructions du programme initial, on remplace chaque appel de procédure du système d'exploitation (14) par l'appel de la procédure d'appel et de surveillance correspondante de la librairie de protection (22). 7. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon la revendication 6, comprenant en outre les étapes suivantes : - on génère (34) un nouveau programme (20) à partir du programme initial (10) dans lequel chaque appel de procédure du système d'exploitation (14) des instructions du programme initial est remplacé par l'appel de la procédure d'appel correspondante de la librairie de protection (22) ; - pour l'exécution des instructions du programme initial, on exécute (38) le nouveau programme (20) à la place du programme initial (10). 8. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon la revendications 7, dans lequel le programme initial étant associé à au moins une librairie initiale et/ou au moins un fichier exécutable initial (12) comportant des procédures externe autres que les procédures du système d'exploitation, le procédé comprend en outre les étapes suivantes : - on génère (34) au moins une nouvelle librairie et/ou au moins un nouveau fichier exécutable (21) à partir de la librairie initiale et/ou du fichier exécutable initial (12), en y remplaçant chaque appel d'une procédure externe du système d'exploitation (14) par un appel de la procédure correspondante de la nouvelle librairie de protection (22) et de surveillance des opérations de lecture et/ou écriture de données effectuées lors de l'exécution de cette procédure externe du système d'exploitation ; - lors de la génération (34) du nouveau programme (20) à partir du programme initial (10), chaque appel de procédure externe de la librairie initiale et/ou du fichier exécutable initial (12) est remplacé par l'appel de la procédure correspondante de la nouvelle librairie et/ou du nouveau fichier exécutable (21). 9. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon la revendication 7 ou 8, dans lequel on vérifie, à l'aide d'une liste (24) conservant en mémoire les fichiers et les clés de registre créés lors de l'exécution du nouveau programme (20), que celui-ci ne tente pas de supprimer ou d'ouvrir en lecture un fichier ou une clé de registre qu'il n'a pas lui-même créé en cours d'exécution et qui n'est pas prévu dans le fichier de description (16). 10. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon l'une quelconque des revendications 1 à 9, comportant un étape (43) de signalisation d'un incident, lorsque les instructions du programme initial (10) ne s'exécutent pas dans l'environnement d'exécution défini dans le fichier de description (16). 11. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon les revendications 9 et 10, dans lequel l'étape de signalisation (43) est déclenchée également lorsqu'un appel à une procédure externe (12,14) effectué lors de l'exécution d'une instruction du programme initial (10) n'est pas prévu ou autorisé dans le fichier de description (16), ou lorsque le nouveau programme (20) en cours d'exécution tente de supprimer ou d'ouvrir en lecture un fichier ou une clé de registre qu'il n'a pas lui-même créé en cours d'exécution et qui n'est pas prévu dans le fichier de description (16). 12. Procédé de surveillance de l'exécution de programmes sur un ordinateur selon la revendication 10 ou 11, dans lequel, lors de l'étape de signalisation (43), on stoppe l'exécution du programme (10,20) en cours.