COMMENT CRACKER UN DCU
![DrWatson's profile picture](https://www.neperos.com/profile_images/22442b//DrWatson_oj7wwi98be9b5e74.jpg)
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 Exécutable... Nous allons cracker un DCU (Un DCU c'est une sorte de fichier créer 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 différente 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 théorie 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 Exadécimal)
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 Démarer/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 Avancée 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 désasembler directement EffBmp.dcu ne marche pas tres bien et que DExtraPack4.bpl fasse planter W32dasm, nous allons créer un .exe utilisant un controle de ExtraPack (Nimporte lequel...) et le désasembler. 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 redésasembler 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'Éxécutable. 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 différente 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 dépanner ;))
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>
Comments