Salut! Deuxieme texte. Aujourd'hui le crack ! Je suis loin d'etre une elite en crack mais je commence a me debrouiller.Mais j'ai eut la chance de commencer avec un vrai pro qui fait de la prog en assembleur et qui crack tout et n'importe quoi en deux temps trois mouvements. Et c'est tres cool de l'avoir derriere soi pour etre guide. Donc quelque petits conseils Tout d'abord l'outillage/ Personnellement j'utilise presque exclusivement Softice de NuMega. (Se trouve facilement sur le web en version 3.24 ou + recement v 4.0, mais la 3.24 est tres sufisante !) Il vous faut aussi un editeur HEXA Vous trouverez facilement les conseils pour l'instalation dans les URL a la fin du texte; Donc je ne m'etendrais pas dessus De meme vous trouverez de nombreux cours de cracking sur le net (Faites une recherche sur yahoo!france pour trouver les textes en francais !!) Voyons maintenant les cibles. Pour vos debuts il faut des targets faciles. nous allons donc voir le schema de protections par date. (C'est a dire un prog qui ne s'execute que 30 jour puis qu'il vous dit qu'il faut payer ) Ce sont les schemas les + simple et il est imperatif de commencer par ca !)Attention certain sont quand meme coton METHODE Donc vous avez trouver le prog qui vous plait mais qui est limite en temps. Premiere chose voir comment le prog fonctionne pour voir toute ces fonctionnalitees. Puis ensuit bloquer le prog. Pour ce faire il suffit de changer la date de votre becane pour qu'elle depasse le temps alloue d'utilisation (Pour ceux qui ont pas compris si le prog ne fonctionne que 30 jours avancez la date d'un an ca devrais suffire :=) ) Relancez le prog. Une jolie boite de dialogue devrair s'afficher pour vous dire que il faut passer a la caisse etc etc ...Votre prog est bloque et le retour a la bonne date peut suffire a le debloquer. Mais nous allons le laisser bloque pour pouvoir le cracker QUELQUE EXPLICATIONS AVANT TOUT Un prog execute un certain nombres de sous prog les uns a la suite des autres ou en fonction d'entrees au clavier par exemple. Dans le cas qui nous interresse le prog se lance puis verifie la date et si celle ci est depasse affiche la boite "trop bete faller payer !" Simplifions au maximun et voyons en schema comment ca peut marcher prog |__sous prog1 |_____sous prog2 |_____sous prog3 |_____sous prog4 |_____verif date |__si ok continue |__sinon bad boy ! OK ? le prog se lance, effectue un certain nombre de sous prog (routines disent les pros :)), verifie la date et en deduit la conduite a tenir. RQ le nbres de routines peut considerablement varier avant d'arriver a la date) Maintenant qques notions d'assembleur (He oui il faut en passer par la !) une routine en assemnbleur vous allez la voir sous Softice sous la forme CALL 00000 ; Un call est donc une routine qui peut contenir d'autre call c'est a dire d'autres routines elles contenant d'autres etc etc ... Developons... PROG |___call xxxx | |___call xxxx | |__call xxxx bien sur entre chaque call il y a d'utres | |__call xxxx instructions mais qui ne nous interesse pas | pour le moment... |___call xxxx |___call xxxx | |__call xxxx etc... etc... XXXX represente l'adresse du call appelle En complet vous devriez trouvez un truc de ce genre sous Softice: 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 004ADFF0 B8E8E24A00 mov eax, 004AE2E8 004ADFF5 E8DEC8F8FF call 0043A8D8 004ADFFA A100164B00 mov eax, dword ptr [004B1600] 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 Mais ceci ne correspond pas au schema plus haut. EN effet sous Softice les routines ne sont pas devellopes a l'ecran. nous n'avons que l'entree de ces routines (Ce n'est pas tout a fait vrai mais ceci ne nous interesse pas, les pro me pardonneront) Donc le prog s'affiche sous SI dans la forme suivante: PROG |___call XXXX Les blancs du schema sont remplis avec differentes instructions. mais pour le moment elles ne nous interessent pas sauf les JNE |___call XXXX JE JMP |__call XXXX |__call XXXX | | |___call XXXX |___call XXXX |__fin Dans l'exemple que je montre sur la droite il y a un instruction importante JNE c'est un saut vers un adresse comme par exemple le "bad boy vous avez depassez la date" Ettofons un peu notre schema PROG |___call XXXX | |___call XXXX | |__call XXXX | |__call XXXX (Verifie la date) | |_________________jne XXXX bad boys | |___call XXXX |___call XXXX | |__call XXXX |__Bad Boy !! |__fin etc... etc... Pourquoi Jne "bad boys" ? Parce que JNE veux dire en assambleur J_ump if N_ot E_qual c'est a dire sauter si pas egal par exemple a la date :) Reprenons: Le prog se lance arrive a la verif de date et comme elle est differente de la date max le prog saute a la fin et affiche bad boys Et ce que vous comprennez ? Pour memoire JNE jump if not equal JE jump if equal JMP jump Le but de la manip est donc de faire en sorte que le prog ne passe pas par la verif de date. Developons encore notre schema PROG |___call XXXX | |___call XXXX | jne XXXX | |__call XXXX | je XXXX | |__call XXXX (Verifie la date) | |_________________jne XXXX bad boys | |___call XXXX |___call XXXX | |__call XXXX |__Bad Boy !! |__fin etc... etc... Comme nous le voyons dans le schema il existe d'autre saut dans le prog JE etant J_ump if E_qual. Si nous en utilisions un pour passer la verif de la date ? En fait toute l'astuce consiste a trouver le bon saut pour passer la verif de la date Je me fais bien comprendre ? Maintenant que le schema est suppose connu passons a l'aplication. Nous allons cracker Quick View Plus 5.0. On trouve facilement une version de demo sur le web ou sur le site XXXXXXXXXXXXXXXXXXXXXXXXXXX C'est un prog qui permet de voir toute sorte de fichier avec le clic droit de la souris. Tres pratique et tres facile a cracker. Pour la suite de ce cours il est suppose que vous avez installer et configurer Softice... Tout d'abord on lance le prog (Clic droit sur un fichier et Quick View PLUS) OK Maintenant on va bloquer le prog (Version limite a 30 jours) On avance donc la date de sa becane de deux mois ou plus comme vous voulez mais surtout + de 30 jours :) On relance le prog et la il nous affiche "this trial edition of quick view has expired" C'est tout bon on va pouvoir commencer a travailler :) on ouvre donc le Symbol Loader de softice (Dans le menu demarrer) et on ouvre le module QVP32.EXE dans le repertoire QuickViewPLus/Program puis on fait Module/Load. La fenetre Softice (SI) s'ouvre. _____________________________________COMMANDES__________________________________________________________ A partir de maintenant nous allons utiliser les touches F10 F8 F5 F10 execute le prog ligne par ligne dans SI sans rentrer dans les calls EXEMPLE |PROG | |___1 call XXXX | |___1A call XXXX | | jne XXXX | | |__1 AA call XXXX | | | | | je XXXX | | |__1 AAA call XXXX (Verifie la date) | | |_________________jne XXXX bad boys | |___1B Call XXXX | |___2 call XXXX |___3 call XXXX | |__3 Acall XXXX |__Bad Boy !! |___4 call XXXX |___5 call XXXX |__fin etc... etc... F10 va donc faire : prog, 1 call, 2 call, 3 call etc etc ... F8 va rentrer dans un call. On continura avec F10 a tracer le prog EXEMPLE dans le schema precedent si on fait F8 quand on arrive sur le call 1 on arrive sur le call 1A puis avec F 10 on arrive sur le call .... 1B Capito ? (Si pas compris reprendre depuis plus haut dans le cours :) ) F5 execute le prog jusqu'au prochain point d'arret....... "POINT D'ARRET" qu'est ce que c'est ? Pour avoir un point d'arret il suffit de double cliquer sur une ligne du prog dans softice. Elle passe en bleu et SI s'arretera dessus pendant l'execution du prog. Pour l'effacer il suffit de double cliquer dessus et la ligne repasse en blanc. ________________________________________________________________________________________________________ Donc nous sommes dans la fenetre SI. Faisons F10 la ligne en surbrillance descend. Continuons a faire F10 jusqu'a ce que le prog nous affiche le message de depassement de date. On clique sur Exit et on revient automatiquement sous SI juste en dessous d'un call. Plaçons un PTSDA dessus puis F5.le prog se termine et l'on retrouve la fenetre du loader on reload le module (Module / Load ) on retombe sous SI. Maintenant faites F5. Normalement le prog doit s'arreter sur le PTSDA que vous aviez placer precedement.Si non recommencez depuis le debut. Voila ce que vous devriez trouver pour le 1 er PTSDA: 015F 0040267F PUSH 00 015F 00402681 PUSH 00 015F 00402683 CALL [KERNELL32! Get ModuleHandleA] 015F 00402689 PUSH EAX 015F 0040268A CALL 00401640 <-----le prog doit s'arreter ici 015F 0040268F MOV [EBP-60] ,EAX 015F 00402692 PUSH EAX 015F 00402693 CALL 00403420 015F 00402698 JMP 004026BB 015F 0040269A MOV EAX, [EBP-14] 015F 0040269D MOV ECX, [EAX] 015F 0040269F MOV ECX, [ECX] Comme je l'ai expliquer plus haut nous sommes donc arriver dans le 1er call c'est a dire celui qui appelle la fonction de verification de date. Plus exactement ans le 1 er call qui contient la routine de verif de date, mais ce n'est pas la routine elle meme. On fait F8 pour rentrer dans la routine. Puis F10 pour tracer le prog pas a pas jusqu'au message d'avertissement. On clique alors sur Exit on retombe sur SI. On pause un BPX sur le call trouve et on relance le prog avec le loader. Avant de continuer progressons un peu dans la connaissance de SI. Tout d'abord l'interface L'ecran est decompose en plusieures fenetres Nous allons nous interresser aux deux du bas. Elles sont separees par une ligne generalement vertesur la quelle s'inscrit un texte. Dans notre cas: ______________________________________QVP32!.text+167d_________________________________________________ Le nom QVP32 est important car c'est le nom de notre programme. Nous sommes bien au bonne endroit. Si dans vos cession de crack vous voyez un nom du style USER32 USER ou KERNEL, vous etes allez trop loin, c'est a dire que vous etes dans les entrailles de zindozs. Votre solution se trouve plus haut dans votre prog. Dans le cas qui nous interresse vous devriez mettre 4 BPX c'est a dire avoir 4 Call Comme je suis gentil je vous donne les adresses 1er 0040268A 2ieme 00401782 3ieme 20805A67 4ieme 2080594C le dernier call se presente de la facon suivante CALL [USER 32!DialogBoxParamA]. Cela veut dire que le texte de notre ligne de separation en bas de la fenetre SI va faire apparaitre USER32! et que donc nous serons allez trop loin; Par contre si l'on arrive a sauter ce call normalement c'est bon le prog se lancera :)))) FUN !!! MAIS OU TROUVER LE SAUT QUI NOUS INTERESSE ? Reprenons un petit cour d'assembleur ..... En assembleur les saut se presentent comme je vous l'ai deja dit sous la forme : JE J_ump if E_qual | JNE J_ump if N_ot E_equal |SAUT CONDITIONELS (Ne s'effectue que si la condition JZ J_ump if Z_ero | est remplie JNZ J_ump if N_on Z_ero | JMP J_ump <--SAUT INCONDITIONNEL S'effectue tout le temps (Des que le prog passe dessus) L'adresse de notre dernier call est 208594C Nous allons donc chercher un jump qui nous ammenne apres cette adresse.(Nota Au minimum 208594D ). Donc avec le loader on relance le prog et l'on fait 3 fois F5 pour arriver a notre avant dernier call. Puis F8 pour rentrer dedans et enfin on trace avec F10 pour trouver un jump qui saute apres 208549C. Je suis clair ? Quand on trouve une instruction JZ JNZ JE JNE on s'arrete. Tout au bout sur la droite de notre ligne en surbrillance il y a l'etat du jump. Si il ne s'effectue pas il y a marque "No Jump". Si il s'effectue il y a marque "Jump" plus une fleche vers le haut ou vers le bas si c'est vers le haut il y a de forte chance que nous soyons dans une boucle si c'est vers le bas voyons si ce ne serais pas en dessous de notre call.... Un peu de recherche et nous trouvons ceci : 015F 20805915 JNZ 2080591E Jump 015F 20805917 MOV ESI,EBP 015F 20805919 JMP 208059FC 015F 2080591E MOV EAX ,[ESP+0000013C] Le JNZ saute par dessus un jump qui va en dessous du call ! Vous me suivez ? Donc si le JNZ ne saute pas nous irons en dessous du call qui nous embete (BAd Boys !). Nous allons donc inverser ce JNZ en tappans R FL Z dans la ligne de commande tout en bas de la fenetre SI en respectant bien les espaces SVP ! On appui sur la touche Enter puis on fais F5 (La touche pas dans la ligne de commandes !!!! :) ) Et la miracle le prog se lance !!!!! Mais revint tout de suite sous SI au meme endroit c'est a dire sur notre jnz on refait R FL Z et le prog est lance et s'affiche dans la barre de taches au bout a droite Ca y est votre prog est craque !!! Mais uniquement en memoire :(((((( C'est a dire que si vous le quittez et le relance il sera a nouveau inoperant. Nous allons donc le rendre operant en modifiant le pro grace a un editeur Hexa decimal. Premiere action tapper CODE ON dans la ligne de commande de SI. Votre affichage devrais etre modifeet se presenter de la facon suivante: 015F 20805910 837C241002 CMP DWORD PTR [ESP+10] ,02 015F 20805915 7507 JNZ 2080591E JUMP 015F 20805917 8BF5 MOV ESI,EBP 015F 20805919 E9DE000000 JMP 208059FC 015F 2080591E 8B84243C010000 MOV EAX ,[ESP+0000013C] C'est le code hexa decimal qui est apparu. Notons sur un bout de papier la suite qu'il y a avant jnz et apres en incluant la ligne JNZ Vous devriez avoir un resultat de ce style: 837C24100275078BF5E9DE000000 Plus vous en noterez moins vous aures de chance de vous tromper. Une Fois que vous avez noter cette chaine effacez tout les BPX en tappant BC * dans la ligne de commande.Dans votre editeur hexa ouvrez le fichier QVP32.EXE. Passer l'affichage en hexa et rechercher la chaine de caractere que vous avez noter. . .. ... .... ..... ...... ....... ........ ......... Comment ca vous ne trouvez pas ?! Essayions une Dll tiens QVP.dll par exemple FAite la meme manip. Ca y est vous avez trouve votre chaine de caracteres ? Alors remplacez 75 par 74 enregistrez et relancer Quick View plus normalement. CA MARCHE !!!! FELICITATION VOUS AVEZ CRACKER VOTRE PREMIER PROG. Bien d'autres suivront j'en suis sur. :))) REMARQUE FINALE Ceci est le premier tut que j'ecris il est destine au vrai debutant qui j'espere auront compris. Il nessecite neamoins de se documenter un peu par soi meme. SI est un prog tres puissant qui demande de lire de la doc pour en saisir toutes les subtilites. D'autre part pour complet que se veuille ce tut il n'est certainement pas parfait. Si ca ne marche pas relisez le d'abord en entier en suivant pas a pas mes conseilset en essayant de comprendre ce que vous faites et non en repompant betement !. Il est tres facile de trouver sur le net de tut en francais. lisez tout ce que vous pouvez et essayez tout mais soyez humbles !. Si mon cours vous a permis de cracker QuickView Plus il ne vous a pas appris a tout cracker; c'est en crackant qu'on devient craker !! Perseverez et n'hesitez pas a me posez des question sur le chan de Warez ANgels BON CRACK A TOUS ++knell++