Brevet FR2772157A1 — publié le 19990611

La présente description concerne d'une manière générale les ordinateurs et les programmes informatiques et, d'une manière plus spécifique, un système et un pro- cédé pour empêcher que des programmes ne soient exécutés sous un programme utilitaire de débogage. Un programme informatique qui est mémorisé dans un ordinateur contient souvent de nombreuses propriétés intellectuelles à protéger. Certaines de ces propriétés peuvent être facilement protégées par copyright et/ou par la législation sur les brevets. Cependant, d'autres de ces propriétés se doivent d'être protégées comme des se- crets commerciaux et, par conséquent, requièrent le plus haut degré de sécurité si l'on veut empêcher qu'elles ne soient soumises à une utilisation ou à un accès non-autorisé. Empêcher qu'un programme particulier ne soit soumis à une utilisation ou à un accès non-autorisé de- vient difficile une fois le programme atteint par un uti- lisateur non-astreint à une licence d'utilisation du lo- giciel ou à d'autres formes de protection. Par exemple, des programmes de diagnostic sont souvent installés sur un ordinateur par le fabricant de l'ordinateur et ceux-ci contiennent de nombreux secrets commerciaux propres au fabricant. D'une manière typique, seule la partie exécu- table (.exe) du programme est installée, ce qui fait que l'utilisateur ne peut obtenir le code source. En outre, la partie.exe du programme est souvent cryptée. Par exemple, un programme utilitaire PKLITE commercialisé par PKWARE, Inc., Brown Deer, WI, comprime la partie.exe du programme, tout en la cryptant. Cependant, ceci n'empêche nullement un utilisateur de lancer le programme par l'in- termédiaire d'un programme utilitaire de débogage. Le programme utilitaire de débogage fait fonctionner le pro- cesseur de l'ordinateur en mode 'exécution suspendue', ce qui amène le processeur à interrompre l'exécution ou à sauter vers une autre routine à certains intervalles pré- définis. Par exemple, le processeur peut être un proces- seur PENTIUM, tel que produit par Intel, Corp., Santa Clara, CA, et le mode 'exécution suspendue' peut être, par exemple, le mode opératoire 'débogage' ou 'pas-à-pas' décrit avec plus de détails dans le document intitulé "INTEL ARCHITECTURE SOFTWARE DEVELOPER'S MANUAL", vol. 1-3, 1997, publié par Intel Corporation, incorporé ici à titre de référence. En utilisant le programme de débogage, l'utilisateur peut accéder d'une manière illi- cite au programme, accédant ainsi aux secrets commerciaux qui y sont contenus. Par conséquent, ce dont on a besoin est un sys- tème et un procédé permettant d'empêcher un accès non-autorisé à un programme, même en utilisant un pro- gramme utilitaire de débogage. En réponse, on fournit un système et un procédé pour empêcher qu'un programme ne soit exécuté sous un programme utilitaire de débogage. Dans un premier mode de réalisation, une routine et un programme de logiciel sont mémorisés sur un disque dur d'un système informatique. Le système informatique comporte un processeur pour exécuter à la fois le programme de logiciel et la routine et peut fonctionner en mode 'exécution suspendue'. La routine em- pêche que le programme de logiciel ne soit soumis à un accès non-autorisé, tel que lorsque le processeur fonc- tionne en mode 'exécution suspendue' sous un programme utilitaire de débogage. Lorsque le processeur exécute le programme de logiciel, le programme peut lancer l'exécu- tion de la routine. Une fois lancée, la routine vérifie un certain emplacement-mémoire prédéterminé pour détermi- ner si le processeur fonctionne en mode 'exécution sus- pendue' et, si tel est le cas, l'empêche de continuer d'exécuter le programme de logiciel. Dans un premier mode de réalisation, l'emplace- ment-mémoire est un registre d'interruption du proces- seur, qui indique si des points d'arrêt, qui sont commu- nément utilisés dans les modes opératoires 'débogage', sont utilisés. La routine vérifie le registre d'interrup- tion afin de déterminer si celui-ci pointe sur un autre programme ou une autre routine. Si tel est le cas, alors le processeur fonctionne probablement en mode 'débogage' et la routine empêche que le processeur ne continue d'exécuter le programme originel. Dans un autre mode de réalisation, l'emplacement-mémoire est un registre d'in- dicateur du processeur, qui indique si d'autres modes opératoires du processeur sont utilisés. Dans le présent mode de réalisation, la routine vérifie le registre d'in- dicateur afin de déterminer si celui-ci indique un mode opératoire 'pasà-pas' pour le processeur. Si tel est le cas, la routine empêche le processeur de continuer d'exé- cuter le programme. On va maintenant décrire la présente invention, à titre d'exemple uniquement, en se reportant aux dessins annexés sur lesquels: - la figure 1 est un schéma fonctionnel d'un ordinateur destiné à implémenter un mode de réalisation, et - la figure 2 est un ordinogramme d'une routine à exécuter par l'ordinateur de la figure 1. En se reportant à la figure 1, la référence nu- mérique 10 indique un ordinateur comportant plusieurs composants, parmi lesquels au moins un processeur 12, une RAM 14, un disque dur 16 et un lecteur de disquette 18. Chaque composant est capable de communiquer avec le pro- cesseur 12, comme représenté graphiquement par un bus universel 20. Dans le présent exemple, le processeur 12 exécute un code de système d'exploitation DOS, tel que commercialisé par Microsoft Corp., Redmond, WA. Il va de soi, cependant, que l'ordinateur 10 et les composants il- lustrés qui lui sont associés ne sont que représentatifs de nombreux types d'ordinateurs et de composants diffé- rents et que le DOS n'est que représentatif de nombreux types différents de systèmes d'exploitation, parmi les- quels Windows et Windows 95, commercialisés aussi par Mi- crosoft Corp. Le processeur 12 comporte une pluralité de re- gistres, parmi lesquels un registre INTERRUPT (registre d'interruption) 22 et un registre FLAG (registre d'indi- cateur) 24. Les noms des registres 22, 24 concernent les processeurs PENTIUM et PENTIUM II, mais ceux-ci ne sont qu'illustratifs de registres similaires présents sur pra- tiquement tous les modèles et/ou toutes les marques de processeurs. Les registres 22, 24 sont aussi décrits dans le document intitulé "INTEL ARCHITECTURE SOFTWARE DEVELO- PER'S MANUAL, déjà incorporé à titre de référence et qui décrit en outre plusieurs modes opératoires différents du processeur, parmi lesquels un mode 'normal', un mode 'dé- bogage' et un mode 'pas-à-pas' Sur le disque dur 16 est mémorisé un fi- chier-programme exécutable (.exe) 26. Le programme 26 est couramment comprimé et crypté en utilisant un programme utilitaire classique, tel que le programme PKLITE, décrit plus en détail ci-dessus. Du fait que le programme 26 est crypté, un utilisateur ne peut pas se contenter d'une lecture du disque dur 16 s'il veut accéder au programme et le décompiler. Habituellement, cependant, l'utilisa- teur est en mesure de charger le programme 26 sur la RAM 14 et d'exécuter le programme avec le processeur 12 en utilisant un programme utilitaire de débogage (non-représenté). En agissant ainsi, l'utilisateur peut apprendre chaque ligne de code au sein du programme 26 et décompiler le programme, parvenant ainsi à accéder d'une manière non-autorisée au programme. En se reportant à la figure 2, une routine 100, qui est aussi mémorisée sur le disque dur 16, empêche l'utilisateur d'exécuter le programme 26 en utilisant le programme utilitaire de débogage. Le programme 26 lance la routine 100 durant l'exécution initiale du programme. Ainsi, par exemple, la routine 100 est une routine d'ini- tialisation, étant entendu, cependant, que la routine 100 peut être lancée à n'importe quel moment de l'exécution du programme 26. A l'étape 102, la routine 100 vérifie les re- gistres 22, 24. En utilisant l'exemple du processeur PEN- TIUM fabriqué par Intel décrit précédemment, d'une ma- nière spécifique, le registre INTERRUPT 22 est un Regis- tre DEBUG 7 et le registre FLAG 24 est un Registre EFLAG. A l'étape 104, la routine 100 détermine si l'indicateur TF ("trap flag") du Registre EFLAG 24 est positionné à un. Si l'indicateur TF est positionné à un, indiquant le mode 'pas-à-pas', la routine 100 interrompt l'exécution du programme 26 à l'étape 106. Si l'indicateur TF est po- sitionné à zéro, l'étape exécutée ensuite est l'étape 108, au cours de laquelle la routine 100 détermine o pointe l'indicateur de point d'arrêt (INT3) du Registre INTERRUPT 22. L'indicateur INT3 peut pointer sur une rou- tine, telle qu'une routine du type "breakpoint exception handler", qui est souvent utilisée par un programme de débogage, ou peut contenir une instruction de retour "IRET", qui indique qu'aucun autre programme ni routine n'est appelé. Si l'indicateur INT3 pointe sur une ins- truction quelconque autre que l'instruction IRET, l'étape exécutée ensuite est l'étape 106 décrite ci-dessus. Dans le cas contraire, l'étape exécutée ensuite est l'étape au cours de laquelle la routine 100 rend la commande au programme 26, qui peut maintenant poursuivre normale- ment. En vérifiant les registres 22, 24, la routine 100 sait si oui ou non le processeur 12 fonctionne dans un mode 'débogage', empêchant ainsi l'exécution du programme 26 sous un programme utilitaire de débogage. Bien que des modes de réalisation illustratifs aient été représentés et décrits, des modifications, des changements et des remplacements peuvent être apportés dans la description qui précède et, dans certains cas, certaines caractéristiques seront utilisées sans l'utili- sation correspondante d'autres caractéristiques. Par exemple, la routine 100 peut être appelée d'une manière répétée par le programme 26 pour mieux s'assurer que le programme ne sera pas exécuté par un débogueur. En outre, le programme 26 et la routine 100 peuvent être mémorisés au niveau d'emplacements différents, des registres addi- tionnels ou autres registres, indicateurs, ou dispositifs de mémorisation peuvent être vérifiés et des routines de manipulation des erreurs additionnelles peuvent être ajoutées au mode de réalisation illustratif sans en modi- fier la portée. REVENDICATIONS 1. Ordinateur (10) comportant: au moins un processeur (12) pour exécuter un programme de logiciel (26), le processeur (12) pouvant fonctionner dans un mode 'exécution suspendue' et compor- tant un premier emplacement-mémoire qui indique si le processeur (12) fonctionne dans le mode 'exécution sus- pendue', un dispositif de mémorisation accessible au processeur (12), et une routine (100) mémorisée dans le dispositif de mémorisation, caractérisé en ce que, lorsque le processeur (12) exécute le programme de logiciel (26), le programme (26) est capable de lancer la routine (100), et en ce que, une fois lancée, la routine (100) vérifie le premier emplacement-mémoire pour déterminer si le proces- seur (12) se trouve dans le mode 'exécution suspendue' et, si tel est le cas, empêche le processeur (12) de con- tinuer d'exécuter le programme de logiciel (26). 2. Ordinateur (10) selon la revendication 1, caractérisé en ce que le premier emplacement-mémoire est un registre d'interruption (22) du processeur (12). 3. Ordinateur (10) selon la revendication 1, caractérisé en ce que le premier emplacement-mémoire est un registre d'indicateur (24) du processeur (12). 4. Ordinateur (10) selon la revendication 1, caractérisé en ce que le processeur (12) comporte en ou- tre un second emplacement-mémoire, le premier emplace- ment-mémoire étant un registre d'interruption (22) et le second emplacement-mémoire étant un registre d'indicateur (24), et en ce que l'un ou l'autre des deux registres (22, 24) peut indiquer si le processeur (12) fonctionne dans le mode 'exécution suspendue'. 5. Ordinateur (10) selon la revendication 1, caractérisé en ce que le mode 'exécution suspendue' est un mode 'débogage'. 6. Ordinateur (10) selon la revendication 1, caractérisé en ce que le mode 'exécution suspendue' est un mode 'pas-à-pas'. 7. Ordinateur (10) selon la revendication 1, caractérisé en ce que, si la routine (100) détermine que le processeur (12) ne se trouve pas dans le mode 'exécu- tion suspendue', la routine (100) autorise l'exécution du programme de logiciel (26). 8. Ordinateur (10) selon la revendication 1, caractérisé en ce que le dispositif de mémorisation est un disque dur (16). 9. Ordinateur (10) selon la revendication 1, caractérisé en ce que le dispositif de mémorisation est un lecteur de disquette (18). 10. Ordinateur (10) selon la revendication 1, caractérisé en ce que le dispositif de mémorisation est une mémoire à accès aléatoire (14). 11. Procédé pour empêcher qu'un utilisateur ne fasse tourner un programme sur un processeur fonctionnant dans un mode 'exécution suspendue', le procédé étant ca- ractérisé en ce qu'il comporte les étapes consistant à: vérifier (102) un premier emplacement-mémoire prédéterminé, déterminer (104) si le premier emplace- ment-mémoire appelle une autre routine, et si tel est le cas, empêcher le processeur (12) de continuer d'exécuter le programme (26). 12. Procédé selon la revendication 11, caracté- risé en ce qu'il comporte en outre les étapes consistant à.: vérifier (108) un second emplacement-mémoire prédéterminé, déterminer si le second emplacement-mémoire in- dique un mode opératoire 'exécution suspendue' pour le processeur (12), et si tel est le cas, empêcher (106) le processeur (12) de continuer d'exécuter le programme (26). 13. Procédé selon la revendication 11, caracté- risé en ce que le premier emplacement-mémoire est un re- gistre d'interruption (22) du processeur (12). 14. Procédé selon la revendication 12, caracté- risé en ce que le premier emplacement-mémoire est un re- gistre d'interruption (22) du processeur (12) et le se- cond emplacement-mémoire est un registre d'indicateur (24) du processeur (12). 15. Procédé selon la revendication 11, caracté- risé en ce que le mode opératoire 'exécution suspendue' est un mode 'pasà-pas' 16. Procédé selon la revendication 12, caracté- risé en ce que le mode opératoire 'exécution suspendue' est un mode 'débogage'. 17. Dispositif pour empêcher qu'un utilisateur ne fasse tourner un programme sur un processeur (12) fonctionnant en mode 'débogage', le dispositif étant ca- ractérisé en ce qu'il comporte: des moyens pour vérifier un premier emplace- ment-mémoire prédéterminé, des moyens pour déterminer si le premier empla- cement-mémoire indique que le processeur fonctionne dans un mode 'exécution suspendue', et des moyens sensibles pour déterminer que le premier emplacement-mémoire indique le mode 'exécution suspendue' afin d'empêcher que le processeur (12) ne con- tinue d'exécuter le programme (26). 18. Dispositif selon la revendication 17, ca- ractérisé en ce qu'il comporte en outre: des moyens pour vérifier un second emplace- ment-mémoire prédéterminé, des moyens pour déterminer si le second empla- cement-mémoire pointe sur une autre routine, et des moyens sensibles pour déterminer que le se- cond emplacement-mémoire pointe sur une autre routine afin d'empêcher que le processeur ne continue d'exécuter le programme. 19. Dispositif selon la revendication 17, ca- ractérisé en ce que le premier emplacement-mémoire est un registre d'indicateur (24) du processeur (12). 20. Dispositif selon la revendication 18, ca- ractérisé en ce que le premier emplacement-mémoire est un registre d'indicateur (24) du processeur (12) et le se- cond emplacement-mémoire est un registre d'interruption (22) du processeur (12). 21. Dispositif selon la revendication 17, ca- ractérisé en ce que le mode opératoire 'exécution suspen- due' est un mode 'pas-à-pas' ou un mode 'débogage'.