Mettre à jour 'ReadMe.md'
This commit is contained in:
parent
749e245a51
commit
6abe019eca
1 changed files with 106 additions and 0 deletions
106
ReadMe.md
106
ReadMe.md
|
@ -0,0 +1,106 @@
|
|||
# Processeur sécurisé
|
||||
|
||||
|
||||
|
||||
Ce dépot regroupe les différents composants permettant d'exécuter un programme écrit dans un langage dérivé du C sur un processeur sécurisé contre le détournement du flot d'exécution par buffer overflow.
|
||||
|
||||
La chaine est divisée en 5 étapes, 3 obligatoires et 2 facultatives.
|
||||
|
||||
- Compiler le code avec le module *Compilateur*, cela va généré un premier code assembleur sans registres.
|
||||
- Facultatif : Interpreter ce code assembleur avec le module *Interpreteur* pour vérifier le comportement du programme.
|
||||
- Intégrer les registres dans le code assembleur avec le module *CrossAssembleur*.
|
||||
- Facultatif : Interpreter ce code assembleur avec le module *InterpreteurRegistres* pour vérifier le comportement du programme.
|
||||
- Exécuter le code sur le processeur sur un FPGA
|
||||
|
||||
### Technologies :
|
||||
- Compilateur : Lex Yacc (flex et bison), C (gcc), Makefile (make)
|
||||
- Interpreteur : Lex Yacc (flex et bison), C (gcc), Makefile (make)
|
||||
- CrossAssembleur : Lex Yacc (flex et bison), C (gcc), Makefile (make)
|
||||
- CompilateurRegistre : Lex Yacc (flex et bison), C (gcc), Makefile (make)
|
||||
- Processeur : Digilent FPGA Basys3 Artix7, Vivado (2016.4)
|
||||
|
||||
### Mots clés :
|
||||
Sécurité, BufferOverflow, BOF, Processeur, Compilateur, FPGA.
|
||||
|
||||
# Utilisation
|
||||
|
||||
Pour cloner le GIT **ET** les sous modules, veuillez utiliser la commande :
|
||||
``` bash
|
||||
git clone --recurse-submodules https://git.etud.insa-toulouse.fr/pfaure/PSI.git
|
||||
```
|
||||
|
||||
Si vous avez cloné le dépot de manière "classique", vous pouvez utiliser les commandes suivantes afin de télécharger les sous-modules :
|
||||
``` bash
|
||||
git submodule init
|
||||
git submodule update
|
||||
```
|
||||
|
||||
Un Makefile a été inclus afin de simplifier la chaine de compilation et d'exécution.
|
||||
|
||||
## Versions
|
||||
Attention, il existe deux versions du projet, une avec la sécurité implémentée, et une sans. Soyez vigilent a avoir les modules dans la même version. Pour compilateur, il faut juste changer la valeur du *#define SECURISED ()*. Pour les interpreteurs et le processeur il s'agit de branches différentes.
|
||||
|
||||
### Compilation du projet
|
||||
|
||||
#### Compilation de tout le projet :
|
||||
``` bash
|
||||
make compile QUOI="all"
|
||||
```
|
||||
|
||||
#### Compilation du Compilateur uniquement :
|
||||
``` bash
|
||||
make compile QUOI="compilateur"
|
||||
```
|
||||
|
||||
#### Compilation de l'Interpreteur uniquement :
|
||||
``` bash
|
||||
make compile QUOI="interpreteur"
|
||||
```
|
||||
|
||||
#### Compilation du CrossAssembleur uniquement :
|
||||
``` bash
|
||||
make compile QUOI="cross_assembleur"
|
||||
```
|
||||
|
||||
#### Compilation de l'InterpreteurRegistres uniquement :
|
||||
``` bash
|
||||
make compile QUOI="interpreteur_registres"
|
||||
```
|
||||
|
||||
### Exploitation du projet
|
||||
|
||||
#### Réalisation de toute la chaine :
|
||||
``` bash
|
||||
make exec QUOI="all" SOURCE="prefixe_file"
|
||||
```
|
||||
Ceci va compiler le fichier **prefixe_file.c**, générer les fichiers assembleur et binaire, et modifier le code du processeur pour charger le programme. (Ne réalise pas les étapes facultatives)
|
||||
|
||||
#### Compilation d'un fichier :
|
||||
``` bash
|
||||
make exec QUOI="compile" SOURCE="prefixe_file"
|
||||
```
|
||||
Ceci va compiler le fichier **prefixe_file.c** et générer le fichier assembleur orienté mémoire **prefixe_file.memasm**
|
||||
|
||||
#### Interpretation d'un assembleur mémoire :
|
||||
``` bash
|
||||
make exec QUOI="interprete" SOURCE="prefixe_file"
|
||||
```
|
||||
Ceci va interpreter le fichier **prefixe_file.memasm**
|
||||
|
||||
#### CrossAssemblage d'un assembleur mémoire :
|
||||
``` bash
|
||||
make exec QUOI="cross_assemble" SOURCE="prefixe_file"
|
||||
```
|
||||
Ceci va transformer le fichier **prefixe_file.memasm** en fichier **prefixe_file.regasm** afin d'intégrer les registres
|
||||
|
||||
#### Interpretation d'un assembleur registre :
|
||||
``` bash
|
||||
make exec QUOI="interprete_registres" SOURCE="prefixe_file"
|
||||
```
|
||||
Ceci va interpreter le fichier **prefixe_file.regasm**
|
||||
|
||||
#### Charger le programme dans le code VHDL du processeur :
|
||||
``` bash
|
||||
make exec QUOI="load" SOURCE="prefixe_file"
|
||||
```
|
||||
Ceci va injecter le code du fichier **prefixe_file.bin** dans la mémoire d'instruction
|
Loading…
Reference in a new issue