Nom : Transparence 99 version : Revision 1 (R1) Disponibilité :http://www.transparence.net Protections : Crypté et compressé avec Aspack 10.08 : Protections standarts (nag,trial) Cible : Transparence99.exe (261Ko) Tools : ProcDump 1.5 (http://ProcDump32.cjb.net) : Softice 4.0 : Windasm 8.93 : Brain Transparence 99 est un petit shareware qui permet de surveiller le temps passé sur le net et de calculer les tunes que vous donnez à france teleCoN .Ca peut toujours servir...Enfin pas vraiment... Le programmeur du soft a trouvé malin de compressé son exe avec aspack 10.08. C'est pas grave on va décompresser l'exe manuellement : ça fait tout de suite plus intelligent ! Allez trève de conneries ,passons de suite au crack. Step 1: On commence par prendre symbol loader et on ouvre transparence99 .Pas de pot !Softice ne se bloque pas comme d'habitude! Le prog se lance directement, sans donner la main à softice... Pas de panique, c'est juste un petit changement qui a été fait sur l'exe qui nous empêche d'avoir la main avec notre debugger. On prend Procdump et on va dans l'option 'PE Editor' et on click sur transparence99.exe et on va ensuite dans l'option 'Sections' . Vous avez maintenant toutes les sections de votre prog sous les yeux. Faites un click droit sur la section 'CODE' et choisissez 'Edit Section' .Normalement Procdump doit vous indiquer dans 'Section Characteristics' , C0000040 .Et ben ça c'est pas trop normal !Un exe a des carateristiques égales à E0000020 ... Remplacez donc C0000040 par E0000020 .Quittez Procdump et reprenez symbol loader .Ce coup ci,en ouvrant l'exe, Softice nous redonne bien la main... Step 2: Donc nous sommes au début du programme et forcément au début de la routine qui va décompresser l'exe.On va tracer le programme avec la touche F10 afin de trouver le point d'entré du prog décompressé .En traçant comme des malades avec la touche F10, on arrive rapidement à cette addresse : 004c3039 call 004C3348 004c303E MOV EAX,[EBP+0043AD70) 004c3044 ADD EAX,[EBP+0043AD84] 004c304A MOV [ESP+1C],EAX 004c304E POPAD 004c304F JMP EAX ------------- interressant... On arrive à l'adresse 4c304f .Ce jmp EAX me paraît bizarre surtout qu'il est précédé de trois calls qui font plein de manips sur la mémoire (vous avez pas remarqué les nouveaux octets qui apparaissent au fur et mesure que vous tracez le prog ?)... A mon avis le voilà notre point d'entrée du prog décompressé... Sous softice faite A 4c304f . Vous êtes dans l'éditeur ASM de Softice, à l'addresse 4c304f (qui est égale à jmp eax,je rappelle) . Tapez JMP EIP . Maintenant votre prog va faire une boucle infinie à l'addresse 4c304f : EIP étant l'addresse courante de votre prog (je sais pas si j'me fait bien comprendre) . Donc à cet instant notre prog est décompressé mais il n'a pas encore été exécuté puisque nous l'avons bloqué juste avant son point d'entrée . Pour récuperer le point d'entrée du prog décompressé, quand vous avez entré jmp eip dans l'éditeur asm, vous quittez ce dernier et toujours sous softice vous faites : ? EAX Normalement softice vous retourne la valeur suivante : 481c8c . Notez le dans un coin, c'est votre 'vrai' point d'entrée Step 2 : Maintenant que notre programme fait une boucle infinie une fois décompressé, on va pouvoir le dumper. On prend Procdump 1.5 . On voit tout de suite notre exe (Transparence.exe) dans la liste des tasks. Avant de le dumper , on change une option de procdump : il faut cocher l'option 'Rebuild New import table' (laisser les autres) . Pour dumper l'exe, on fait un click droit dessus et on choisit l'option 'Dump (Full)' . Tapez un nom pour votre dump (dump.exe par exemple) .Nous avons donc un exe décompressé mais avec un point d'entrée qui n'est pas bon .Pour remettre le bon point d'entrée, c'est pas très compliqué . Reprenez Procdump et allez dans l'option 'PE Editor' .Ouvrez l'exe que vous avez dumpé (Dump.exe pour moi) . Procdump vous indique sur ' l'image Base ' =00400000 . Nous,on avait noté comme point d'entrée 481c8c . Donc 481c8c-400000=81c8c=notre point d'entrée...Dans la case 'Entry point' de procdump vous entrez 81c8c .Voilà,vous avez votre exe décompressé avec le bon point d'entrée. Pour le vérifier lancez le : normalement il doit tourner sans problème... Step 3 On s'attaque maintenant aux protections standarts .On prend windasm et on desassemble le code (de l'exe que vous avez dumpé bien entendu...) .On regarde dans les 'String Data Reference' si on voit pas quelque chose d'interressant . Et en fouillant bien on trouve une 'string data reference' marquée 'Enregistrez vous !' .En cliquant deux fois dessus, on tombe sur cela : :00473B92 call 0043AB18 :00473B97 cmp byte ptr [00484A14], 00-------- héhéhé... :00473B9E jne 00473BDB----------------------- saut conditionnel qui nous fait sauter au dessus du nag... :00473BA0 call 00480490 :00473BA5 test eax, eax :00473BA7 jl 00473BB3 :00473BA9 call 00480490 :00473BAE cmp eax, 0000001E :00473BB1 jle 00473BDB * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00473BA7(C) :00473BB3 mov ecx, 00473C24 :00473BB8 mov edx, 00000002 :00473BBD mov eax, dword ptr [004849DC] :00473BC2 mov esi, dword ptr [eax] :00473BC4 call [esi+20] * Possible StringData Ref from Code Obj ->'Enregistrez vous !'-------- ce qu'on cherchait :00473BC7 mov ecx, 00473C4C :00473BCC mov edx, 00000003 :00473BD1 mov eax, dword ptr [004849DC] :00473BD6 mov esi, dword ptr [eax] :00473BD8 call [esi+20] En remontant un peu dans le code ,on arrive à l'addresse 473b97 .Il y a une comparaison entre l'addresse 484a14 et 0 . Si 484a14=0 le saut conditionnel qui suit (jne 473bdb en 473b9e) n'est pas effectué et nous envoie donc vers 'Enregistrez vous !'. Alors si 484a14=1 , saut conditionnel suivant effectué=utilisateur enregistré ... Il y a donc forcément un endroit dans le code où le programmeur met 484a14 à 0.S'agit de le repérer ,cet endroit... Step 4: Pour repérer l'endroit parmis les milliers de lignes du prog, il faut allez dans l'option 'Find Text' de Windasm .Et dans 'Search' on entre 144a48 . Je sais,j'ai rentré l'addresse à l'envers,mais en hexa il faut mettre l'octet de poids faible avant l'octet de poids fort (484a14=144a48) . Windasm va vous trouver plein d'endroit où l'addresse 484a14 est appelée. Nous on cherche un truc du genre MOV DWORD PTR [484a14],0 . Par conséquent les CMP et compagnies sont à mettre au placard. Et en insistant bien on arrive à ceci : :0047884D call 0046F85C :00478852 call 00481828 :00478857 test al, al :00478859 je 00478864 :0047885B mov byte ptr [00484A14], 01-----------on met 1 dans 484a14=utilisateur enregistré :00478862 jmp 0047886B * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00478859(C) :00478864 mov byte ptr [00484A14], 00-----------on met 0 dans 484a14=utilisateur non enregistré C'est pas très compliqué : à l'addresse 478859 il y a un saut conditionnel qui s'il est effectué, nous envoie à l'addresse 478864 : mov byte ptr [00484A14], 00 .Et juste avant on a un beau mov byte ptr [00484A14], 01 beaucoup plus interressant pour nous... On va donc virer le saut conditionnel en 478859 de façon à éxécuter le mov byte ptr [00484A14], 01.On prend notre éditeur hexa et on se rend à l'offset 77E59. Et on remplace le 74,09 par 90,90 . On relance transparence99 et on voit que dans l'écran principal du soft il y a marqué 'license accordée à' .Mais dans la boîte about il y a toujours marqué que nous ne sommes pas des utilisateurs enregistrés. On peut patcher cela aussi mais c'est pas nécessaire : si vous dépassez la période d'essai du soft (30 jours), un nagscreen s'affiche au démarrage et il n'est pas possible d'imprimer l'historique. Or si vous avancez votre horloge windows de 6 mois et que vous lancez votre transparence99 cracké, ce dernier ne vous affiche pas de nag et vous autorise l'impression de l'historique...Voilà,voilà,à bientôt pour de nouvelles aventures dans le MAnUaL UnPACkiNg... TaMaMBoLo