CRACKING AceFTP Pro v3

Crackez Quick screen maker v 2.1

Forcer al à prendre la valeur 1
By Selima

 

Infos Cible:

 

Quick Screenshot Maker is an all-in-one tool for screen capturing, image editing and organization. It can capture any part of the screen precisely in flexible ways, including DirectX, screen saver and movie screens. Use Quick Screenshot Maker to save time and enhance your screen shots. Add annotations, text, arrows, highlights, clipart and more. The History Bar helps you find all of your captured images and organize them quickly and easily.

 

Un programme  utile pour ceux qui veulent créer des tutoriaux illustrés et partager leur savoir faire en cracking J

Un tutorial vaut mieux que mille cracks

 

URL:

 

Tool Needed
- OllyDbg v 1.10

 

Analyse et crack du programme

Une analyse du fichier exécutable ScreenshotMaker.exe par PIED nous révèle que se programme est codé en c++, il n’est ni compressé ni protégé.

Lancer le programme, aller vers Help puis REGISTER, entrer un nom et un code bidon, si vous avez une chance anormale, le bon message s’affiche, si non :

 

 

Fire up ollydbg, charger notre exécutable, une fois chargé, un clic droit sur la fenêtre principale, Search for all referenced text strings, un fenetre s’ouvre, clic droit dessus, puis search for text, enter (registration key is wrong, décocher Case sensitive, puis valider, vous devez tomber ici :

 

 

Clic dessus et on attérit dans cette routine :

 

 

Juste en dessus de notre référence, on à un jnz, précédé d’un test. Le programme teste si AL est égale à zéro si elle est différente de zéro le saut s’exécute et saute au-delà de du mauvis message, si égale à zéro le saut ne s’exécute pas et continue son chemin vers le mauvais message.

Donc en sortant du call qui précède le teste le programme sait déjà si notre code est valide ou bidon et s’est à l’intérieur du call que al prendra la valeur 1ou 0.

Pour s’assurer que notre code entré est valide en doit faire pour que al prendra une valeur différente de zéro à l’intérieur du call, pour cela on va tracer à l’intérieur du call est voir ou al prendra zéro puisque notre code est faux.

On doit poser un breackpoint au niveau du call. Dans la fenêtre principale CPU, faits Ctrl+g une boite s’ouvre, entrer l’adresse du call [00430759], à la ligne du call faites F2 puis F9 pour lancer le programme, OllyDbg s’arrête au niveau du call :

 

 

Presser F7 pour entrer à l’intérieur du call, puis F8 pour tracer instruction par instruction, à un moment donné on remarque dans la fenêtre de droite « REGISTERS » apparaître notre Nom et code :

 

 


juste en dessous, on voit un saut conditionnel, c’est sûrement l’endroit ou le programme vérifie si notre code entré correspond à notre non, c’est la routine de génération des codes, elle teste si notre code est valide en le comparant à 18d = 24h si différent de zéro le saut s’exécute.

Notre code est sûrement faux , en continuant à tracer on constate que le saut s’exécute et nous mène vers une partie du code ou al est mis à zéro :

 

 

Si on continue à tracer, on sort du call vers le test al, al et on remarque dans la fenêtre de Registers de droite que Eax a pris Zéro comme valeur et puisque al n’est qu’une partie basse de Eax , elle prendra forcement la même valeur et le saut ne s’exécute pas et nous mène vers le message d’échec.

 

 

 

Alors comment faire pour que la valeur de retour de al soit différente de zéro ?

On va essayer deux solutions :

1- sortir du call avec 1 comme valeur de retour et ce en forçant al à 1, au moment ou la routine de vérification de la validité de notre code saute vers xor al, al   est met al à zéro puisque notre code est faux, notre première solution consiste à forcer al à 1 en remplaçant cette dernière l’instruction par mov al, 01.

Donc Ctrl+g, entrer l’adresse de l’instruction 004074AB, clic sur la barre d’espace une fois au niveau de l’instruction, remplacer son contenu par notre nouvelle instruction et valider par ok:

 

 

Clic droit sur la fenêtre principale d’Ollydbg, aller vers Copy to executable, puis sur all modifications, une fenêtre s’ouvre, clic droit puis Save file, choisir un Nom différent « ScreenshotMaker1.exe ».

2- en traçant à l’intérieur du call, on est arrivé à un moment ou la routine du Serial vérifie la validité de notre code, le compare, puis un JNZ décide de sauter ou non :

 

On va essayer d’inverser le saut pour qu’il ne nous mène pas vers xor al, al. Donc Gtrl+F2 pour réinitialiser le programme, une fois charger de nouveau, on fait Gtrl+g, entrer l’adresse du saut conditionnel 004714C et valider, une fois sur le saut, poser un breakpoint en pressant F2, puis F9 pour lancer le programme, aller dans le Menu Help du programme puis Register, entrer votre nom et code et valider :

 

 

Ollydbg s’arrête au niveau de notre premier call, donc F7 pour entrer à l’intérieur du call, puis F8 pour tracer jusqu’au niveau de notre JNZ dont on a poser un breakpoint,

 

 

Changer le jnz par jz et continuer à tracer quelques lignes et on découvre un pseudo code. Avec cette seconde approche le programme ne met jamais al a zéro.

 

 

 

Tester la première solution , vous aurez un programme assigné à votre Nom.

 

 

 

 Remarque :

On peut cracker tous les softs de ETRUSOFT de la même manière en suivant la même logique décrite dessus,  puisque tous les softs de cette société ont une schème identiques pour tous leurs softs.

 

Août 2004

Selima

m.culture@netcourrier.com