From de7e4a2bd3fc67225cd07216bbfb3565a3301b7a Mon Sep 17 00:00:00 2001 From: pfaure Date: Fri, 12 Mar 2021 23:19:56 +0100 Subject: [PATCH 1/2] Version OK. TAF : Revoir la recherche de l'adresse dans la pile et les cast, faire le changement de clefs --- lib/rondoudouPatch.c | 107 +++++++++++++++++++++++++++++++++++++++++ lib/rondoudouPatch.h | 7 +++ lib/test | Bin 0 -> 13072 bytes lib/test_chiffrement.c | 36 ++++++++++++++ 4 files changed, 150 insertions(+) create mode 100644 lib/rondoudouPatch.c create mode 100644 lib/rondoudouPatch.h create mode 100755 lib/test create mode 100644 lib/test_chiffrement.c diff --git a/lib/rondoudouPatch.c b/lib/rondoudouPatch.c new file mode 100644 index 0000000..d1ebb4d --- /dev/null +++ b/lib/rondoudouPatch.c @@ -0,0 +1,107 @@ +#include +#include +#include +#include "rondoudouPatch.h" + +//WARNING SUR TOUT LES TYPES !!! + +struct t_pile_addrs { + int index; + void ** tab[TAB_SIZE]; + struct t_pile_addrs * next; +}; + +uintptr_t rondoudou_patch_key; + +struct t_pile_addrs * pile_addrs; + +void rondoudou_patch_init(void) { + pile_addrs = (struct t_pile_addrs *)malloc(sizeof(struct t_pile_addrs)); + pile_addrs->index = -1; + pile_addrs->next = NULL; + + rondoudou_patch_key = 12345; +} + +int print_pile_aux(int profondeur, struct t_pile_addrs * pile) { + if (pile != NULL) { + int prof_max = print_pile_aux(profondeur + 1, pile->next); + int i; + int max; + if (pile->index != TAB_SIZE) { + max = pile->index + 1; + } else { + max = TAB_SIZE; + } + for (i = 0; i %p\n", (prof_max - profondeur)*TAB_SIZE + i, pile->tab[i]); + } + return prof_max; + } else { + return profondeur - 1; + } +} + +void print_pile(void) { + print_pile_aux(0, pile_addrs); +} + +/* + * + * ATTENTION !!!!! FONCTION ULTRA CHELOUE + * + */ +void ** find_address_in_stack(void * addr) { + void ** ret = 0; + int trouve = 0; + int i; + for (i=0; i<1000; i++) { + if ((*(&ret + i)) == addr) { + if (trouve) { + ret = (void **)(&ret + i); + break; + } + trouve = 1; + } + } + + return ret; +} + +void cipher(void * address) { + void ** addr = find_address_in_stack(address); + if (addr != 0) { + *addr = (void *)((uintptr_t)*addr ^ (uintptr_t)rondoudou_patch_key); + if ((pile_addrs->index) == (TAB_SIZE - 1)) { + struct t_pile_addrs * aux = (struct t_pile_addrs *)malloc(sizeof(struct t_pile_addrs)); + aux->index = 0; + aux->next = pile_addrs; + pile_addrs = aux; + } else { + pile_addrs->index++; + } + pile_addrs->tab[pile_addrs->index] = addr; + printf("APPEL A CIPHER\n"); + print_pile(); + } +} + +void decipher(void) { + if (pile_addrs->index == -1) { + if (pile_addrs->next == NULL) { + printf("Ouille ouille ouille qu'est ce que j'ai mal aux nouilles ! \n"); + exit(2); + } else { + struct t_pile_addrs * aux = pile_addrs; + pile_addrs = pile_addrs->next; + free(aux); + } + } + + *((pile_addrs->tab)[pile_addrs->index]) = (void *)((uintptr_t)(*((pile_addrs->tab)[pile_addrs->index])) ^ (uintptr_t)rondoudou_patch_key); + pile_addrs->index--; + printf("APPEL A DECIPHER\n"); + print_pile(); +} + +void changekey(void); diff --git a/lib/rondoudouPatch.h b/lib/rondoudouPatch.h new file mode 100644 index 0000000..f9abbde --- /dev/null +++ b/lib/rondoudouPatch.h @@ -0,0 +1,7 @@ +#define TAB_SIZE 3 + +void cipher(void * addr); +void decipher(void); +void changekey(void); +void rondoudou_patch_init(void); + diff --git a/lib/test b/lib/test new file mode 100755 index 0000000000000000000000000000000000000000..153de7d3744bbdc6bb8f29edca65ff822acebb1f GIT binary patch literal 13072 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 literal 0 HcmV?d00001 diff --git a/lib/test_chiffrement.c b/lib/test_chiffrement.c new file mode 100644 index 0000000..f6c49bf --- /dev/null +++ b/lib/test_chiffrement.c @@ -0,0 +1,36 @@ +#include "rondoudouPatch.h" +#include + +void f() { + cipher(__builtin_return_address(0)); + printf("Dans f()\n"); + decipher(); +} + +void g() { + cipher(__builtin_return_address(0)); + printf("Dans g()\n"); + f(); + decipher(); +} + +void h() { + cipher(__builtin_return_address(0)); + printf("Dans h()\n"); + g(); + decipher(); +} + +void i() { + cipher(__builtin_return_address(0)); + printf("Dans i()\n"); + h(); + decipher(); +} + +int main() { + rondoudou_patch_init(); + cipher(__builtin_return_address(0)); + i(); + decipher(); +} From c5103eda57285881e4ac1fc39b19eefd84f770ca Mon Sep 17 00:00:00 2001 From: Yohan Simard Date: Sat, 13 Mar 2021 11:23:02 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Suppression=20de=20l'ex=C3=A9cutable=20et?= =?UTF-8?q?=20ajout=20d'un=20makefile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + lib/Makefile | 2 ++ lib/test | Bin 13072 -> 0 bytes 3 files changed, 3 insertions(+) create mode 100644 lib/Makefile delete mode 100755 lib/test diff --git a/.gitignore b/.gitignore index 295f9e6..03fdb9b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ serveur client attaque +lib/test \ No newline at end of file diff --git a/lib/Makefile b/lib/Makefile new file mode 100644 index 0000000..000d6f2 --- /dev/null +++ b/lib/Makefile @@ -0,0 +1,2 @@ +test: test_chiffrement.c rondoudouPatch.c rondoudouPatch.h + gcc -Wall -g test_chiffrement.c rondoudouPatch.c -o test \ No newline at end of file diff --git a/lib/test b/lib/test deleted file mode 100755 index 153de7d3744bbdc6bb8f29edca65ff822acebb1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13072 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