FR3047585A1 - Procede et dispositif de surveillance de l'execution d'un code programme - Google Patents
Procede et dispositif de surveillance de l'execution d'un code programme Download PDFInfo
- Publication number
- FR3047585A1 FR3047585A1 FR1651001A FR1651001A FR3047585A1 FR 3047585 A1 FR3047585 A1 FR 3047585A1 FR 1651001 A FR1651001 A FR 1651001A FR 1651001 A FR1651001 A FR 1651001A FR 3047585 A1 FR3047585 A1 FR 3047585A1
- Authority
- FR
- France
- Prior art keywords
- instruction
- monitoring
- program code
- memory location
- monitored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 9
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 238000000605 extraction Methods 0.000 claims description 7
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000033764 rhythmic process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
Dans ce procédé de surveillance de l'exécution d'un code programme par un code programme de surveillance, on stocke dans une même mémoire programme (MEM) des instructions (3) du code programme et des instructions (4) de surveillance du code programme, on extrait simultanément de la mémoire programme (MEM) chaque instruction à surveiller (3) et les instructions de surveillance associées (4), et on exécute l'instruction à surveiller et les instructions de surveillance.
Description
Procédé et dispositif de surveillance de l’execution d’un code programme.
Des modes de mise en œuvre et de réalisation de l’invention concernent la surveillance de l’exécution d’un code programme par un programme de surveillance, en particulier un programme de surveillance implémenté dans un processeur distinct du processeur exécutant le code programme à surveiller.
Ils s’appliquent tout particulièrement à la surveillance de l’exécution des instructions de branchement, comme par exemple les instructions de saut (« Jump », selon la dénomination anglo-saxonne).
Une instruction de branchement est une instruction qui lors du de l’exécution d’un code programme stocké dans une mémoire, fait passer la lecture du programme d’une première instruction à une deuxième instruction située dans un emplacement mémoire dont l’adresse ne suit pas directement l’adresse de la première instruction.
Lors du déroulement du code programme, des erreurs d’exécution peuvent survenir, soit par le fait d’une erreur de stockage du code programme dans la mémoire ou d’une mauvaise lecture d’une des instructions du code programme, soit par le fait d’injection d’erreurs par un attaquant extérieur.
On connaît des moyens de surveillance de l’exécution d’un code programme, comme par exemple ceux décrits dans la demande de brevet internationale publiée sous le numéro « 2008 075166 Al » permettant de vérifier la bonne exécution des instructions de saut, et de générer un signal d’erreur dans le cas contraire.
Cependant, dans cette demande, l’exécution des instructions et la surveillance de leur exécution sont contrôlées par la même unité centrale de traitement, ce qui implique une modification du logiciel de l’unité centrale afin d’y intégrer le code de surveillance. De plus, il est préférable que l’unité centrale de traitement ne se surveille pas elle-même.
Ainsi, selon un mode de mise en œuvre, il est proposé un dispositif et un procédé de surveillance de l’exécution d’un code programme dans lequel le code de surveillance peut être exécuté par une unité de surveillance distincte de l’unité de traitement et l’exécution du code de surveillance ne nécessite pas une gestion spécifique de l’accès à la mémoire stockant le code programme à surveiller.
Selon un aspect, il est proposé un procédé de surveillance de l’exécution d’un code programme par un code programme de surveillance dans lequel - on stocke le code programme dans une mémoire comprenant des emplacements mémoires capables chacun de stocker au moins un mot d’instruction du code programme et ayant une capacité de stockage supérieure à la taille des mots d’instruction du code programme, - pour chaque emplacement mémoire comprenant au moins une instruction du code programme à surveiller, on stocke dans la partie libre de l’emplacement mémoire contenant ladite au moins une instruction à surveiller au moins une partie d’une instruction de surveillance du code programme de surveillance, - on extrait simultanément de la mémoire programme ladite au moins une instruction à surveiller et ladite au moins une partie de ladite instruction de surveillance, et - on exécute ladite au moins une instruction à surveiller et ladite instruction de surveillance.
Ainsi, le code programme à surveiller et le code de surveillance sont stockés dans la même mémoire, avec les instructions de surveillance contenues au moins en partie dans les même mots mémoires que ceux contenant les instructions à surveiller. On obtient donc une extraction synchronisée des instructions à surveiller et des instructions de surveillance et il devient alors par exemple possible de faire exécuter le code programme et le code de surveillance par deux unités de traitement différentes, sans recourir à un arbitrage spécifique de l’accès à la mémoire. Cela permet d’une part de ne pas avoir à modifier le logiciel d’une unique unité de traitement, et d’autre part d’avoir une exécution synchrone du code programme et du code de surveillance. L’instruction de surveillance peut avoir une taille supérieure à la taille de la partie libre. Dans ce cas, on peut stocker une première partie de l’instruction de surveillance dans la partie libre de l’emplacement mémoire contenant ladite au moins une instruction à surveiller, et stocker une deuxième partie de l’instruction de surveillance dans la partie libre d’au moins un emplacement mémoire précédant l’emplacement mémoire contenant ladite au moins une instruction de code programme à surveiller.
Selon un mode de mise en œuvre, l’emplacement mémoire contenant ladite au moins une instruction à surveiller peut comporter plusieurs mots d’instruction et on peut stocker dans la partie libre d’au moins un emplacement mémoire précédant l’emplacement mémoire contenant ladite au moins une instruction de code programme à surveiller, une information désignant ladite au moins une instruction à laquelle l’instruction de surveillance se rapporte.
On peut stocker dans un emplacement mémoire situé à une adresse ultérieure à celle de l’emplacement mémoire comprenant ladite au moins une instruction de code programme à surveiller, au moins une partie d’une autre instruction du code de surveillance, l’instruction à surveiller étant par exemple une instruction de branchement pointant vers ledit emplacement mémoire suivant.
Selon un autre aspect, il est proposé un dispositif de surveillance d’un code programme par un code programme de surveillance.
Selon un caractéristique générale de cet aspect le dispositif peut comprendre une mémoire comprenant des emplacements mémoires capables chacun de stocker au moins un mot d’instruction du code programme et ayant une capacité de stockage supérieure à la taille des mots d’instruction du code programme, chaque emplacement mémoire comportant une partie libre capable de stocker au moins une partie d’une instruction de surveillance du code programme de surveillance, le dispositif pouvant comporter des moyens d’extraction simultanée de ladite au moins une instruction à surveiller et de ladite au moins une partie de ladite instruction de surveillance, et des moyens d’exécutions simultanées de ladite instruction à surveiller et de ladite au moins une partie de l’instruction de surveillance. L’instruction de surveillance peut avoir une taille supérieure à la taille de la partie libre, et ladite partie libre de l’emplacement mémoire contenant ladite au moins une instruction à surveiller peut être capable de recevoir une première partie de l’instruction de surveillance, et la partie libre d’un emplacement mémoire précédant l’emplacement mémoire contenant ladite au moins une instruction de code programme à surveiller peut être capable de contenir une première partie de l’instruction de surveillance,
Selon un mode de réalisation, l’emplacement mémoire contenant ladite au moins une instruction à surveiller peut comporter plusieurs mots d’instruction et la partie libre d’au moins un emplacement mémoire précédant l’emplacement mémoire contenant ladite au moins une instruction de code programme à surveiller comprend une information désignant alors ladite au moins une instruction à laquelle l’instruction de surveillance se rapporte.
Un emplacement mémoire situé à une adresse ultérieure à celle de l’emplacement mémoire comprenant ladite au moins une instruction de code programme à surveiller, peut être capable de contenir au moins une partie d’une autre instruction du code de surveillance, l’instruction à surveiller étant une instruction de branchement pointant vers ledit emplacement mémoire suivant. D’autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de mode de mise en œuvre et de réalisation, nullement limitatifs, et des dessins annexés sur lesquels : - Les figures 1 à 5 illustrent des modes de mise en œuvre et de réalisation de l’invention
La figure 1 illustre un système de traitement informatique comportant une mémoire programme MEM, une unité centrale de traitement CPU, par exemple un processeur, une unité de surveillance AM, par exemple un autre processeur, et un compilateur CPL. L’unité de surveillance AM comprend dans cet exemple deux registres RI et R2, un compteur CPT apte à être initialisé à une valeur T et à se décrémenter au rythme d’un signal d’horloge, et un comparateur CMP configuré pour comparer les contenus des deux registres RI et R2 à l’expiration de la durée T (lorsque la valeur de compteur atteint 0). Cette durée T dépend notamment des architectures de pipelines des différents processeurs et est supérieure à la durée nécessaire au processeur CPU pour exécuter une instruction extraite de la mémoire MEM.
La mémoire MEM est couplée à l’unité centrale de traitement CPU et à l’unité de surveillance AM par l’intermédiaire d’un BUS de donnée 1. Par exemple, le BUS 1 peut être un BUS parallèle de trente-deux bits dont une première portion 11, par exemple de vingt-huit bits, est couplée à l’unité de traitement CPU, et une deuxième portion 12, ici de quatre bits, est couplée à l’unité de surveillance AM.
Classiquement, lors de la compilation d’un code source, le compilateur analyse la syntaxe du code source du programme et définit un code intermédiaire dans lequel il définit des instructions à surveiller, par exemple des instructions de saut d’adresses conditionnel (par exemple l’instruction « JRZ » en langage assembleur) ou absolu (par exemple l’instruction « JMP » en langage assembleur), sans que ces exemples ne soient limitatifs. Ensuite, le code intermédiaire est converti en code programme exécutable.
Le compilateur définit en parallèle les instructions du code de surveillance.
Ici, pour chaque définition d’une instruction de saut d’adresses, le compilateur définit des instructions de surveillance 4 de l’exécution du code programme.
Le compilateur CPL est configuré pour associer à chaque instruction de code programme 3 à surveiller, au moins une partie d’une instruction de surveillance 4, et pour regrouper l’instruction à surveiller 3 et ladite partie de l’instruction de surveillance 4 dans un mot mémoire MM destiné à être stocké dans un emplacement mémoire 2.
La taille du mot mémoire MM est donc supérieure à la taille d’une instruction de code programme à surveiller.
Comme il sera vu plus en détail ci-après, pour chaque instruction à surveiller, par exemple une instruction de saut d’adresse conditionnel de type « JMP » ou absolu de type « JRZ », le compilateur peut associer une instruction de type « WRITE RI », correspondant à l’écriture d’une valeur de référence dans le registre RI. Dans le cas d’une instruction de saut d’adresses conditionnel, le compilateur CPL définit alors à la suite de cette instruction une instruction de type CLEAR RI correspondant à la réinitialisation du registre RI, dans un mot mémoire destiné à être stocké dans un emplacement mémoire suivant directement l’emplacement mémoire comprenant l’instruction à surveiller.
Si cette instruction possède une taille trop importante, le compilateur peut la séparer en deux parties, et placer l’une des parties dans un autre mot mémoire destiné à être stocké par exemple dans l’emplacement mémoire précédent.
De même, le compilateur connaissant l’adresse de l’emplacement mémoire pointé par l’instruction de saut d’adresse, définit pour l’adresse pointée une autre instruction de surveillance de type WRITE R2 correspondant à l’écriture d’une valeur de référence dans le registre R2, qu’il va placer dans le mot mémoire destiné à être stocké à l’adresse pointée par l’instruction de saut.
Le code programme et le code de surveillance sont ensuite stockés dans les emplacements mémoire de la mémoire programme MEM.
Chaque emplacement mémoire à donc une taille supérieure à la taille d’une instruction de surveillance.
Dans la suite de la description, il sera décrit plus en détail un exemple de déroulement du programme de surveillance.
La mémoire MEM, comme illustré sur la figure 2, comporte des emplacements mémoire 2, chacun configuré pour stocker un mot mémoire comportant au moins un mot d’instruction 3 d’un code programme exécutable.
Ici, les emplacements mémoires ont une taille de trente-deux bits. Les mots d’instruction 3 ont une taille de vingt-huit bits, laissant ainsi une partie libre PL de quatre bits dans chaque emplacement mémoire.
Cette partie libre PL est utilisée pour stocker, comme décrit ci-avant, des instructions de surveillance 4 associées à des instructions à surveiller.
Dans cet exemple, un premier emplacement mémoire 21 comprend un mot mémoire composé d’un premier mot d’instruction 31, correspondant à une instruction de saut d’adresses conditionnel, et d’une première instruction de surveillance 41, se rapportant au premier mot d’instruction 31.
La première instruction de surveillance 41 correspond ici à une écriture d’une valeur de référence dans le registre RI, par exemple l’écriture de la valeur un. L’instruction de saut d’adresse 31 pointe vers un deuxième emplacement mémoire 22, comportant un mot mémoire composé d’un deuxième mot d’instruction 32, non surveillé, et une deuxième instruction de surveillance 42 se rapportant à l’instruction de saut 31.
La deuxième instruction de surveillance 42 correspond ici à une écriture de la valeur de référence dans le registre R2.
Un troisième emplacement mémoire 23, dont l’adresse suit directement celle du premier emplacement mémoire 21, contient un mot mémoire comportant une troisième instruction de surveillance 43 correspondant à une remise à sa valeur initiale du registre RI et stockée dans la partie libre PL du troisième emplacement mémoire 23.
La figure 3 illustre de manière schématique les différentes étapes d’un mode de mise en œuvre de l’invention. A l’étape El, on compile le code source et le code de surveillance comme décrit ci-avant et on stocke les mots mémoires ainsi obtenus dans les emplacements mémoires 2 de la mémoire MEM.
Ainsi, chaque emplacement mémoire 2 comporte une instruction du code programme, et les emplacements mémoire comportant des mots d’instruction à surveiller comporte en outre chacun une instruction du code de surveillance 4 stockée dans les parties non utilisées (ou parties libres PL) par les mots d’instruction 3 du code programme.
Ici, le stockage est fait de telle sorte qu’à la fin de l’étape El, la mémoire MEM se trouve dans la configuration décrite précédemment et illustrée sur la figure 2.
On extrait ensuite (étape E2) le contenu du premier emplacement mémoire 21.
Il convient de noter que l’étape E2 ne suit pas forcément directement l’étape El. Ainsi, préalablement à l’étape E2, d’autre étapes qui correspondent à une exécution classique du code programme contenu dans d’autres emplacements mémoires 2 ont pu avoir lieu mais ne sont pas décrites à des fins de simplification.
Les vingt-huit premiers bits du premier emplacement mémoire 21, c'est-à-dire l’instruction de saut 31 sont extraits vers l’unité centrale de traitement via la première portion 11 du bus 1, et les quatre bits restants, qui correspondent au premier mot d’instruction de surveillance 41, sont extraits vers l’unité de surveillance via la deuxième portion 12 du bus 1.
Ainsi, les extractions du mot d’instruction 31 du code programme et de la première instruction de surveillance 41 se font simultanément et de façon synchronisée.
De même (étape E3) l’exécution de l’instruction de code programme 31 par l’unité centrale CPU et l’exécution de l’instruction de surveillance 41 par l’unité de surveillance AM sont faites en parallèle.
Lors de l’exécution de la première instruction de surveillance 41, qui correspond ici à l’écriture par l’unité de surveillance AM de la valeur de référence dans le premier registre RI, l’unité de surveillance AM déclenche la décrémentation du compteur CPT.
Lors de l’exécution de l’instruction de saut conditionnel, deux cas de figure peuvent se présenter.
Le premier cas de figure correspond au cas où la condition de saut de l’instruction conditionnel n’est pas vraie. Alors, le saut d’adresses ne se fait pas et l’exécution du programme se poursuit par l’extraction et l’exécution (étape E9) du contenu du troisième emplacement mémoire 23, qui suit directement le premier emplacement mémoire. L’étape E9 comporte également l’exécution de la troisième instruction de surveillance 43, qui correspond à une remise à sa valeur initiale de la valeur du registre RI, par exemple une remise à zéro. L’unité de surveillance stoppe alors la décrémentation du compteur CPT et le réinitialise. L’exécution du code programme se poursuit alors (étape E7) de manière classique.
Le second cas de figure correspond au cas où la condition de saut de l’instruction de saut conditionnel est vraie. Alors, l’exécution du code programme se poursuit au deuxième emplacement mémoire 22. La décrémentation du compteur CPT n’est pas arrêtée par l’unité de surveillance AM. L’étape E4 correspond à l’extraction du contenu du deuxième emplacement mémoire 22. Comme décrit précédemment, les vingt-huit premiers bits correspondant à la deuxième instruction de code programme 32, non surveillée, sont extraits vers l’unité centrale de traitement CPU, et les quatre bits restants correspondant à la deuxième instruction de surveillance 42 sont extraits vers l’unité de surveillance AM, les deux extractions se faisant simultanément. L’unité de traitement CPU exécute la deuxième instruction de code programme 32, et l’unité de surveillance AM exécute la deuxième instruction de surveillance 42. L’unité de surveillance AM écrit donc la valeur de référence dans le deuxième registre R2.
Dans le cas d’un déroulement normal du programme, les deux registres RI et R2 comportent donc la même valeur de référence. A la fin du décompte du compteur CPT, le comparateur CMP de l’unité de surveillance compare (étape E6) les valeurs des deux registres RI et R2. Si les deux valeurs sont égales, cela signifie que l’instruction de saut a bien été exécutée, et le programme continue son exécution (étape E7). Si les valeurs ne sont pas égales, cela signifie que l’exécution ne s’est pas déroulée normalement et l’unité de surveillance génère alors une erreur (étape E8).
Par exemple, lors de l’exécution de l’instruction de saut 31 le programme pourrait sauter à un mauvais emplacement mémoire 24, en raison d’un dysfonctionnement ponctuel ou d’une modification du code programme par un attaquant extérieur. Le mauvais emplacement mémoire 24 ne comportant pas la deuxième instruction de surveillance 42, le deuxième registre R2 ne contiendrait pas la valeur de référence.
Selon un autre mode de réalisation illustré sur la figure 4, la première instruction de surveillance 41 à une taille supérieure à la taille de la partie libre PL du premier emplacement mémoire, par exemple une taille de huit bits. La première instruction de surveillance 41 est donc séparée en deux parties 410 et 411.
La première partie 410 est stockée dans la partie libre d’un cinquième emplacement mémoire 25 précédant le premier emplacement mémoire 25, et la deuxième partie 411 est stockée dans la partie libre PL du premier emplacement mémoire 21.
Il en est de même pour la deuxième instruction de surveillance 42, dont une première partie 420 est stockée dans la partie libre PL d’un sixième emplacement mémoire 26 précédant le deuxième emplacement mémoire 22, et une deuxième partie 421 est stockée dans la partie libre PL du deuxième emplacement mémoire 22.
Selon un autre mode de réalisation illustré sur la figure 5, chaque emplacement mémoire 2 peut recevoir deux mots d’instruction 3 du code programme, par exemple des mots d’instructions de quatorze bits chacun.
Ici, le premier emplacement mémoire 21 comporte en plus du premier mot d’instruction 31 une troisième instruction de code programme 33, ici une instruction quelconque dont l’exécution n’est pas surveillée. Le premier emplacement mémoire 21 comporte également dans sa partie libre PL une quatrième instruction de surveillance 44 se rapportant au premier mot d’instruction 31 de code programme, par exemple une instruction de huit bits.
Le cinquième emplacement mémoire 25 précédant le premier emplacement mémoire 21 comporte un paramètre 441 qui complète la quatrième instruction de surveillance 44. Ici, le paramètre 441 indique à laquelle des deux instructions 31 ou 33 la quatrième instruction de surveillance 44 se rapporte.
Il convient de noter que les modes de mise en œuvre et de réalisation présentés ici ne sont nullement limitatifs. Notamment, il serait tout à fait possible d’envisager que l’unité de surveillance AM soit un module matériel incorporé dans le processeur CPU.
Claims (8)
- REVENDICATIONS1, Procédé de surveillance de l’exécution d’un code programme par un code programme de surveillance, caractérisé en ce que - on stocke le code programme dans une mémoire (MEM) comprenant des emplacements mémoires (2) capables chacun de stocker au moins un mot d’instruction (31) du code programme et ayant une capacité de stockage supérieure à la taille des mots d’instruction (31, 32, 33) du code programme, - pour chaque emplacement mémoire (21, 22, 23) comprenant au moins une instruction du code programme à surveiller on stocke dans la partie libre (PL) de l’emplacement mémoire contenant ladite au moins une instruction (21) à surveiller, au moins une partie d’une instruction de surveillance (41) du code programme de surveillance, - on extrait simultanément de la mémoire programme (MEM) ladite au moins une instruction (31) à surveiller et ladite au moins une partie de ladite instruction de surveillance (41), et - on exécute ladite au moins une instruction à surveiller (31) et ladite instruction de surveillance (41).
- 2. Procédé selon la revendication 1, dans lequel l’instruction de surveillance (41) a une taille supérieure à la taille de la partie libre, et dans lequel on stocke une première partie (410) de l’instruction de surveillance dans la partie libre de l’emplacement mémoire (21) contenant ladite au moins une instruction (21) à surveiller, et on stocke une deuxième partie (411) de l’instruction de surveillance dans la partie libre d’au moins un emplacement mémoire (25) précédant l’emplacement mémoire (21) contenant ladite au moins une instruction (31) de code programme à surveiller.
- 3. Procédé selon la revendication 1, dans lequel l’emplacement mémoire (21) contenant ladite au moins une instruction à surveiller comporte plusieurs mots d’instruction (31, 32) et on stocke dans la partie libre d’au moins un emplacement mémoire (25) précédant l’emplacement mémoire (21) contenant ladite au moins une instruction (31) de code programme à surveiller une information (441) désignant ladite au moins une instruction (31) à laquelle l’instruction de surveillance (44) se rapporte.
- 4. Procédé selon l’une des revendications précédentes, dans lequel on stocke dans un emplacement mémoire (22) situé à une adresse ultérieure à celle de l’emplacement mémoire (21) comprenant ladite au moins une instruction (31) de code programme à surveiller, au moins une partie (420, 421) d’une autre instruction de surveillance (42) du code de surveillance, l’instruction à surveiller (31) étant une instruction de branchement pointant vers ledit emplacement mémoire suivant (22).
- 5. Dispositif de surveillance d’un code programme par un code programme de surveillance, caractérisé en ce qu’il comprend une mémoire (MEM) comprenant des emplacements mémoires (2) capables chacun de stocker au moins un mot d’instruction (31) du code programme et ayant une capacité de stockage supérieure à la taille des mots d’instruction du code programme, chaque emplacement mémoire (2) comportant une partie libre (PL) capable de stocker au moins une partie d’une instruction de surveillance (41) du code programme de surveillance, le dispositif comportant des moyens configurés pour effectuer une extraction simultanée (1) de ladite au moins une instruction (31) à surveiller et de ladite au moins une partie de ladite instruction de surveillance (41), et des moyens (AM, CPU) d’exécution de ladite instruction à surveiller (31) et de ladite au moins une partie de l’instruction de surveillance (41)
- 6. Dispositif selon la revendication 5, dans lequel l’instruction de surveillance (41) a une taille supérieure à la taille de la partie libre (PL), et ladite partie libre (PL) de l’emplacement mémoire (21) contenant ladite au moins une instruction à surveiller (31) est capable de recevoir une première partie (410) de l’instruction de surveillance (41), et la partie libre (PL) d’un emplacement Mémoire (23) précédant l’emplacement mémoire (21) contenant ladite au moins une instruction de code programme (31) à surveiller est capable de contenir une deuxième partie (411) de l’instruction de surveillance (41).
- 7. Dispositif selon la revendication 5, dans lequel l’emplacement mémoire (21) contenant ladite au moins une instruction à surveiller (31) comporte plusieurs mots d’instruction (31, 33) et la partie libre d’au moins un emplacement mémoire (25) précédant remplacement mémoire (21) contenant ladite au moins une instruction (31) de code programme à surveiller comprend une information (441) désignant ladite au moins une instruction (31) à laquelle l’instruction de surveillance (44) se rapporte.
- 8. Dispositif selon l’une des revendications 5 à 7, dans lequel un emplacement mémoire (22) situé à une adresse ultérieure à celle de l’emplacement mémoire (21) comprenant ladite au moins une instruction de code programme (31) à surveiller est capable de contenir au moins une partie (420,421) d’une autre instruction (42) du code de surveillance, l’instruction à surveiller (31) étant une instruction de branchement pointant vers ledit emplacement mémoire suivant (22).
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1651001A FR3047585B1 (fr) | 2016-02-09 | 2016-02-09 | Procede et dispositif de surveillance de l'execution d'un code programme |
CN201610589344.XA CN107045606B (zh) | 2016-02-09 | 2016-07-22 | 用于监测程序代码的执行的方法和设备 |
US15/222,368 US10162728B2 (en) | 2016-02-09 | 2016-07-28 | Method and device for monitoring the execution of a program code |
DE102016116221.3A DE102016116221A1 (de) | 2016-02-09 | 2016-08-31 | Verfahren und Einrichtung zur Überwachung der Ausführung eines Programmcodes |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1651001A FR3047585B1 (fr) | 2016-02-09 | 2016-02-09 | Procede et dispositif de surveillance de l'execution d'un code programme |
FR1651001 | 2016-02-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3047585A1 true FR3047585A1 (fr) | 2017-08-11 |
FR3047585B1 FR3047585B1 (fr) | 2018-03-09 |
Family
ID=56263813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1651001A Expired - Fee Related FR3047585B1 (fr) | 2016-02-09 | 2016-02-09 | Procede et dispositif de surveillance de l'execution d'un code programme |
Country Status (4)
Country | Link |
---|---|
US (1) | US10162728B2 (fr) |
CN (1) | CN107045606B (fr) |
DE (1) | DE102016116221A1 (fr) |
FR (1) | FR3047585B1 (fr) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552959B (zh) * | 2020-06-18 | 2023-08-29 | 南方电网科学研究院有限责任公司 | 一种程序特征序列生成方法和装置 |
US11783026B2 (en) * | 2021-01-05 | 2023-10-10 | Nuvoton Technology Corporation | Processor with in-band fault-injection detection |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003019353A1 (fr) * | 2001-08-23 | 2003-03-06 | Sony Computer Entertainment Inc. | Systeme et procede de traitement d'instructions informatiques |
FR2910144A1 (fr) * | 2006-12-18 | 2008-06-20 | St Microelectronics Sa | Procede et dispositif de detection errones au cours de l'execution d'un programme. |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19836126A1 (de) * | 1998-08-10 | 2000-02-24 | Siemens Ag | Steuergerät |
US8312435B2 (en) * | 2000-12-26 | 2012-11-13 | Identify Software Ltd. (IL) | System and method for conditional tracing of computer programs |
JP2004164554A (ja) * | 2002-09-24 | 2004-06-10 | Hitachi Ltd | プログラム実行監視装置および方法 |
DE102005050767A1 (de) | 2005-10-24 | 2007-04-26 | Robert Bosch Gmbh | Instruktionsspeicherabsicherung durch Control Flow Checking |
JP4048382B1 (ja) * | 2006-09-01 | 2008-02-20 | 富士ゼロックス株式会社 | 情報処理システムおよびプログラム |
TWI389030B (zh) * | 2008-05-07 | 2013-03-11 | Mstar Semiconductor Inc | 於微處理器下載並執行程式碼的方法與電腦程式產品以及包含該微處理器之通訊裝置 |
US9703687B2 (en) * | 2012-09-21 | 2017-07-11 | Hewlett Packard Enterprise Development Lp | Monitor usable with continuous deployment |
EP2881857B8 (fr) * | 2013-12-09 | 2018-09-12 | dSPACE digital signal processing and control engineering GmbH | Procédé de modification du logiciel dans la mémoire d'un appareil de commande électronique |
FR3017226B1 (fr) | 2014-02-03 | 2016-01-29 | St Microelectronics Sa | Procede de securisation d'un code programme, systeme et processeur correspondants |
DE102014117971B4 (de) | 2014-12-05 | 2017-06-01 | Technische Universität Dresden | Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code |
DE102015202049B3 (de) | 2015-02-05 | 2016-08-18 | Infineon Technologies Ag | System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen |
-
2016
- 2016-02-09 FR FR1651001A patent/FR3047585B1/fr not_active Expired - Fee Related
- 2016-07-22 CN CN201610589344.XA patent/CN107045606B/zh active Active
- 2016-07-28 US US15/222,368 patent/US10162728B2/en active Active
- 2016-08-31 DE DE102016116221.3A patent/DE102016116221A1/de active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003019353A1 (fr) * | 2001-08-23 | 2003-03-06 | Sony Computer Entertainment Inc. | Systeme et procede de traitement d'instructions informatiques |
FR2910144A1 (fr) * | 2006-12-18 | 2008-06-20 | St Microelectronics Sa | Procede et dispositif de detection errones au cours de l'execution d'un programme. |
Also Published As
Publication number | Publication date |
---|---|
US10162728B2 (en) | 2018-12-25 |
CN107045606A (zh) | 2017-08-15 |
DE102016116221A1 (de) | 2017-08-10 |
FR3047585B1 (fr) | 2018-03-09 |
CN107045606B (zh) | 2020-04-10 |
US20170228304A1 (en) | 2017-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9921850B2 (en) | Instruction sequence buffer to enhance branch prediction efficiency | |
CN102279738B (zh) | 标识强连通分量的入口和出口的技术 | |
US10318595B2 (en) | Analytics based on pipes programming model | |
US10891120B2 (en) | Performing a compiler optimization pass as a transaction | |
US10067853B2 (en) | Generating a directed graph representing application program execution flow from an execution trace | |
US20200225920A1 (en) | Generating synchronous digital circuits from source code constructs that map to circuit implementations | |
FR3047585A1 (fr) | Procede et dispositif de surveillance de l'execution d'un code programme | |
US10599406B2 (en) | Generating executable files through compiler optimization | |
Saberi et al. | A passive online technique for learning hybrid automata from input/output traces | |
US20120166378A1 (en) | Forward chaining as an orchestration mechanism for analytics | |
Younessi | Object Oriented Defect Management of Software | |
US9563540B2 (en) | Automated defect positioning based on historical data | |
US20160103811A1 (en) | Enhanced documentation validation | |
CN107451050B (zh) | 函数获取方法和装置、服务器 | |
CN102402420B (zh) | 解析可观察集合 | |
Ramirez | A logic-based concurrent object-oriented programming language | |
US20160299786A1 (en) | Code examination by scheduler timeline manipulation | |
Ledgard et al. | Professional Software; Vol. 2: Programming Practice | |
US10664250B2 (en) | Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing | |
FR3008504A1 (fr) | Procede de fourniture d'un code d'instruction et circuit | |
US20200310791A1 (en) | Error checking of notebook code blocks | |
CN110427210A (zh) | 一种storm拓扑任务的快速构建方法及装置 | |
Lafave et al. | Partial evaluation of functional logic programs in rewriting-based languages | |
US20180204130A1 (en) | Message choice model trainer | |
US11144238B1 (en) | Background processing during remote memory access |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20170811 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
ST | Notification of lapse |
Effective date: 20211005 |