Copy Link
Add to Bookmark
Report

7Sk1: Tutorial - crack de Universe v1.5

eZine's profile picture
Published in 
Seven SYnKoP Mag
 · 2 years ago

Introduction

Voilà un second tut de crack sur un soft que vous connaissez pas dutout j'imagine (encore! lol :) Universe est un prog sympa comme tout (mais payant) qui permet de créer des images spatiales avec la possibilité de mettre des étoiles, des galaxies etc ... mais en version shareware on peut pas mettre quelques planètes :'(

hum ... en fait l'utilitée du soft on s'en tape ce qui nous interresse au niveau technique c'est qu'avec ce soft je veux vous apprendre à patcher un prog pas seulement en nopant par-ci par-là voilà na ! :)


Universe v1.5

Là tout d'abord nous allons le désassembler mais sans commencer a ce jeter comme des malades sur les string ref. (elles sont trompeuses ;) alors allons-y au débugger (si vous ne savez pas utiliser softice, lisez les hccc ou un zine a lise grim je croit aussi) là vous avez le choix, soit vous posez un breakpoint sur GetWindowTextA (la fonction qui récup le couple nom d'utilisateur/serial) soit vous posez un breakpoint sur MessageBox (pour localiser o˘ il nous dit d'aller nous faire foutre en fait). Bon je vous épargne tous Goto Code locations avec W32DASM et tout les bpx et je vous file la fonction qui les enregistrement (elle est en 0041A3B0) regardons un peu ça :

================================================================ 

* Referenced by a CALL at Addresses:
|:0041A009 , :0041A2A8
|
:0041A3B0 53 push ebx
:0041A3B1 56 push esi
:0041A3B2 57 push edi
:0041A3B3 8BF1 mov esi, ecx
:0041A3B5 55 push ebp
:0041A3B6 33FF xor edi, edi
:0041A3B8 33DB xor ebx, ebx
:0041A3BA 8B442414 mov eax, dword ptr [esp+14]
:0041A3BE 8B08 mov ecx, dword ptr [eax]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041A3E8(U)
|
:0041A3C0 3B59F8 cmp ebx, dword ptr [ecx-08] ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3C3 7D25 jge 0041A3EA ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3C5 0FBE2C19 movsx ebp, byte ptr [ecx+ebx] ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3C9 03FD add edi, ebp ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3CB 8BC3 mov eax, ebx ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3CD 99 cdq ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3CE 33C2 xor eax, edx ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3D0 2BC2 sub eax, edx ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3D2 83E001 and eax, 00000001 ; tout ça nous concerne pas (on veut pas faire un keygen)
:0041A3D5 33C2 xor eax, edx ;
:0041A3D7 2BC2 sub eax, edx ;
:0041A3D9 83F801 cmp eax, 00000001 ;
:0041A3DC 1BC0 sbb eax, eax ;
:0041A3DE 43 inc ebx ;
:0041A3DF 83E002 and eax, 00000002 ;
:0041A3E2 48 dec eax ;
:0041A3E3 0FAFE8 imul ebp, eax ;
:0041A3E6 03FD add edi, ebp ;
:0041A3E8 EBD6 jmp 0041A3C0 ; etc ... lol

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041A3C3(C)
|
:0041A3EA 8BC7 mov eax, edi
:0041A3EC 0FAFC7 imul eax, edi
:0041A3EF 03C7 add eax, edi
:0041A3F1 33FF xor edi, edi
:0041A3F3 50 push eax ; ça aussi
:0041A3F4 E827D7FEFF call 00407B20
:0041A3F9 83C404 add esp, 00000004
:0041A3FC 393E cmp dword ptr [esi], edi
:0041A3FE 7E0A jle 0041A40A

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041A408(C)
|
:0041A400 47 inc edi
:0041A401 E83AD7FEFF call 00407B40
:0041A406 393E cmp dword ptr [esi], edi ; ça aussi
:0041A408 7FF6 jg 0041A400

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041A3FE(C)
|
:0041A40A 8B7C2418 mov edi, dword ptr [esp+18]
:0041A40E 85FF test edi, edi
:0041A410 7F03 jg 0041A415 ; ça aussi
:0041A412 8B7E10 mov edi, dword ptr [esi+10]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041A410(C)
|
:0041A415 E826D7FEFF call 00407B40
:0041A41A 2BC7 sub eax, edi
:0041A41C 5D pop ebp
:0041A41D 5F pop edi
:0041A41E 83F801 cmp eax, 00000001 ; voilà qui nous interresse
:0041A421 1BC0 sbb eax, eax ; ça aussi :)
:0041A423 5E pop esi
:0041A424 F7D8 neg eax
:0041A426 5B pop ebx
:0041A427 C20800 ret 0008

================================================================


Je vient de me rendre compte que c'était pas la peine de balancer toute là fonction si seulement deux lignes m'interressait mais bon ... c'est pas grave :). En fait ces deux lignes nous montre le retour de la fonctions qui est traité comme cela en 0041A009 :

================================================================ 

(...)
call 0041A05E ; appelle de notre chère fonction
test eax, eax ;
jne 0041A05E ; si eax = 0 alors sérial incorrect meuh !
(...)

================================================================


Ben voilà nous avons plus qu'a modifier le retour de la fonction. Puisque nous savons maintenant que la fonction d'enregistrement renvoi 0 lorsque le sérial est faux. Mais voilà nous pouvont le faire seulement en utilisant la place donnée avec ces deux instructions :

cmp eax, 00000001	; 
sbb eax, eax ; si eax est different de 1 nous soutrayons (?) eax par eax, on le fout a zéro quoi


soit 83 F8 01 1B C0 soit 5 octets :)

Nous allons donc remplacer ces instructions par :

xor eax, eax		; on met eax a 0 
inc eax ; on l'incrémente


Pis voilà voilou. Pour tester cela avec SoftIce on met un breakpoint sur 0041A41E.

bpx 0041A41E


On va a la boite de dialog d'enregistrement on met n'importe quoi (bah An-Mojeg/666 ça va très bien :) et on appuie sur le bouton register, là softice arrive puis on entre nos petites instructions comme ça :

a		; <- pour rentrer les instructions quoi :) 
xor eax, eax
inc eax
nop ; ben oui faut un peu noper pour combler les trous
nop ;
(echap)
(ctrl+D)


Bingo ! c'est enregistré yaouuuuuuuuuuuuuuu ! Voilà maintenant ce que ça nous donne au desassembleur :

====================================================== 

:0041A41E 33C0 xor eax, eax
:0041A420 40 inc eax
:0041A421 90 nop
:0041A422 90 nop

======================================================


Il ne vous reste plus qu'a remplacer 83 F8 01 1B C0 par 33 C0 40 90 90 à l'offset 0x1981E.

Que c'est bôooo bon ben vous savez faire les cracks maintenant nan ? (cf 001)

An-Mojeg [ an-mojeg@mail-developpeur.com ]

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT