WarSoft & FiGHTiNG FOR FUN

NOM DU LOGICIEL : 1+2

TAILLE : 200 Ko

URL : ?

PROTECTION : Numéro de licence

OUTILS : SoftIce et un éditeur héxa

 

 

Pour commencer, on fait le tour du logiciel afin de connaitre ses limites.

C'est rapide, on a un beau NAG :

A partir de là, on sait tout.

On a même un NAG à l'utilisation du soft :

Maintenant, passons à l'enregistrement du soft :

 

<-- Ma clef publique. Elle sert à générer ma licence. Elle est unique à mon PC.

Donc on saisi un numéro de série bidon "12345678901234567890" et avant de cliquer sur le bouton "Ok" on fait CTRL-D afin de mettre un break sur HMEMCPY "BPX HMEMCPY", puis nous retournons au soft avec F5 et on valide.

Sice apparaît très vite et je fais F12 et.... du VB6, je deteste ça. bref, une fois dans MSVBVM60 on trace avec F10 pour éviter les CALL.

et on arrive assez vite dans le code de notre soft :

:0042C8DC FFD3                                call ebx

:0042C8DE 50                                      push eax

:0042C8DF E85CC8FFFF                   call 00429140               On calcul notre sérial et on le met dans EAX

:0042C8E4 8945B4                              mov dword ptr [ebp-4C], eax         Met le contenu de EAX dans EBP-4C

:0042C8E7 8D55BC                             lea edx, dword ptr [ebp-44]

:0042C8EA 8D45AC                            lea eax, dword ptr [ebp-54]

:0042C8ED 52                                      push edx

:0042C8EE 50                                      push eax

:0042C8EF C745AC08800000            mov [ebp-54], 00008008

 

<-- C'est ici que je saisis un numéro de licence.

Donc, à partir d'ici, on sait ou est stocké notre licence. On continu à tracer et on arrive à ce code :

:0042C932 0F84D2000000            je 0042CA0A          Saute si le numéro saisi est incorrect

 

Si le numéro est bon, on continu et on prépare le fichier CLE.DEF pour y saisir quoi ?

 

:0042C938 8B0D58E04200           mov ecx, dword ptr [0042E058]

:0042C93E 51                               push ecx

:0042C93F 68109F4000              push 00409F10

:0042C944 FF1554104000          Call dword ptr [00401054]

:0042C94A 8BD0                        mov edx, eax

:0042C94C 8D4DE4                   lea ecx, dword ptr [ebp-1C]

[...]

Tout simplement le contenu de EBP-1C = mon numéro de licence saisit.

:0042C9A2 8B45E4                   mov eax, dword ptr [ebp-1C]            <-- Mon numéro de licence bidon

:0042C9A5 8D4DBC                 lea ecx, dword ptr [ebp-44]

:0042C9A8 8945D4                   mov dword ptr [ebp-2C], eax

 

Donc, à partir de maintenent on a toutes les données necessaire pour patcher le soft. Le but de ce patch est que le soft se sérialise sur n'importe quel machine.

Donc on sait que :

    - le bon numéro de licence est stocké dans EBP-4C

    - Que le saut conditionnel de l'adresse 42C932 détermine la validitée de notre licence et qu'il ne doit pas s'éxécuter.

    - Que le soft inscrit le numéro de licence contenu dans EBP-1C (celui que nous avons saisit) dans le fichier CLE.DEF

 

Pour commencer, on va éditer le fichier "NUMERO.EXE" avec un éditeur héxa et on va aller directement à l'offset de notre saut conditionnel qui est en 0x4C932.

Ce saut, comme il doit s'executer, nous allons directement le NOPPER. Donc on change le code hexa 0F 84 D2 00 00 00 par 90 90 90 90 90 90.

Maintenant, on va à l'offset 0x2C9A2 afin de remplacer notre EBP-1C par EBP-4C.

Ce qui nous donne en modification hexa 8B 45 E4 par 8B 45 B4

Maintenant on peut s'enregistrer avec n'inporte quel numéro de série, le soft enregistrera le bon code.

 

@+

WarSoft