Browse Source

Mettre à jour 'ReadMe.md'

Paul Faure 2 years ago
parent
commit
6abe019eca
1 changed files with 106 additions and 0 deletions
  1. 106
    0
      ReadMe.md

+ 106
- 0
ReadMe.md View File

@@ -0,0 +1,106 @@
1
+# Processeur sécurisé 
2
+
3
+
4
+
5
+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.
6
+
7
+La chaine est divisée en 5 étapes, 3 obligatoires et 2 facultatives.
8
+
9
+- Compiler le code avec le module *Compilateur*, cela va généré un premier code assembleur sans registres.
10
+- Facultatif : Interpreter ce code assembleur avec le module *Interpreteur* pour vérifier le comportement du programme.
11
+- Intégrer les registres dans le code assembleur avec le module *CrossAssembleur*.
12
+- Facultatif : Interpreter ce code assembleur avec le module *InterpreteurRegistres* pour vérifier le comportement du programme.
13
+- Exécuter le code sur le processeur sur un FPGA
14
+
15
+### Technologies : 
16
+    - Compilateur           : Lex Yacc (flex et bison), C (gcc), Makefile (make)
17
+    - Interpreteur          : Lex Yacc (flex et bison), C (gcc), Makefile (make)
18
+    - CrossAssembleur       : Lex Yacc (flex et bison), C (gcc), Makefile (make)
19
+    - CompilateurRegistre   : Lex Yacc (flex et bison), C (gcc), Makefile (make)
20
+    - Processeur            : Digilent FPGA Basys3 Artix7, Vivado (2016.4)
21
+
22
+### Mots clés : 
23
+    Sécurité, BufferOverflow, BOF, Processeur, Compilateur, FPGA.
24
+
25
+# Utilisation 
26
+
27
+Pour cloner le GIT **ET** les sous modules, veuillez utiliser la commande :
28
+``` bash
29
+git clone --recurse-submodules https://git.etud.insa-toulouse.fr/pfaure/PSI.git
30
+```
31
+
32
+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 :
33
+``` bash
34
+git submodule init
35
+git submodule update
36
+```
37
+
38
+Un Makefile a été inclus afin de simplifier la chaine de compilation et d'exécution. 
39
+
40
+## Versions
41
+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.
42
+
43
+### Compilation du projet
44
+
45
+#### Compilation de tout le projet : 
46
+``` bash
47
+make compile QUOI="all"
48
+```
49
+
50
+#### Compilation du Compilateur uniquement : 
51
+``` bash
52
+make compile QUOI="compilateur"
53
+```
54
+
55
+#### Compilation de l'Interpreteur uniquement : 
56
+``` bash
57
+make compile QUOI="interpreteur"
58
+```
59
+
60
+#### Compilation du CrossAssembleur uniquement : 
61
+``` bash
62
+make compile QUOI="cross_assembleur"
63
+```
64
+
65
+#### Compilation de l'InterpreteurRegistres uniquement : 
66
+``` bash
67
+make compile QUOI="interpreteur_registres"
68
+```
69
+
70
+### Exploitation du projet
71
+
72
+#### Réalisation de toute la chaine : 
73
+``` bash
74
+make exec QUOI="all" SOURCE="prefixe_file"
75
+```
76
+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)
77
+
78
+#### Compilation d'un fichier : 
79
+``` bash
80
+make exec QUOI="compile" SOURCE="prefixe_file"
81
+```
82
+Ceci va compiler le fichier **prefixe_file.c** et générer le fichier assembleur orienté mémoire **prefixe_file.memasm**
83
+
84
+#### Interpretation d'un assembleur mémoire : 
85
+``` bash
86
+make exec QUOI="interprete" SOURCE="prefixe_file"
87
+```
88
+Ceci va interpreter le fichier **prefixe_file.memasm**
89
+
90
+#### CrossAssemblage d'un assembleur mémoire : 
91
+``` bash
92
+make exec QUOI="cross_assemble" SOURCE="prefixe_file"
93
+```
94
+Ceci va transformer le fichier **prefixe_file.memasm** en fichier **prefixe_file.regasm** afin d'intégrer les registres
95
+
96
+#### Interpretation d'un assembleur registre : 
97
+``` bash
98
+make exec QUOI="interprete_registres" SOURCE="prefixe_file"
99
+```
100
+Ceci va interpreter le fichier **prefixe_file.regasm**
101
+
102
+#### Charger le programme dans le code VHDL du processeur : 
103
+``` bash
104
+make exec QUOI="load" SOURCE="prefixe_file"
105
+```
106
+Ceci va injecter le code du fichier **prefixe_file.bin** dans la mémoire d'instruction

Loading…
Cancel
Save