Crack de XARA3D 2 Par MOVAX1St [DSK] Cours de niveaux A+

Matos nécéssaires : (utilisés)
Wdasm85 ou 89 
Soft-ice 3.20  
Editeur Hexa

Nous voici donc sur un autre travail, un peu plus compliqué que le dernier , du moins il semble....
Voyons ca de plus près : ce logiciel sert à générer des images gif, jpg animés. (sympas d'ailleurs)
En version SHAREWARE, il nous permets de rien foutre ! ! ! ils se foutent de nous !
En effet, des que le logiciel est lancés, il vous annonce qu'il est la que pour 15 jours, sinon, fo vous enregistrer.
De plus, il nous colle un fond avec xara demo ecrit partout , donc, inutilisable !
La solution pourrait d'etre de virer le time-limit, puis de virer le fond xara demo.. 
Mais bon, y'a au lancement un bouton UNLOCK, ce qui veut dire qu'on peut tout dévérouiller. ;)))).
(Personnelement, j'utilise une technique autre que celle que je vais vous présenter pour enregistrer ce genre de log, 
mais, pour un bon debut, j'ai préféré vous exposer cette solution.)
Dessasemblons le logiciel, avec WDASM. 2 minutes et c'est fait. Relancons le X3D.exe.
Cliquons sur purchase, il nous demande un code d'enregistrement, entrons n'importe quoi. UNLOCK.
La, le log nous réponds : YOU ENTERED AN INVALID UNLOCK CODE, THE.....
Notons ca... retournons sous WDASM. Recherchons (Search puis Find text) YOU ENTERED, le log nous envoie a ca :
 * Possible Reference to String Resource ID=03005: "You entered an invalid unlock code.
The program has not been"

Ha ! un pas en avant.... on sait deja que ca apparaît en clair dans le texte.
 Nous savons egalement que notre seance de test est deja passé car il nous dis que c'est invalide.. 
Nous devons donc remonter le code source.
Remontons doucement, en regardant ce qui se fait.. JE OU JNE 0040BE3D... 
Cette instruction apparaît bien souvent.. 
0040BD0F, a cet adresse on remarque une serie d'instruction qui laisse penser que le log fait un calcul à cet endroit. 
De plus a la fin de calcul, nous avons droit au JE 0040BE3D, qui nous dis au revoir....
Remontons au plus haut possible, juste avant l'instruction jne 0040BE3D. Posons un bpx sur le CALL
en 40BC34. (Bpx 40BC34 sous SOFT-ICE)
Bingo, le log s'arrete... L'astuce consiste maintenant a lui faire croire qu'on est enregistré..
Le passage sur le JNE 40BE3D nous renvoie apres cette serie de calcul si le sot se fait..
Donc, nous pourrions tres bien modifier le sot par 2 NOP (a+entree sous softice, puis nop, nop)
Mais cela n'a que tres peu d'interet.. en effet, il nous faudrait mettre des nop sur tous les JE ou JNE
Se referencant a cet adresse.. le plus simple consiste a repérer le dernier de ces sots :
 0040BD80 0F85B7000000            jne 0040BE3D 

Puis, a placer un sot sur le call d'en dessous.
0040BD86 E8A4360700              call 0047F42F
plus loin nous voyons : 

* Possible StringData Ref from Data Obj ->"Key"

Et c'est a partir de la qu'il nous la sort cette key, clé de validation ;)))
Donc, on prends le premier des sauts en : :0040BC4D 0F85EA010000            jne 0040BE3D
Qu'on remplace par un JMP a l'adresse du call ... ca nous donne : 0040BC4D JMP  0040BD86
Je ne vous ai pas mis les codes hexa volontairements ;)) a vous de les chercher 8=((
L'editeur HEXA vous aidera a réaliser ce crack (modifications du log)
C'est pas du clefs en main... Les instructions du dessous vous eviteront d'avoir à décompiler le log...
Puis, il fo bien remplir cette bible ;)
Si vous voulez le refaire vous mêmes après avoir suivi l'exemple, supprimez la key dans la base de registre...
Nous aurions pu essayer de trouver le reg attendu, mais, cela ne sert a rien sur ce genre de crack...



:0040BC25 52                      push edx
:0040BC26 6A06                    push 00000006
:0040BC28 E8911B0600              call 0046D7BE
:0040BC2D 8D8C24A8000000          lea ecx, dword ptr [esp+000000A8]
:0040BC34 E81B080600              call 0046C454
:0040BC39 83F801                  cmp eax, 00000001
:0040BC3C 0F8509020000            jne 0040BE4B
:0040BC42 8B842440010000          mov eax, dword ptr [esp+00000140]
:0040BC49 8378F807                cmp dword ptr [eax-08], 00000007
:0040BC4D 0F85EA010000            jne 0040BE3D<= Premier Sot
:0040BC53 0FBE10                  movsx edx, byte ptr [eax]
:0040BC56 52                      push edx
:0040BC57 E864640400              call 004520C0
:0040BC5C 83C404                  add esp, 00000004
:0040BC5F 85C0                    test eax, eax
:0040BC61 0F84D6010000            je 0040BE3D
:0040BC67 8B842440010000          mov eax, dword ptr [esp+00000140]
:0040BC6E 0FBE4801                movsx ecx, byte ptr [eax+01]
:0040BC72 51                      push ecx
:0040BC73 E848640400              call 004520C0
:0040BC78 83C404                  add esp, 00000004
:0040BC7B 85C0                    test eax, eax
:0040BC7D 0F84BA010000            je 0040BE3D
:0040BC83 8B942440010000          mov edx, dword ptr [esp+00000140]
:0040BC8A 0FBE4202                movsx eax, byte ptr [edx+02]
:0040BC8E 50                      push eax
:0040BC8F E82C640400              call 004520C0
:0040BC94 83C404                  add esp, 00000004
:0040BC97 85C0                    test eax, eax
:0040BC99 0F849E010000            je 0040BE3D
:0040BC9F 8B8C2440010000          mov ecx, dword ptr [esp+00000140]
:0040BCA6 0FBE5103                movsx edx, byte ptr [ecx+03]
:0040BCAA 52                      push edx
:0040BCAB E810640400              call 004520C0
:0040BCB0 83C404                  add esp, 00000004
:0040BCB3 85C0                    test eax, eax
:0040BCB5 0F8482010000            je 0040BE3D
:0040BCBB 8B842440010000          mov eax, dword ptr [esp+00000140]
:0040BCC2 0FBE4804                movsx ecx, byte ptr [eax+04]
:0040BCC6 51                      push ecx
:0040BCC7 E8F4630400              call 004520C0
:0040BCCC 83C404                  add esp, 00000004
:0040BCCF 85C0                    test eax, eax
:0040BCD1 0F8466010000            je 0040BE3D
:0040BCD7 8B942440010000          mov edx, dword ptr [esp+00000140]
:0040BCDE 0FBE4205                movsx eax, byte ptr [edx+05]
:0040BCE2 50                      push eax
:0040BCE3 E8D8630400              call 004520C0
:0040BCE8 83C404                  add esp, 00000004
:0040BCEB 85C0                    test eax, eax
:0040BCED 0F844A010000            je 0040BE3D
:0040BCF3 8B8C2440010000          mov ecx, dword ptr [esp+00000140]
:0040BCFA 0FBE5106                movsx edx, byte ptr [ecx+06]
:0040BCFE 52                      push edx
:0040BCFF E8BC630400              call 004520C0
:0040BD04 83C404                  add esp, 00000004
:0040BD07 85C0                    test eax, eax
:0040BD09 0F842E010000            je 0040BE3D
:0040BD0F 8B842440010000          mov eax, dword ptr [esp+00000140]
:0040BD16 0FBE4804                movsx ecx, byte ptr [eax+04]
:0040BD1A 0FBE5006                movsx edx, byte ptr [eax+06]
:0040BD1E 8D0C49                  lea ecx, dword ptr [ecx+2*ecx]
:0040BD21 8D0CCA                  lea ecx, dword ptr [edx+8*ecx]
:0040BD24 8D1449                  lea edx, dword ptr [ecx+2*ecx]
:0040BD27 0FBE4802                movsx ecx, byte ptr [eax+02]
:0040BD2B 8D0CD1                  lea ecx, dword ptr [ecx+8*edx]
:0040BD2E 8D1449                  lea edx, dword ptr [ecx+2*ecx]
:0040BD31 0FBE4805                movsx ecx, byte ptr [eax+05]
:0040BD35 8D0CD1                  lea ecx, dword ptr [ecx+8*edx]
:0040BD38 8D1449                  lea edx, dword ptr [ecx+2*ecx]
:0040BD3B 0FBE08                  movsx ecx, byte ptr [eax]
:0040BD3E 8D0CD1                  lea ecx, dword ptr [ecx+8*edx]
:0040BD41 8D1449                  lea edx, dword ptr [ecx+2*ecx]
:0040BD44 0FBE4801                movsx ecx, byte ptr [eax+01]
:0040BD48 0FBE4003                movsx eax, byte ptr [eax+03]
:0040BD4C 8D0CD1                  lea ecx, dword ptr [ecx+8*edx]
:0040BD4F 8D1449                  lea edx, dword ptr [ecx+2*ecx]
:0040BD52 8BCD                    mov ecx, ebp
:0040BD54 81E155555555            and ecx, 55555555
:0040BD5A 8D94D067216BFB          lea edx, dword ptr [eax+8*edx-0494DE99]
:0040BD61 8BC5                    mov eax, ebp
:0040BD63 D1E8                    shr eax, 1
:0040BD65 2555555555              and eax, 55555555
:0040BD6A 8D0C48                  lea ecx, dword ptr [eax+2*ecx]
:0040BD6D 8D0489                  lea eax, dword ptr [ecx+4*ecx]
:0040BD70 C1E008                  shl eax, 08
:0040BD73 2BC1                    sub eax, ecx
:0040BD75 8D04C0                  lea eax, dword ptr [eax+8*eax]
:0040BD78 8D0441                  lea eax, dword ptr [ecx+2*eax]
:0040BD7B 8D0C40                  lea ecx, dword ptr [eax+2*eax]
:0040BD7E 3BD1                    cmp edx, ecx
:0040BD80 0F85B7000000            jne 0040BE3D <= dernier SOT
:0040BD86 E8A4360700              call 0047F42F<= VALIDATION
:0040BD8B 8B4004                  mov eax, dword ptr [eax+04]
:0040BD8E 55                      push ebp

* Possible StringData Ref from Data Obj ->"Key"
                                  |
:0040BD8F 684CA44A00              push 004AA44C

* Possible StringData Ref from Data Obj ->"Install"
                                  |
:0040BD94 6844A44A00              push 004AA444
:0040BD99 8BC8                    mov ecx, eax
:0040BD9B E8A3A30600              call 00476143
:0040BDA0 C605C0114C0000          mov byte ptr [004C11C0], 00
:0040BDA7 8D8C2444010000          lea ecx, dword ptr [esp+00000144]
:0040BDAE C68424B40400000B        mov byte ptr [esp+000004B4], 0B
:0040BDB6 E87B150600              call 0046D336
:0040BDBB 8D8C2440010000          lea ecx, dword ptr [esp+00000140]
:0040BDC2 C68424B40400000A        mov byte ptr [esp+000004B4], 0A
:0040BDCA E867150600              call 0046D336
:0040BDCF 8D8C2404010000          lea ecx, dword ptr [esp+00000104]
:0040BDD6 C68424B404000009        mov byte ptr [esp+000004B4], 09
:0040BDDE E89FF40600              call 0047B282
:0040BDE3 8D8C24A8000000          lea ecx, dword ptr [esp+000000A8]
:0040BDEA C68424B404000003        mov byte ptr [esp+000004B4], 03
:0040BDF2 E8FD020600              call 0046C0F4
:0040BDF7 8D4C2458                lea ecx, dword ptr [esp+58]
:0040BDFB C68424B404000002        mov byte ptr [esp+000004B4], 02
:0040BE03 E868630500              call 00462170
:0040BE08 8D4C2458                lea ecx, dword ptr [esp+58]
:0040BE0C E86F640500              call 00462280
:0040BE11 8D4C241C                lea ecx, dword ptr [esp+1C]
:0040BE15 C68424B404000000        mov byte ptr [esp+000004B4], 00
:0040BE1D E814150600              call 0046D336
:0040BE22 8D4C2414                lea ecx, dword ptr [esp+14]
:0040BE26 C78424B4040000FFFFFFFF  mov dword ptr [esp+000004B4], FFFFFFFF
:0040BE31 E800150600              call 0046D336
:0040BE36 B001                    mov al, 01
:0040BE38 E9AA000000              jmp 0040BEE7

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040BC4D(C), :0040BC61(C), :0040BC7D(C), :0040BC99(C), :0040BCB5(C)
|:0040BCD1(C), :0040BCED(C), :0040BD09(C), :0040BD80(C)
|
:0040BE3D 6AFF                    push FFFFFFFF
:0040BE3F 6A10                    push 00000010

* Possible Reference to String Resource ID=03005: "You entered an invalid unlock code.
The program has not been"
                                  |
:0040BE41 68BD0B0000              push 00000BBD
:0040BE46 E8808F0600              call 00474DCB

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040BC3C(C)
|
:0040BE4B 8A442413                mov al, byte ptr [esp+13]
:0040BE4F 33DB                    xor ebx, ebx
:0040BE51 84C0                    test al, al
:0040BE53 0F94C3                  sete bl
:0040BE56 8D8C2444010000          lea ecx, dword ptr [esp+00000144]
:0040BE5D C68424B40400000E        mov byte ptr [esp+000004B4], 0E
:0040BE65 E8CC140600              call 0046D336
:0040BE6A 8D8C2440010000          lea ecx, dword ptr [esp+00000140]
:0040BE71 C68424B40400000D        mov byte ptr [esp+000004B4], 0D
:0040BE79 E8B8140600              call 0046D336
:0040BE7E 8D8C2404010000          lea ecx, dword ptr [esp+00000104]
:0040BE85 C68424B40400000C        mov byte ptr [esp+000004B4], 0C
:0040BE8D E8F0F30600              call 0047B282
:0040BE92 8D8C24A8000000          lea ecx, dword ptr [esp+000000A8]
:0040BE99 C68424B404000003        mov byte ptr [esp+000004B4], 03
:0040BEA1 E84E020600              call 0046C0F4
:0040BEA6 8D4C2458                lea ecx, dword ptr [esp+58]
:0040BEAA C68424B404000002        mov byte ptr [esp+000004B4], 02
:0040BEB2 E8B9620500              call 00462170
:0040BEB7 8D4C2458                lea ecx, dword ptr [esp+58]
:0040BEBB E8C0630500              call 00462280
:0040BEC0 8D4C241C                lea ecx, dword ptr [esp+1C]
:0040BEC4 C68424B404000000        mov byte ptr [esp+000004B4], 00
:0040BECC E865140600              call 0046D336
:0040BED1 8D4C2414                lea ecx, dword ptr [esp+14]
:0040BED5 C78424B4040000FFFFFFFF  mov dword ptr [esp+000004B4], FFFFFFFF
:0040BEE0 E851140600              call 0046D336
:0040BEE5 8AC3                    mov al, bl

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040B3DD(U), :0040B485(U), :0040BA16(U), :0040BAB2(U), :0040BE38(U)
|
:0040BEE7 8B8C24AC040000          mov ecx, dword ptr [esp+000004AC]
:0040BEEE 5F                      pop edi
:0040BEEF 5E                      pop esi
:0040BEF0 5D                      pop ebp
:0040BEF1 64890D00000000          mov dword ptr fs:[00000000], ecx
:0040BEF8 5B                      pop ebx
:0040BEF9 81C4A8040000            add esp, 000004A8
:0040BEFF C3                      ret


Bon courage ;))
MOVAX1St [DSK]


A peine finis ce petit exercices que je recois quelques textes, que je vous retransmets....
A etudier.
RETOUR