X
ara 3D3 est un petit prog qui permet de faire des GIF animés. Mais dans sa version shareware, il y a un fond d'écran (très laid) qui ne
permet pas de faire grand chose...La version 'enregistrée' ne possède pas ce gros handicap...;-)
Après avoir installé le prg, on s'aperçoit qu'il existe un boutton pour acheter le prog.
Puis, une clef de débridage est demandée...On rentre n'importe quoi, puis une zolie boîte de dialogue nous indique que la clef n'est pas bonne...
Deux méthodes s'offrent à vous:
Mettre un BPX sur GetdlgItemTextA ou GetWindowTextA
Mettre un BPX sur MessageBoxA
Bien que la première méthode soit plus logique (le plus en amont de la protection vous êtes, mieux c'est) je vais utiliser la deuxième.
En fait je triche, car j'ai déjà cracké une ancienne verison de XARA 3D, et je savais que de travailler en passant par la MessageBoxA était plus simple...
Bref, vous vous en foutez..
Donc! après avoir cliquer sur OK voici ce que vous voyez:
:0048C30D |
FF15B86B5100 |
Call MessageBoxA |
|
:0048C313 |
891E |
mov dword ptr [esi], ebx |
On arrive ici! |
Un petit regard sur les instructions AVANT le CALL nous indique aucun saut conditionnel qui passerait outre ce
MessageBox. Donc on va remonter d'un niveau. F10 jusqu'à prochain RET (qui se situe en :0048C339) pour se trouver nez-à-nez avec:
:00415036 |
E847720700 |
call 0048C282 |
|
:0041503B |
C6056CD74C0000 |
mov byte ptr [004CD76C], 00 |
C'est ici que l'on arrive ! |
:00415042 |
C20C00 |
ret 000C |
|
On regarde au-dessus, il n'y a rien. Donc F10 pour encore remonter d'un niveau.
On arrive la-dessus:
:0048C39E |
FF9294000000 |
call dword ptr [edx+00000094] |
|
:0048C3A4 |
834DFCFF |
or dword ptr [ebp-04], FFFFFFFF |
On arrive ici !! |
:0048C3A8 |
8D4DF0 |
lea ecx, dword ptr [ebp-10] |
|
On effectue toujours la même démarche, pour se rendre compte que l'on doit encore remonter d'un niveau...
Allez, courage, c'est le dernier... ;-)
Donc on tombe sur cet extrait de code:
:0040F5FE |
E85ACD0700 |
call 0048C35D |
|
:0040F603 |
8A442413 |
mov al, byte ptr [esp+13] |
On arrive là.... |
:0040F607 |
33DB |
xor ebx, ebx |
|
Bon, on refait la même manip qu'avant, mais cette fois-ci il y a quelque chose...
:0040F5F0 |
E9AA000000 |
jmp 0040F69F |
Il est y pas Bô celui là ??? |
Bon, j'espère que vous comprenez pourquoi ce JMP est interessant...Il saute complètement par dessus notre CALL qui représente en fait le MessageBox qui nous indique que la clé n'est pas bonne.
On recherche donc les sauts conditionnels qui doivent pointer juste après ce JMP...
Et cela ne manque pas en plus...Il y a toute une ribembelle (9 il me semble) de sauts conditionnels qui pointent vers cette même adresse...
Le premier ce situe là:
:0040F401 |
83F801 |
cmp eax, 00000001 |
|
:0040F404 |
0F85F9010000 |
jne 0040F603 |
|
:0040F40A |
8B842440010000 |
mov eax, dword ptr [esp+00000140] |
|
:0040F411 |
3958F8 |
cmp dword ptr [eax-08], ebx |
|
:0040F414 |
0F85DB010000 |
jne 0040F5F5 |
Le premier des sauts.. |
Que reste il à faire??? Et bien trouver le dernier de ces CMP/SAUT qui pointe vers :0040F5F5, et de changer le premier en un saut INconditionnel pointant vers l'instruction d'après...
Le CMP en :0040F401 n'est pas "dangereux"...Le saut n'est pas pris...Donc on peut se permettre de modifier le JNE 0040F5F5 en :0040F414
C'est parti...Alors le dernier de ces couples CMP/SAUT est celui-ci:
:0040F53C |
0F85B3000000 |
jne 0040F5F5 |
Le dernier de son espèce.. |
:0040F542 |
8B0DD0EA4D00 |
mov ecx, dword ptr [004DEAD0] |
Instruction qu'il faut pointer |
Bah voilà, c'est terminé...(déjà ! me direz vous....) Vous changez donc le premier CMP/SAUT en JMP vers :0040F542 et le tour est joué...
Le prg s'enregistre tout seul comme un grand. Pratique non ??
Il créé une clé dans la base de registre, si vous voulez essayer par une autre méthode ou encore le refaire de part vous même, il vous suffit d'effacer l'entrée "KEY" dans la base de registre, et de remettre le fichier EXE dans son état normal si vous avez fait une modification hexa physique....
Have Phun...