Salutation !
Avant toutes choses j'aimerai éclaircir quelques points : ce tutoriel sadresse à des débutants en reverse engineering et si vous avez des questions n'hésitez pas j'essaierai d'y répondre au plus vite (- de 24H).
Sur ce bon tuto !
Beaucoup de gens pensent que le Reverse Engineering est quelque chose de difficile, où il faut savoir décrypter parfaitement le langage ASM pour pouvoir ne serait ce que commencer à comprendre les agissements d'un programme Que n'est ni !
Dans ce premier tutoriel (oui il y en aura donc d'autres:p) nous allons faire nos premier pas dans ce monde incroyable qu'est le reverse engineering, ici d'un PE (Portable Exécutable) enfin d'un .exe Windows quoi ! :p
Pour ce tutoriel je n'utiliserai qu'un outil très pratique qu'est un éditeur hexadécimal !
Personnellement j'utilise Ghex (sous Ubuntu) et Frhed sous Windows (ici je serait sous Ghex), tout deux sont à mon sens très bien et surtout gratuit mais libre à vous d'en n'utiliser d'autres.
Vous pouvez dailleurs utiliser un simple éditeur de texte mais bon c'est moi classe. :cool:
Nous prendrons pour exemple ici un utilitaire de test réseau, notre but sera de prouver uniquement à la lecture du fichier avec notre éditeur hexadécimal que notre exécutable utilise bien des fonctions réseaux.
Bon à l'attaque !
Commençons par ouvrir notre fichier avec notre éditeur hexadécimal et la WTF ?!
cour-1.jpg
Ne partez pas tout de suite les choses vont commencer a être intéressantes !
Je vous rassure nous travaillerons uniquement grâce à la partie de droite.
Bon maintenant nous allons devoir commencer nos recherches
Le fichier est un exécutable Windows qui utilise des fonctions réseau jetons un coup dil aux DLL réseaux de Windows : ils sont au nombre de deux (il y en a plus mais se sont les plus utilisé/important) : wsock32.dll et ws2_32.dll.
Très bien cherchons si ces DLLs sont mentionnés ici et magie :
cour-2.jpg
Petite astuce : le nom du dll peut être transcrit en hexadécimal de différentes manière, par exemple : « WS2_32.DLL », « ws2_32.DLL », « ws2_32.dll », « WS2_32.dll » ...
Donc n'abandonner pas vos recherches si vous ne trouvez pas du premier coup, essayez les diverses écritures comme dans les exemples ci-dessus.
Maintenant nous savons que lexécutable charge une librairie dynamique pour utiliser des fonctions réseaux.
Voyons maintenant s'il utilise vraiment ces fonctions
NB : 1) les fonctions des DLLs Windows ont, à quelques exception près les même nom que celle en C/C++. Par exemple la fonction de connection du DLL ws2_32.dll (et aussi de wsock32.dll) est connect(), comme en C/C++.
2) Pour connaître toutes les fonctions stockés dans un DLL il existe un très bon outil gratuit (uniquement pour Windows) qui se nomme Depends.
Nous pouvons ici voir diverses fonctions réseaux chargés comme par exemple : connect(), send(), closesocket() ...
cour-3.jpg
Nous pouvons donc affirmer que cet exécutable utilise bien des fonctions réseaux.
Mission Accomplie !!!
Alors c'était si compliqué que ca ?
HexaHacker
Avant toutes choses j'aimerai éclaircir quelques points : ce tutoriel sadresse à des débutants en reverse engineering et si vous avez des questions n'hésitez pas j'essaierai d'y répondre au plus vite (- de 24H).
Sur ce bon tuto !
Beaucoup de gens pensent que le Reverse Engineering est quelque chose de difficile, où il faut savoir décrypter parfaitement le langage ASM pour pouvoir ne serait ce que commencer à comprendre les agissements d'un programme Que n'est ni !
Dans ce premier tutoriel (oui il y en aura donc d'autres:p) nous allons faire nos premier pas dans ce monde incroyable qu'est le reverse engineering, ici d'un PE (Portable Exécutable) enfin d'un .exe Windows quoi ! :p
Pour ce tutoriel je n'utiliserai qu'un outil très pratique qu'est un éditeur hexadécimal !
Personnellement j'utilise Ghex (sous Ubuntu) et Frhed sous Windows (ici je serait sous Ghex), tout deux sont à mon sens très bien et surtout gratuit mais libre à vous d'en n'utiliser d'autres.
Vous pouvez dailleurs utiliser un simple éditeur de texte mais bon c'est moi classe. :cool:
Nous prendrons pour exemple ici un utilitaire de test réseau, notre but sera de prouver uniquement à la lecture du fichier avec notre éditeur hexadécimal que notre exécutable utilise bien des fonctions réseaux.
Bon à l'attaque !
Commençons par ouvrir notre fichier avec notre éditeur hexadécimal et la WTF ?!
cour-1.jpg
Ne partez pas tout de suite les choses vont commencer a être intéressantes !
Je vous rassure nous travaillerons uniquement grâce à la partie de droite.
Bon maintenant nous allons devoir commencer nos recherches
Le fichier est un exécutable Windows qui utilise des fonctions réseau jetons un coup dil aux DLL réseaux de Windows : ils sont au nombre de deux (il y en a plus mais se sont les plus utilisé/important) : wsock32.dll et ws2_32.dll.
Très bien cherchons si ces DLLs sont mentionnés ici et magie :
cour-2.jpg
Petite astuce : le nom du dll peut être transcrit en hexadécimal de différentes manière, par exemple : « WS2_32.DLL », « ws2_32.DLL », « ws2_32.dll », « WS2_32.dll » ...
Donc n'abandonner pas vos recherches si vous ne trouvez pas du premier coup, essayez les diverses écritures comme dans les exemples ci-dessus.
Maintenant nous savons que lexécutable charge une librairie dynamique pour utiliser des fonctions réseaux.
Voyons maintenant s'il utilise vraiment ces fonctions
NB : 1) les fonctions des DLLs Windows ont, à quelques exception près les même nom que celle en C/C++. Par exemple la fonction de connection du DLL ws2_32.dll (et aussi de wsock32.dll) est connect(), comme en C/C++.
2) Pour connaître toutes les fonctions stockés dans un DLL il existe un très bon outil gratuit (uniquement pour Windows) qui se nomme Depends.
Nous pouvons ici voir diverses fonctions réseaux chargés comme par exemple : connect(), send(), closesocket() ...
cour-3.jpg
Nous pouvons donc affirmer que cet exécutable utilise bien des fonctions réseaux.
Mission Accomplie !!!
Alors c'était si compliqué que ca ?
HexaHacker
from Hackademics : Forum de hacking hackers white hat cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1MXfYCZ
via IFTTT
Aucun commentaire:
Enregistrer un commentaire