La fin d’année 2017 a été riche en mise à disposition de logiciels libres pour les fans de rétroconception. Dans cet article, nous allons voir deux de ces outils : cutter, une interface graphique au programme radare2 et RetDec, un décompilateur basé sur LLVM. Cet article présentera ces deux outils et leur utilisation avec un exemple dont nous possèderons le code source afin de plus facilement visualiser leur fonctionnement.
1. Présentation du cas d’étude
Pour cet article, nous allons travailler sur la base du code source suivant :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char data[]="\x97\x8b\x8b\x8f\xc5\xd0\xd0\x88\x88\x88\xd1\x92\x96\x8c\x9c\x92\x9e\x98\xd1\x9c\x90\x92\xf5";
struct CC
{
char URL[50];
int key;
char Decoded[50];
};
void decode(struct CC* cc_);
int main()
{
struct CC cc_;
strncpy(cc_.URL, data, sizeof(cc_.URL));
cc_.key=0xFF;
printf("Demarrage...\n");
printf("CC: ");
decode(&cc_);
printf("%s",cc_.Decoded);
return 0;
}
void decode(struct CC* cc_){
int i;
int length = strlen(cc_->URL);
for(i=0;i<length;i++)
{
cc_->Decoded[i] = cc_->URL[i] ^ cc_->key;
}
cc_->Decoded[i] = 0x00;
}
Le but de ce code est de décoder l’URL stockée dans la variable data. Le décodage se fait par l’opération XOR avec...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première