Brevet FR3051934A1 (20171201)
REVENDICATIONS1. Procédé d'identification d'au moins une fonction d'un noyau d'un système d'exploitation d'une machine virtuelle, ladite machine virtuelle comprenant un système d'exploitation communiquant avec un hyperviseur d'un système hôte, ledit hyperviseur s'interfaçant entre le système d'exploitation et des ressources matérielles du système hôte, ledit procédé comprenant les étapes suivantes : - identification (E10) d'une instruction initiale (I0) comprise dans le code du noyau du système d'exploitation de la machine virtuelle, - localisation (E12-E18) d'au moins un bloc d'instructions suivant appartenant à au moins une fonction du noyau du système d'exploitation de la machine virtuelle, ledit bloc suivant étant situé dans une zone mémoire qui suit l'instruction initiale, - localisation (E22-E28) d'au moins un bloc d'instructions précédent appartenant à au moins une fonction du noyau du système d'exploitation de la machine virtuelle, ledit bloc précédent étant situé dans une zone mémoire qui précède l'instruction initiale, - identification (P3) d'un premier bloc et d'un dernier bloc d'instructions de la fonction du noyau du système d'exploitation parmi le au moins un bloc suivant et le au moins un bloc précédent, et enregistrement d'une adresse de début de fonction et d'une adresse de fin de fonction en association avec la fonction du noyau du système d'exploitation, l'adresse de début de fonction étant l'adresse de la première instruction du premier bloc et l'adresse de fin de fonction étant l'adresse de la dernière instruction du dernier bloc.\n<CLM>\1\tProcédé d'identification d' au moins une fonction selon la revendication 1, dans lequel l'instruction initiale est identifiée en accédant à un registre spécifique du processeur. 25\n<CLM>\1\tProcédé selon l'une des revendications précédentes, dans lequel la localisation d'au moins un bloc suivant, situé dans la zone mémoire qui suit l'instruction initiale, comprend : - recherche, dans la zone mémoire qui suit l'instruction initiale, d'une instruction courante qui suit une instruction de fin de bloc, ladite instruction courante étant la première 30 instruction du bloc suivant, - recherche, dans la zone mémoire qui suit la première instruction du bloc suivant, d'une instruction de fin de bloc suivante, ladite instruction de fin de bloc suivante étant la dernière instruction du bloc suivant. 3051934 36\n<CLM>\1\tProcédé selon l'une des revendications précédentes, dans lequel la localisation d'au moins un bloc précédent, situé dans la zone mémoire qui précède l'instruction initiale comprend : - recherche, dans la zone mémoire qui précède l'instruction initiale, d'au moins deux 5 instructions de fin de bloc, une première instruction de fin de bloc étant située à une première adresse, une deuxième instruction de fin de bloc étant située à une deuxième adresse, la première adresse étant plus éloignée de l'instruction initiale que la deuxième adresse, - mise en oeuvre d'un désassemblage sur des instructions qui suivent la première adresse, 10 - lorsqu'une instruction obtenue par désassemblage depuis la première adresse et figurant à la deuxième adresse correspond à la deuxième instruction de fin de bloc, sélection de l'instruction qui suit la deuxième instruction de fin de bloc, ladite instruction qui suit la deuxième instruction de fin de bloc correspondant à la première instruction du au moins un bloc précédent, 15 - recherche dans la zone de mémoire qui suit la première instruction du au moins un bloc précédent d'une autre instruction de fin de bloc, ladite autre instruction de fin de bloc correspondant à la dernière instruction du au moins un bloc précédent.\n<CLM>\1\tProcédé selon l'une des revendications précédentes, dans lequel l'identification d'un 20 premier bloc et d'un dernier bloc d'instructions de la fonction du noyau comprend : - calcul (E16, E26) pour chacun des au moins un bloc suivant et des au moins un bloc précédent d'une signature des instructions du bloc, - recherche (E17, E27) de ladite signature dans une base de référence de signatures de blocs (BDR), ladite base de référence comprenant pour au moins un système d'exploitation de référence, les signatures des instructions des blocs qui font partie des fonctions de référence du noyau dudit système d'exploitation, une signature des instructions d'un bloc de la base étant associée au nom d'au moins une fonction de référence du noyau qui comprend ledit bloc, - classement (P3) des au moins un bloc suivant et des au moins un bloc précédent selon une adresse de bloc, et regroupement de blocs successifs et identification de la fonction du noyau qui comprend ledit regroupement de blocs, un premier bloc du regroupement correspondant au premier bloc de la fonction du noyau et un dernier bloc du regroupement correspondant au dernier bloc de la fonction du noyau. 3051934 37\n<CLM>\1\tProcédé selon la revendication 1 comprenant, dans une phase de construction de la base de référence de signatures des blocs qui font partie des fonctions de référence d'au moins un système d'exploitation de référence, les étapes suivantes : - obtention (E50) de l'adresse de début d'une première fonction de référence, l'adresse 5 de début de la première fonction de référence étant associée au nom de la première fonction de référence dans une documentation du système d'exploitation, et obtention dans la documentation de l'adresse de début d'une fonction de référence suivante, - association (E51) d'une adresse mémoire précédent l'adresse de début de la fonction de référence suivante à une adresse de fin de la première fonction de référence, 10 - identification (E52) entre l'adresse de début de la première fonction de référence et de l'adresse de fin de la première fonction de référence d'au moins un bloc d'instructions, la dernière instruction dudit bloc étant une instruction de fin de bloc, - calcul (E53) d'une signature dudit bloc d'instructions identifié, - enregistrement (E54) dans la base de référence de ladite signature du bloc en 15 association avec le nom de la première fonction de référence.\n<CLM>\1\tUtilisation du procédé d'identification d'au moins une fonction d'un noyau, selon l'une des revendications 1 à 5 par un module de supervision de l'exécution d'une machine virtuelle, ledit module de supervision commandant à l'hyperviseur d'injecter dans la machine 20 virtuelle l'appel d'une fonction du noyau.\n<CLM>\1\tUtilisation du procédé selon l'une des revendications 1 à 5 par un module de supervision de l'exécution d'une machine virtuelle, ledit module de supervision commandant à l'hyperviseur de positionner des bits associés au caractère exécutable d'une fonction du noyau à 25 non exécutable de manière à recevoir une notification lors de l'exécution de ladite fonction par la machine virtuelle.\n<CLM>\1\tUtilisation du procédé selon l'une des revendications 1 à 5 par un module de supervision de l'exécution d'une machine virtuelle, ledit module de supervision commandant à 30 l'hyperviseur d'injecter une instruction d'interception d'activité dans le code d'une fonction du noyau de manière à recevoir une notification lors de l'exécution de ladite fonction par la machine virtuelle.\n<CLM>\1\tUtilisation du procédé selon l'une des revendications 1 à 5 par un module de 35 supervision de l'exécution d'une machine virtuelle, ledit module de supervision commandant à 3051934 38 l'hyperviseur d'injecter une instruction d'interception d'activité dans le code d'une fonction du noyau de manière à recevoir une notification lors de la fin de l'exécution de ladite fonction par la machine virtuelle. 5\n<CLM>\1\tDispositif (60) d'identification d'au moins une fonctions d'un noyau d'un système d'exploitation d'une machine virtuelle, ladite machine virtuelle comprenant un système d'exploitation communiquant avec un hyperviseur (601) du serveur, ledit hyperviseur s'interfaçant entre le système d'exploitation et des ressources matérielles du serveur, ledit serveur comprenant : 10 - des moyens (607) d'identification d'une instruction initiale, agencés pour identifier une instruction initiale (I0) comprise dans le code du noyau du système d'exploitation de la machine virtuelle, - des premiers moyens de localisation (608), agencés pour localiser au moins un bloc d'instructions suivant compris dans au moins une fonction du noyau du système d'exploitation 15 de la machine virtuelle, ledit bloc suivant étant situé dans une zone mémoire qui suit l'instruction initiale, - des deuxièmes moyens de localisation (609), agencés pour localiser au moins un bloc d'instructions précédent compris dans au moins une fonction du noyau du système d'exploitation de la machine virtuelle, ledit bloc précédent étant situé dans une zone mémoire 20 qui précède l'instruction initiale, - des moyens d'identification (610), agencés pour identifier, parmi les au moins un bloc suivant et les au moins un bloc précédent, un premier bloc et d'un dernier bloc d'instructions qui composent la fonction du noyau du système d'exploitation, - des moyens d'enregistrement (611), agencés pour enregistrer une adresse de début de 25 fonction et une adresse de fin de fonction en association avec la fonction du noyau du système d'exploitation, l'adresse de début de fonction étant l'adresse de la première instruction du premier bloc et l'adresse de fin de fonction étant l'adresse de la dernière instruction du dernier bloc. 30\n<CLM>\1\tProgramme d'ordinateur sur un support de données et chargeable dans la mémoire d'un ordinateur, le programme comprenant des portions de code pour l'exécution des étapes du procédé d'identification des fonctions d'un noyau d'un système d'exploitation d'une machine virtuelle selon l'une quelconque des revendications 1 à 6, lorsque le programme est exécuté sur ledit ordinateur. 35 3051934 39\n<CLM>\1\tSupport de données dans lequel est enregistré le programme selon la revendication 12.