0% ont trouvé ce document utile (0 vote)
34 vues4 pages

Analyse de Shellcode : Protection Logicielle

Le document décrit un TP sur l'analyse de shellcode, axé sur la protection logicielle par validation de licence. Il explique comment utiliser OllyDbg pour retrouver une clé de licence en clair dans le code, puis comment neutraliser la vérification de cette clé en remplaçant une instruction de saut conditionnel par des instructions NOP. Enfin, il aborde les réflexions sur l'efficacité de cette protection et propose des pistes d'amélioration.

Transféré par

chaimaaelgadaoui
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
34 vues4 pages

Analyse de Shellcode : Protection Logicielle

Le document décrit un TP sur l'analyse de shellcode, axé sur la protection logicielle par validation de licence. Il explique comment utiliser OllyDbg pour retrouver une clé de licence en clair dans le code, puis comment neutraliser la vérification de cette clé en remplaçant une instruction de saut conditionnel par des instructions NOP. Enfin, il aborde les réflexions sur l'efficacité de cette protection et propose des pistes d'amélioration.

Transféré par

chaimaaelgadaoui
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

TP Analyse de Shellcode - Partie 1 : Protection logicielle

Partie 1 : Protection logicielle


Etape A :
Un programmeur a décidé de protéger son application à l'aide d'une
validation de type License. Son application est disponible dans le
répertoire exe1.
1. A l'aide de l'outil OllyDbg, retrouvez le numéro de license en
consultant simplement le code assembleur de l'application.
Ouverture de l'exécutable dans OllyDbg
 Lancer OllyDbg

 File → Open → Sélectionner [Link]

 Le désassembleur affiche automatiquement le code à partir du

point d'entrée (Entry Point)

Recherche des chaînes référencées


 Clic droit dans la fenêtre du code assembleur

 Sélectionner Search for → All referenced text strings

 Une nouvelle fenêtre s'ouvre listant toutes les chaînes de

caractères utilisées dans le programme


2. Que peut-on dire de ce type de vérification ?
Etape B :
Notre programmeur ne se décourage pas. Il a compris que laisser la clé
de license en clair dans le code réduit la sécurité de son application. Il
a donc décidé de la protéger d'une autre manière. Son application est
disponible dans le répertoire exe2.
1. Modifiez l'application pour que son programme ne vérifie plus la
clé de license (L'instruction nop, qui n'effectue aucune opération,
pourra vous aider)
À l'aide d'OllyDbg, j'ai analysé le code assembleur de l'application et
identifié la séquence critique de vérification :

 Compréhension du mécanisme
L'application effectue les opérations suivantes :
1. Récupération de l'entrée utilisateur via GetWindowTextA
2. Traitement de cette entrée par une fonction à l'adresse
0x004011E9 (probablement une fonction de hachage)
3. Comparaison du résultat (stocké dans EAX) avec une valeur de
référence (stockée dans EBX, chargée depuis 0x40202A)
4. Saut conditionnel : si les valeurs sont différentes (JNZ), le
programme affiche "Mauvais mot de passe"
Technique de Bypass Appliquée : Neutralisation par NOP
2.1 Principe
L'instruction NOP (No Operation, code opcode 0x90) est une
instruction qui ne réalise aucune opération. Le processeur l'exécute
simplement et passe à l'instruction suivante.
En remplaçant l'instruction de saut conditionnel JNZ par des NOP, on
supprime la bifurcation vers le message d'erreur, forçant ainsi le
programme à continuer son exécution normale vers le message de
succès.
2.2 Procédure de modification
Étape 1 : Localisation de l'instruction cible
 Adresse : 0x004011BD

 Instruction originale : JNZ SHORT exe2.004011D4

Étape 2 : Modification dans OllyDbg


1. Sélection de la ligne 004011BD
2. Pression de la touche Espace pour ouvrir l'éditeur d'assembleur
3. Remplacement de l'instruction JNZ SHORT exe2.004011D4 par
NOP
4. Répétition de l'opération pour obtenir 2 instructions NOP
consécutives (2 octets)
5. Validation de la modification

Étape 3 : Sauvegarde du binaire modifié


1. Clic droit dans la fenêtre de code → Copy to executable → All
modifications
2. Dans la nouvelle fenêtre : Clic droit → Save file
3. Enregistrement sous le nom exe2_pa.exe
4. Tests et Validation

2. Comment feriez-vous pour retrouver la clé ?


3. Que penser de cette protection ? Comment l'améliorer ?

Vous aimerez peut-être aussi