                          ~~~~~~~~~~~~~~~~~~~~~~~~           
                           COMMENT CRACKER UN DCU
                          ~~~~~~~~~~~~~~~~~~~~~~~~
                                  08/31/99
                               Par Th3 KiinG
                              KiinG@altern.org




1- Introduction

Bienvenue dans mon premier cours de cracking. Aujourdhui nous allons 
nous attaquer a une sorte de fichier autre que les Excutable... Nous 
allons cracker un DCU (Un DCU c'est une sorte de fichier crer par 
Delphi qui contient un .PAS Compil). Dabitude, les autheurs de 
composent pour Delphi ne veule pas distribuer le Code Source de leur 
controle alors c'est pour cette raison qu'il nous donne juste la 
version Compil.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2- *IMPORTANT*

*Comme vous avez du le remarquer, il y a 6 *version* (C'est pas 
 vraiment des version diffrente de Extra Pack, c'est juste quel ont 
 t adapter a une version particuliere de Delphi ou de C++ Builder) 
 dans ce tutorial, j'ai cracker Extrapack fait pour Delphi 4. En 
 thorie toute les version devrait etre a peu pres pareil mais j'ai 
 pas tester....


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3- Info

Soft a Cracker: EXTRAPACK (http://www.evgesoft.com/dev/)

Outils: W32dasm & Hex Workshop (ou nimporte quel autre diteur 
        Exadcimal)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3- Go !!

Bon, Commencons par Installer le Composent et de regarder quel est la 
protection... Arghhhhhhhhh !!! Des Nag Screen !!! 

Note: Les NaG Screen n'aparaisse que quand Delphi est Fermer...
 
Sa pourais etre bon de Noter le msg du Nag Screen... Apres, aller dans 
Dmarer/Rechercher/Fichiers ou Dossiers et rentrer le Path ou vous avez
installer ExtraPack. Dans mon cas sa donne: C:\Extrapack\lib.d4 mais 
si vous cous cracker ExtraPack pour delphi 3 ben vous allez a remplacer 
le lib.d4 par lib.d3... Cliquer sur l'onglet Avance et dans la Textbox 
nomm "Contenant le texte" marquer le msg du Nag Screen de taleur 
(This application makes use of unregistered...). Bon Apres avoir cliqu
 sur Rechercher vous devriez avoir trouv 2 fichier:

DExtraPack4.bpl
EffBmp.dcu

Maintenant on sais dans quel fichier il va falloir Patch :o)

Vu que dsasembler directement EffBmp.dcu ne marche pas tres bien et 
que DExtraPack4.bpl fasse planter W32dasm, nous allons crer un .exe 
utilisant un controle de ExtraPack (Nimporte lequel...) et le 
dsasembler. Apres on clique sur le bouton "String Reference pis on 
cherche pour de quoi qui resemblerais au msg du nag (This application 
make uses of...) Quand on a trouver, on double click dessu
et on est suposer de voir de quoi qui ressemble a sa:


* Possible StringData Ref from Code Obj 
                            ->"This application makes use of "
                            ->"unregistered shareware components. "
                            ->"You may want to inform the developer "
                            ->"so that properly registered components"
                            ->"may be included.More information "
                            ->"on http://www.evgesoft.com/dev/ "
                            ->"and e-mail:dev@evgesoft.com"
                                  |
:00448670 BA90864400              mov edx, 00448690
:00448675 A10CEE4400              mov eax, dword ptr [0044EE0C]
:0044867A 8B00                    mov eax, dword ptr [eax]


Si vous voyer pas ben remonter un peu... Bon, maintenant il ne nous 
reste plus qua trouver le call qui envoille le programme ou on est.
On n'a qua remonter un petit peu pour voire plein de patente de meme:


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

:0044864C 6804EB4400              push 0044EB04

* Reference To: user32.FindWindowA, Ord:0000h

:00448651 E8EADAFBFF              Call 00406140


On voit tout de suite qu'ici le programme utilise l'API FindWindow (Le 
A a la fin c pour dire que c du 32 bit...) pour voire si Delphi est 
lanc. Si il trouve Delphi et bien il n'affichera pas le Nag Screen 
mais si il ne le trouve pas et bien il va nous faire chi avec son 
putain de Nag... On pourais toujours Nopp (Sa veu dire remplacer une 
instruction par un Nop (90 en Hexa)) tout les Saut mais sa serait une 
perte de temp car il y a une facon beaucoup plus facile. Nous n'avons 
qua remonter encore un peu (pas mal en faite) jusqua temp de trouver 
les lignes suivante:


* Referenced by a CALL at Address:
|:004487B5                       ;Note: L'adresse peut changer...
|:004485B4 55                      push ebp
:004485B5 8BEC                    mov ebp, esp
:004485B7 51                      push ecx

* Possible StringData Ref from Data Obj ->"Delphi 2.0"


Comme W32dasm nous le dit, c'est un Call qui appele le Nag... Donc, 
Pour enlever le Nag nous n'avons qua ajouter un Ret juste en dessous 
du Call Reference. On ouvre notre diteur Hexa et on change la byte 55 
par  C3 (Le code Hexa pour un Ret). Apres avoir modifi le .exe et 
apres l'avoir redsasembler sa devrait nous donner ceci:


* Referenced by a CALL at Address:
|:004487B5                       ;Note: L'adresse peut changer...
|:004485B4 C3                      ret
:004485B5 8BEC                    mov ebp, esp
:004485B7 51                      push ecx

* Possible StringData Ref from Data Obj ->"Delphi 2.0"


Maintenant on peut lancer le .EXE sans jamais voire le Nag Screen !!! 
Mais un vrai cracker ne s'areterais pas la... Il irais aussi Patcher 
les 2 autres fichiers (vous vous rapeler de DExtraPack4.bpl & 
EffBmp.dcu que je vous ai fait chercher toutaleur ??). Vu que Delphi 
ne fait que Copi le .DCU dans le .exe quand on Compile on devrait 
retrouver le meme code dans les DCU que dans l'xcutable. Allons 
voir, on ouvre DExtraPack4.bpl avec notre diteur Hexa et on recherche 
un bout de code qu'on a vu dans W32dasm.


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=ATTENTION=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Petite Paranthese:

Bon je suis sure qu'il y a du monde qui me suive pas quand je dit de 
rechercher un bout de code qu'on a pris dans W32dasm. C'est pourtant 
simple !!! Vu que les offset & Code Data ne sont pas pareil dans 
W32dasm & Hex Workshop nous devons prendre la valeur hexa d'un bout de 
code (a peu pres 5 bytes...) et la rechercher dans Hex Workshop. 
Exemple:


          ------------             ----------------
:004485B4 |55        |             | push ebp     |
:004485B5 |8BEC      |             | mov ebp, esp |
:004485B7 |51        |             | push ecx     |
:004485B8 |6810EB4400|             | push 0044EB10|
          ------------             ----------------
                1                           2

Tout ce qui est dans l'ensemble 1 ce sont les valeur Hexa des 
Instruction Asm Contenue dans l'ensemble 2

Donc, Pour aller a la place ou est W32dasm dans Hex Workshop vous devez
recherchez (avec la Value Hex bien sur...):

558BEC6168

Note: Ares avoir trouver une place ou il y a les bytes que vous 
recherchez, n'oubli pas de rechercher encore plus loin parceque ce 
n'est pas rare qu'il y ait les bytes que vous recherchez a 2 ou 3 place
diffrente dans le program...

Fin de la Petite Parenthese.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


Apres avoir trouver ou il faut Patcher, Il ne vous reste plus qua 
remplacer la byte qui contien 55 par C3. Sa devrait donner quelque 
chose dans ste genre la:


 http://www.evge
soft.com/dev/ an
d e-mail: dev@ev
gesoft.com..U..3 *Ici qu'il faut Patcher 00558B en 00C38B (en Hexa)
.Uh..D.d.0d. ...
.D.3.ZYYd..h..D.
........]....-..


Et apres vous devez refaire la meme chose dans le fichier EffBmp.dcu:


/www.evgesoft.co
m/dev/ and e-mai
l: dev@evgesoft.
com..U..3.Uh%... *Ici qu'il faut Patcher 00558B en 00C38B (en Hexa)
d.0d. ......3.ZY
Yd..h,..........
.]..-.....s.....


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4- Conclusion


Bon... C'est fini, en principe vous ne devriez plus jamais voire cette 
maudite Nag Screen (Magique non ??) et vous devriez etre capable de 
cracker tout les composent qui sont fait dans le meme genre !! 
J'espere que vous avez compris (et appris :o) de quoi dans ce tutorial 
la pis que vous vous ete pas endormi en le lisant :))

Je tien a remercier tout le monde du channel #Crack.fr (UNDERNET) pour 
toute les fois qu'il m'on dpanner ;))

Si vous avez trouv des erreur (pas dortograffe parceque la sa finirais
plus...) dans ce tutorial ou bien si vous voulez juste m'envoiller un 
commentaire, proposition... ben crivez moi !! Meme si c juste pour me
dire que vous avez lus mon tut !!


Th3 KiinG
<kiing@altern.org>