Sommaire

Introduction Reverse engineering

1. Présentation

Le reverse engineering (ou rétro-ingénierie en français) consiste à étudier un objet (dans notre cas un malware) pour comprendre son fonctionnement. Étant donné que les malwares ne sont pas diffusés avec leur code source et qu’il n’est pas possible de retrouver les codes des malwares développés en C ou C++, il est nécessaire de faire appel au reverse engineering pour étudier leur fonctionnement interne. Dans notre cas, l’analyste étudiera le code assembleur du malware, fonction après fonction. Ce code assembleur est disponible après désassemblage du binaire.

Le code assembleur n’est pas aussi facile à lire que du code source, en effet c’est un langage bas niveau qui manipule directement les instructions CPU et la mémoire physique.

Nous allons principalement nous intéresser à l’assembleur x86 (32 bits), même si une courte section présentera les principales différences entre le x86 et le x64 (64 bits) d’un point de vue rétro-ingénierie. Aujourd’hui, 80 % des malwares sont compilés en 32 bits, ceci afin de pouvoir impacter le plus de machines possible (les systèmes Windows 64 bits supportent les binaires 32 bits, mais l’inverse n’est pas vrai).

Le reverse engineering peut se traduire par l’analyse du code machine d’un programme pour en comprendre le fonctionnement. ...