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 PDF

Info

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
Application number
FR1651001A
Other languages
English (en)
Other versions
FR3047585B1 (fr
Inventor
Albert Martinez
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Rousset SAS
Original Assignee
STMicroelectronics Rousset SAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Rousset SAS filed Critical STMicroelectronics Rousset SAS
Priority to FR1651001A priority Critical patent/FR3047585B1/fr
Priority to CN201610589344.XA priority patent/CN107045606B/zh
Priority to US15/222,368 priority patent/US10162728B2/en
Priority to DE102016116221.3A priority patent/DE102016116221A1/de
Publication of FR3047585A1 publication Critical patent/FR3047585A1/fr
Application granted granted Critical
Publication of FR3047585B1 publication Critical patent/FR3047585B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/54Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction 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)

  1. REVENDICATIONS
    1, 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. 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. 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. 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. 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. 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. 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. 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).
FR1651001A 2016-02-09 2016-02-09 Procede et dispositif de surveillance de l'execution d'un code programme Expired - Fee Related FR3047585B1 (fr)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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