


                        ++++++++++++++++++++++++++++++++++++++++++++++++
                        +**********************************************+
                        +*--------------------------------------------*+
                        +*----------Magic Raphoun's Tutorial----------*+
                        +*--------------------------------------------*+
                        +*---------------Winboost98 1.1---------------*+
                        +*--------------------------------------------*+
                        +*--------------------------------------------*+
                        +**********************************************+
                        ++++++++++++++++++++++++++++++++++++++++++++++++






Part 1 : Introduction
Part 2 : Rappel
Part 3 : Dsassemblage
Part 4 : Localisation et *traduction* de la protection
Part 5 : Dplombage
Part 6 : Crer un fichier crack .exe
Part 7 : Remerciements


				_______________________

			


Part 1 : Introduction
^^^^^^^^^^^^^^^^^^^^^			


Salut, bienvenue dans mon premier tutorial de cracking. J'espre qu'il vous plaira et surtout qu'il vous fera avancer dans votre quete :). N'tant pas du tout un bon cracker, je pense m'exprimer avec des mots simples qui vous feront comprendre sans vous dconcerter... Et surtout, je souhaite vous faire viter les mme erreurs que moi au dbut... :)
Ce tutorial est cens vous montrer l'un des schmas de protection le plus rpandu et le plus facile a cracker. Il va aussi vous permettre d'utiliser Wdasm et Hiew.

Bon, trve de plaisanteries, venons en au cracking...:)



Cible : Winboost 1.1   (http://members.xoom.com/Magellas)
^^^^^	Ce soft est bien pratique puisqu'il permet, a l'aide de cases a cocher, de changer 	des trucs dans la bases de registre, de facon a rendre Windaube plus convivial, plus 	rapide, et avec un peu de chance, moins bug...


Outils necessaires : _Win32dasm89 ou superieur
^^^^^^^^^^^^^^^^^^   _Hiew591 ou superieur (et mme a partir de la version 566)
		     _Turbo Pascal (pas indispensable)
		     _Un cerveau
		     _Des mains


				_______________________


Part 2 : Rappel
^^^^^^^^^^^^^^^


Bon, comme vous devez le savoir, Win32dasm est un dsassembleur (d'o son nom), c'est a dire qu'il retranscrit votre fichier .exe, .dll et tout autre fichier executable en code assembleur. 
Pour cracker, des notions d'assemleur son necessaires, mais ce sont vraiment des bases assez faciles a comprendre pour peu que l'on ait la doc adquat. Je vous conseille donc d'imprimer "les instructions Assembleur" d'Alligator427, prsent dans le mme zip que ce file.

Quant  Hiew (Hacker's View), c'est un diteur hexadcimal/Assembleur. Il sert donc a modifier le code d'un soft pour le cracker.



				_______________________



Part 3 : Desassemblage
^^^^^^^^^^^^^^^^^^^^^^

D'abord, executez Winboost : un nag-screen (ecran vous informant que vous n'etes pas enregistr) apparait et ne disparait que quelques secondes aprs. vous je sais pas, mais moi ca a tendance a m'enrver... Ensuite faites Register, entrez un nom et un mot de passe bidon : "Wrong User Name and/or Registration". Laissez tomber, quittez le nag-screen, le logiciel a l'air cool, ca serait dommage de ne pas en profiter plus de 10 jours...

Bien, cette tape est trs utile, vous pouvez mme noter les diffrents titres des nag-screen, des messages d'erreur... Vous verrez bientot pourquoi...


Maintenant, desassemblez Winboost avec Wdasm. Vous voila donc en prsence du code ASM du programme.



				_______________________



Part 4 : Localisation et *traduction* de la protection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


Faites "String Data References" pour chercher les messages d'erreur que vous avez rencontr.

Tout a la fin vous avez "Wrong User Name and/or Registration". Double clickez dessus, vous arrivez a la partie du code ou le soft vous annonce que vous avez entr un mauvais srial :


* Possible StringData Ref from Code Obj ->"Wrong User Name and/or Registration"
					->"Code"
004ADFC1		B8B4E24A00		mov eax, 004AE2B4
004ADFC6		E80DC9F8FF		call 0043A8D8
004ADFCB		8B45FC			mov eax, dword ptr [ebp-04]
004ADFCE		8B80E0010000		mov eax, dword ptr [eax+000001E0]
004ADFD4		33D2			xor edx, edx
004ADFD6		E831FBF6FF		call 0041DB0C
004ADFDB		8B45FC			mov eax, dword ptr [ebp-04]
004ADFDE		8B80E0010000		mov eax, dword ptr [eax+000001E0]
004ADFE4		33D2			xor edx, edx
004ADFE6		E831FBF6FF		call 0041DB0C
004ADFEB		E94C020000		jmp 004AE23C




Maintenant descendez de quelques lignes :


*Possible StringData Ref from Code Obj ->"Winboost 98 has been registred"
				       ->"successfully!"

004ADFF0		B8E8E24A00		mov eax, 004AE2E8
004ADFF5		E8DEC8F8FF		call 0043A8D8
004ADFFA		A100164B00		mov eax, dword ptr [004B1600]
...





En fait, lorsque vous entrez un code, une routine vrifie s'il est bon... Si c'est le cas, elle vous dirige vers "Winboost 98 has been registred successfully!", s'il est faux, vers 
"Wrong User Name and/or Registration Code". Ca donne a :


CODE BON : ---->  offset 004ADFF0

CODE FAUX : ---->  offset 004ADFC1


Vous avez devin l'astuce ? Il suffit de dire au programme de sauter en 004ADFF0 quand le code est faux :o) Vous entrer n'importe quel code et le soft l'accepte, vous enregistrant du mme coup :)

Il ne nous reste plus qu'a trouver cette fameuse routine...

Pour cela, remontez un peu (juste au dessus), vous trouverez :



*Referenced by a (U)nconditional or (C)onditional Jump at Adress :
|:004E242 (U)		
|
004ADFA5		8B45F4			mov eax, dword ptr [ebp-0C]
004ADFA8		8B55F0			mov edx, dword ptr [ebp-10]
004ADFAB		E8C45DF5FF		call 00403D74
004ADFB0		750F			jne 004ADFC1
004ADFB2		8B45F0			mov eax, dword ptr [ebp-10]
004ADFB5		BAA8E24A00		mov edx, 004AE2A8
004ADFBA		E8B55DF5FF		call 00403D74
004ADFBF		752F			jne 004ADFF0



La routine de vrification commence donc en 004ADFA5. Ensuite, elle compare le bon code a celui entr et selon cela, on saute en 004ADFC1 ou en 004ADFF0. Vous avez evidemment remarqu que ces adresses sont celles de "Wrong User Name and/or Registration Code" et "Winboost 98 has been registred successfully!". 

Et bien, vous allez me dire si vous avez suivi, il suffit de supprimer le jne 004ADFC1 et de transformer le jne 004ADFF0 en jmp 004ADFF0 : de cette manire, que le code soit bidon ou non, le prog sautera a "Bon code, merci pigeon". Et bien, vous avez tout a fait raison ! :o)




				_______________________




Part 5 : Dplombage
^^^^^^^^^^^^^^^^^^^

Bien, maintenant qu'on a trouv ce qu'il faut changer, il ne reste plus qu'a modifier le code. Seulement, comme vous l'avez surement remarqu, c'est pas avec Wdasm qu'on peut faire a... 
On va donc utiliser Hiew. Je vais vous donner une bonne astuce qui vous vitera des problemes : copiez le fichier wb98.exe dans un sous rpertoire de Winboost, et renommez le wb98hxx.exe, enfin, copiez ce dernier et collez le dans le rpertoire de winboost (le meme que wb98.exe) Ca vous vitera : * une erreur de partage de fichier si vous continuez a                                        utiliser Wdasm (bin oui, on peut pas modifier un file 
                                  en lecture par wdasm)
				*En cas d'erreur, vous n'avez qu'a recopier wb98hxx.exe dans                                   le repertoire (bien plus rapide que de rinstaller le soft
                                  :o)

Bien, vous ouvrez donc wb98hxx.exe avec Hiew, vous faites F4 et selectionnez "Dcode" pour voir le code ASM. Ensuite, et bien, cherchez la chaine d'octets a modifier en tapant F7. Pour chercher une chaine d'octets, tapez celle ci mais aussi 2-3 qui la precedent ou la suivent pour viter les erreurs. Ainsi, pour trouver 8B45F4, tapez aussi 8B55F0E8C45DF5FF (remarquez qu'il n'y a pas d'espaces)


Allez a l'offset 004ADFB0 :
Vous remarquez que l'instruction 750F (jne 004ADFC1) prend 2 octets (2*2 chiffres). Il y a donc 2 octets a patcher, ici, a supprimer. Donc, vous vous placez sur le 75 avec les touches fleches, vous faites F3 (edit), et vous ecrivez par dessus, 90 (ce qui revient en assembleur a l'instruction NOP, No Operation. Quand le pointeur passe sur cette instruction, il ne se passe rien...). Ensuite, vous faites de meme pour 0F, plac maintenant juste en dessous.

Le jne 004ADFC1 a donc maintenant disparu. Reste a patcher le jne 004ADFF0 en Jmp :

Plac vous a l'offset 004ADFBF, sur le 75, qui veut dire jne, et remplacer le comme vous avez appris a le faire  par EB, ce qui signifie JMP.


Maintenant que vous avez fini, faites F9 pour sauvegarder les changements et echap pour quitter Hiew. 
Lancez Wb98hxx.exe, faites "Register", entrer votre pseudo, un serial bidon, et, comme pas magie : "Winboost 98 has been registred successfully!" :o)
Maintenant, a l'ouverture du soft, un nag-screen d'1/2 sec vous rappelle l'auteur (comme pour presque tous les logiciels) avec crit en gros : "Registrered to *Votre Nom*" :)

Cool, non :o)



Voila, votre programme est crack. Il ne vous reste qu'a apprendre a faire un patch pour terminer ce tutorial... :)






				_______________________




Part 6 : Crer un fichier .exe avec Turbo Pascal
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ce fichier servira a patcher directement le fichier wb98.exe. Ainsi, vous pourrez "exporter" vos crackz... Tres utile tant donner qu'un crack.exe ne pese que quelques ko !
Passons a l'essentiel : il vous faut donc Turbo Pascal n'importe quelle version. Pour ma part, j'utilise la version 7, ne faisant que 2Mo, elle est tres pratique et fonctionne sous Windaube. Vous la trouverez partout sur le net...

Il vous faut donc indiquer quels octets changer a quel offset. Tout d'abord, comme vous l'avez sans doute remarqu, quand vous desassemblez un programme avec Wdasm, les offsets ne seront pas les memes qu'avec Hiew ou n'importe quel autre diteur hxa. Il vous faut donc trouver le "vrai" offset pour que le programme fait change les bons octets. Pour cela, clickez sur la ligne a modifier, dans Wdasm, et vous verrez dans la barre d'tat en bas, l'adresse vritable. 

Pour Winboost, vous voyez : a l'offset 004ADFB0, dans la barre d'tat : @Offset 000AD3B0h
L'offset a entrer dans la ligne de code sera donc : 000AD3B0
Si j'insiste, c'est parce que cela m'a pos beaucoup de problemes !!!

Passons aux lignes de code a entrer :



Uses Crt;

 Const A: Array[1..3] of Record {<-------- 3 octets a patcher}
                          A : Longint;
                          B : Byte;
                         End =
((A:$AD3B0;B:$90), {<--------------- A l'offset AD3B0, on change par un 90 (NOP)}
(A:$AD3B1;B:$90), {<--------------- A l'offset AD3B1, on change par un 90 (NOP)}
(A:$AD3BF;B:$EB)); {<--------------- A l'offset AD3BF, on change par un EB (JMP)}


Var Ch:Char;
    I:Byte;
    F:File;
    FN:file of byte;
    Size:longint;


Begin
 Writeln('Crack for Winboost98');
 writeln('');
 writeln('---------------------');
 writeln('');
 writeln('by Magic Raphoun');
 writeln('');
 Assign(F,'wb98.EXE'); {<-------------- Nom du fichier a patcher}
 {$I-} Reset(F,1); {$I+}
 If IOResult <> 0 then
    begin
    writeln('File not found!');
    halt(1);
    end;
 For I:=1 to 3 do {<---------------------- 3 bytes a patcher}
 Begin
  Seek(F,A[I].A);
  Ch:=Char(A[I].B);
  Blockwrite(F,Ch,1);
 End;
 writeln('');
 Writeln('File successfully patched!   Have a Fun !!! :o)')
End.


Voila, alors en fait, pour l'offset, on enleve les zeros a gauche. Tout ce qui est dans les writeln peux etre modifier pour mettre votre nom, etc...

Ensuite, vous compilez en faisant Alt+F9 et executez dans le repertoire qui contient wb98.exe

Ca y est, vous avez fait votre premier crack.exe !  Alors, c'tait si dur que ca ?
:o)





				_______________________





Part 7 : Remerciements
^^^^^^^^^^^^^^^^^^^^^^


Je remercie tous les auteurs de tutorials qui m'ont bien aid a apprendre la cracking. 


Je remercie aussi particulirement HarvestR dont le site (http://surf.to/harvestR) m'a beaucoup aid, grace aux tutorials prsents et aux outils.

Les Channels #cracking4newbies (Effnet) et #warez-france m'ont t trs utiles.

Enfin, tous les membres de Darkstar, groupe dont je fais parti...

Vous, pour l'interet que vous portez au cracking et parce que vous lisez ce file bourr de fotes d'orthographes ;o)