Nom : Civilization Call To Power Version : FrANçAiSe Editeur : Activision Protection :CD-check avec flags (drapeaux) / CD incopiable Cible : Civctp.exe (6280 Ko) Outils : Softice 3.24 / Windasm 8.93 Difficulté : crack de niveau B Un petit jeu pas trop mal fait bien qu'inférieur sur certains points au numéro 2...La protection est banale : CD-check . C'est un peu chiant car il est en plein milieu du jeu .De plus vous pouvez chercher la phrase dans les 'string data reference' de windasm vous ne la touverez pas (les programmeurs l'ont planqué) .On va donc utiliser Softice pour cracker ce jeu . On commence par lancer le jeu et on débute une partie.Le jeu nous demande alors d'insérer le bon CD dans le lecteur . A ce moment là, on fait 'surgir' softice avec CTRL D .Une fois sous softice on tape TASK pour voir tous les progs qui tournent en ce moment .On cherche bien sur notre jeu . On le repère, facilement : c'est CIVCTP (le nom de l'exe bien sur...) . Maintenant , on tape HWND CIVCTP pour voir toutes les APIs que le soft utilise .Normalement vous devriez avoir deux lignes marqué 'button' . Relevez les numéros à l'extrême de l'écran (sur la même ligne que 'Button' bien entendu) . Chez moi c'est 0F10 et chez vous probablement autre chose mais ça doit être un nombre de 4 chiffres . Maintenant on peut placer notre breakpoint . On va utiliser le breakpoint qui stoppe windows dès qu'un bouton de la souris est activé :c'est le breakpoint 0202 .Donc pour moi :BMSG 0F10 0202 . On sort de softice avec F5 et on clique sur l'icon 'Réessayer' de la boite de dialogue du nagscreen . Normalement softice à du se remettre en route .A cet instant on n' est pas dans le jeu .Il faut 'remonter' avec la touche F11 (a ne presser qu'une seule fois) . Et on trace avec F10 pour se retrouver dans le jeu . Pour savoir quand vous êtes dans le jeu ,c'est simple il suffit de regarder la dernière ligne verte dans l'écran de softice : le nom du prog ou vous êtes est inscrit sur cette même ligne (C'est 'civctp' bien sur) . Si vous avez fait tout comme y faut vous devriez arriver à ceci (je sais, c'est un dump de windasm ) : 00401FAE 33F6 xor esi, esi * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00401FAC(U) :00401FB0 85F6 test esi, esi :00401FB2 754A jne 00401FFE------------- Le saut conditionnel qui nous fait sauter le nag * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00401F64(C) :00401FB4 6835100100 push 00011035 :00401FB9 6A05 push 00000005 :00401FBB E880F1FFFF call 00401140 :00401FC0 83C404 add esp, 00000004 :00401FC3 50 push eax :00401FC4 6A0C push 0000000C :00401FC6 E875F1FFFF call 00401140 :00401FCB 83C404 add esp, 00000004 :00401FCE 50 push eax :00401FCF 6A00 push 00000000 :00401FD1 FFD3 call ebx----------------------------L'affichage du nag :00401FD3 83F802 cmp eax, 00000002-------------------ON a attérit ici avec Softice Avec softice on arrive en 401FD3 .c'est donc le call ebx en 00401FD1 qui nous balance le nag .On remarque qu'à l'addresse 401FB2 il y a un saut conditionnel qui nous fait passer au dessus si il est effectué .On va donc forcer le prog à sauter au-dessus du nag :on remplace le 75 par un EB (jump en hexa) ,ce qui obligera le soft à faire ce saut . Windasm nous indique que c'est l'offset 13B2.Faites la modif avec votre éditeur hexa et relancez le jeu .Perdu ! le nagscreen ne s'affiche plus mais le jeu ne se lance pas (on revient au menu) . Cela veut dire que le prog teste la présence duCD un peu plus loin .On prend symbol loader , on ouvre le jeu et on fout un breakpoint à l'addresse 401FB2 (qui est l'addresse du saut conditionnel qu'on a modifié (voir plus haut)) : BPX 401FB2 et on relance avec la touche F5 .On commence une partie et softice se bloque en 401FB2 . A partir de là on trace le prog avec la touche F10 .Rapidement on arrive à ceci : :00681B08 85C0 test eax, eax----- Et on reteste le cd :00681B0A 0F84A9000000 je 00681BB9------- C'est pas bon : on saute (retour au menu) :00681B10 8B155CA7AB00 mov edx, dword ptr [00ABA75C]--sinon :00681B16 8B0DA01DA200 mov ecx, dword ptr [00A21DA0] on continue :00681B1C 57 push edi le chargement :00681B1D 56 push esi :00681B1E 8B5204 mov edx, dword ptr [edx+04] :00681B21 8B01 mov eax, dword ptr [ecx] C'est à cet endroit que le prog reteste le CD :Si EAX=0 c'est pas le bon CD et inversement si EAX=1,bon CD. De plus si EAX=0 le saut conditionnel est effectué .Il suffit donc de virer ce saut pour que tout roule.On remplace donc le je 681bb9 par 6 nops(90,90,90,90,90,90) On relance et ce coup-ci le check est passé .... Pour ce crack ,rendez vous aux offsets : 13B2 METTRE EB 280F0A METTRE 90,90,90,90,90,90 TaMaMBoLo