
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