Cadeaux de Noël aux reversers

Spécialité(s)


Résumé

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...

Cet article est réservé aux abonnés. Il vous reste 92% à découvrir.
S'abonner à Connect
  • 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
Je m'abonne


Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous