ú ú - -- A C i D B U R N - P R O D U C T i O N S -- - Ü ú ú ° Ü ° Ü Ü Ü ° Ü° ° Ü Ü ÞÛÜ Ü ° ÜÛÛ²ßßÛÛÛÝܲÛßßßÛÛÛÝÞÛÝÞÛÛÛßßßÛ²ÜÞ²ÛÛßßÛÛÛܰܲÛÝ ßÜ ÞÛÛÛßßÛÛÛÜ°²ÛÛÜ ÞÛ²Ü ÛÛÛÝ °²ÛÛÝÛÛÛ °ßßßß ßßß ÛÛÛ ° ÛÛÛÝÛÛÛ ÞÛÛ²°²ÛÛ ° ÛÛÝÞÛÛÛÝ ÞÛÛ² ÛÛÛßÛÜÛÛÛÝ ²ÛÛßßßÛÛÛÝÛÛÛÝ° °²ÛÝÛÛÛÝÛÛÛ ° ÛÛÛÝÛÛÛßßßÛÛÜÞÛÛÛ ° ÛÛÛÞÛÛÛßß²ÛÛÜ ÛÛÛÝ ßÛÛÛÝ °²ÛÛÝ° ÛÛÛ ²ÛÛÝ° ÛÛÛÝÛÛÛ°²ÛÛ °ÞÛÛÛÝÛÛÛÝ ÜÛÛÛÞÛÛÛÝ°°²ÛÛ°²ÛÛÝ ÞÛÛÛÝÛÛÛÝ° ÛÛÛÜ ÞÛÛÛÝ° ÛÛÛÞÛÛÛÝ° ÛÛÛÞÛÛ²ÞÛÛÛ °ÞÛÛÛ°²ÛÛÝ°ÞÛÛÛÞÛÛÛÝ ÞÛÛÛÝÛÛÛÝ° ÛÛÛÝÛÛÛÝ° ÛÛ²ßÜ ÞÛÛÛÝ° ÛÛÛÞÛÛÛÝ° ÛÛÛÞÛÛ²ÞÛÛÛ °ÞÛÛÛÞÛÛÛ °ÞÛÛÛÞÛÛÛÝ ÞÛÛÛÝÛÛÛÝ°°²ÛÛ ²ÛÛÝ° ÛÛÝ ÞÛÛ² °ÞÛ۲߱ÛÛÜÜÜÛÛÛ±ÛÛ²ÞÛÛÛÜÜÛ۱߲ÛÛÛÜÜÛÛÛÛßÛÛÛÛܲÛÛÛß²Û±Ü ÞÛß °²ÛÛÛ ÞÛß ß ß° ß ß ß ß ß ß ° ß ß ß ú ú - -- A C i D B U R N - P R O D U C T i O N S -- - ú ú SRT - CRO Protection Commercial: Unpacker un executable protegé par Armadillo v1.75a Tutoriel par ACiD BuRN [Immortal Descendants] (05 Novembre 1999) tout d'abord voici une décryption d'armadillo trouve sur leur site officiel: ------------------------------------------------------------------------------------------- Armadillo is a powerful software protection system. It wraps around your program like an armored shell, defending your work from pirates and program crackers with state-of-the-art encryption, data compression, and other security features. It also allows you to add a complete software protection and registration-key system to your existing programs in five minutes or less, with no changes to your program's code! And it works with any language that produces a 32-bit Windows EXE file. ..... Armadillo modifies your program's EXE file, using a key you select and state-of-the-art compression and encryption tools to foil any attack relying on a decompiler -- all they can decompile is the code for the Armadillo decompressor itself, not your program. Your program is decrypted in memory when it is run, after Armadillo is satisfied that it's safe to do so and that the user has a valid license (more on licenses below). This, along with some advanced snoop-detection functions, prevents most patch/bypass attacks -- it would require far more knowledge (and a great deal more work) to patch your program while it's encrypted. ------------------------------------------------------------------------------------------- ca a l'air cool ;P (du moin ca avait heheheh) 0)Introduction: Bon, en passant sur le site officiel ou m'on peut donwloader la version shareware d'Armadillo , j'ai vus toutes les options possibles de ce petit truc et je me suis dis que j'allais voir ca d'un peu plus pres... Donc, apres l'avoir installe , j'ai pris calc.exe et je l'ai crypter avec les options par defaults, pour voir un peut la bete ;p 1)Lancer l'executable avec Soft ice charge: Comme vous pouvez vous en douter , les executables proteges disposent d'un anti soft-ice Il y a en fait 3 detections : - la premiere est tres connu meltice.(Createfila \\.\SICE, \\.\NTICE and \\.\SIWDEBUG) - la seconde est connu sous le nom de:IsDebuggerPresent. on trouve l'appel a l'API getprocaddress. - et pour finir , c un petit int3h :p Comment bypasser toutes ce conneries ?? il va falloire lancer l'executable avec le loader de soft ice.Donc charger le fichier avec le loader , et lancer le calc.exe. Soft ice doit revenir et vous devez surement voir des petits: INVALID A ce moment la , mettez votre BPX Createfilea. pressez F5 3 fois et vous arrivez sur les checks , qui ressemblent a ca: 025F:10003895 FF1520A00010 CALL [KERNEL32!CreateFileA] 025F:1000389B 83F8FF CMP EAX,-01 025F:1000389E 7409 JZ 100038A9 <-- ici changer le en jmp 100038A9 025F:100038A0 50 PUSH EAX 025F:100038A1 FF1538A00010 CALL [KERNEL32!CloseHandle] 025F:100038A7 EB0B JMP 100038B4 025F:100038A9 FF1544A00010 CALL [KERNEL32!GetLastError] 025F:100038AF 83F802 CMP EAX,02 025F:100038B2 7404 JZ 100038B8 025F:100038B4 C645FF01 MOV BYTE PTR [EBP-01],01 025F:100038B8 8B4604 MOV EAX,[ESI+04] il faut changer le JZ 100038A9 en JMP 100038A9 pour cela il suffit de se position a la ligne du JZ , et ensuite tapez sous soft ice: A "presser entrer" JMP 100038A9 "presser entre" "presser echap" et voila , la ligne est devnu un jump , maintenat on trace avec F10 , et on execute le CALL [KERNEL32!GetLastError] , apres l'avoir passe on voit un CMP EAX,2. En gros il faut que EAX = 2 pour que tous soit OK , sinon c pas bon.. regardez dans EAX , vous verrez EAX = 2 donc c bon. Pressez F5 , on retrouve la meme chose , comparaison EAX , 2 , c'est toujours bon donc tous est OK. On presse une dernier fois F5 pour le dernier check , mais cette fois au moment du CMP EAX,2 on voit EAX = 32. Ce n'est donc pas bon , il faut mettre EAX a 2. pour cela dans soft ice , tapes: R EAX 2 et voila EAX passe a 2 , la comparaison EAX a 2 est donc bonne , tous est OK. Une fois ceci fait , on va s'occuper du 2eme check de soft ice.Il se sert de GetProcAddress , Donc mettez un breakpoint dessus , et pressez F5. il suffit de presser une fois F12 pour sortir du call , et vous devez rencontrer quelque chose comme ca: 025F:XXXXXXXX XXXXXXXXXXXX CALL [KERNEL32!GetProcAddress] 025F:100038ED 3BC3 CMP EAX,EBX 025F:100038EF 740A JZ 100038FB <--- faites un R FL Z 025F:100038F1 FFD0 CALL EAX 025F:100038F3 85C0 TEST EAX,EAX 025F:100038F5 7404 JZ 100038FB 025F:100038F7 C645FF01 MOV BYTE PTR [EBP-01],01 025F:100038FB 56 PUSH ESI 025F:100038FC FF1548A00010 CALL [KERNEL32!FreeLibrary] Vous voyez surement CMP EAX,EBX et le saut conditionel juste apres.Ici il faut inverser le Zero Flag et le programme va pourvoir s'executer normallement... pour inverser le zero flag , i l suffit de taper: R FL Z sous soft ice une fois que vous etes a la bonne ligne. A partir de maintenant , il suffit de tracer avec F10 , commet un fou , et nous allons voir le fameux int3h arriver ;) Mais avant , etant donner que la version que j'ai utiliser de armadillo n'est pas enregistrer (pas encore ;p ) nous allons voir une messagebox qui nous le rappel Donc cliquez sur le boutton OK , et continuez a tracer.. Cette nag screen est tres simple a cracker , il suffit de mettre un ret dans le call et c'est finis , mais nous allons virer tous cette merde du fichier executable, donc en s'en tape ! Mais , je ne peus m'empecher de faire un petite remarque: -------Remarque:----------------------------------------------------------------------------- Comme vous l'avez surement remarque, il est possbile de proteger l'exe avec un name / serial au demarage , ce qui peut etre assez chiant a virer , car nous voulons executer le programme en memoire... Je vous racontes ca , car le fichier que nous sommes en train d'etudier ne comporte pas de name/ serial , j'ai packe le fichier avec les options de bases, mais en voulant cracker le nag screen, je me suis tromper de call , je suis entre dans le mauvais et j'ai mis un RET , sur un push EDI , il me semble, bref la premiere instruction. ensuite , je suis sortis automatiquement du call (RET) et j'ai trace avec F10. Tous a coup, une dialog box est apparu me demandant un name / serial !! what the fuck ? c quoi ce bordel, cet armadillo me semble bizzare , mais vraiment!! il semblerait que quoi que l'on fasse , l'exe contient la verification nom et code. Il me semble bizzare , mais j'en conclus que ca doit hyper simple a virer , juste un call a modifier , pour ne pas afficher ca , et on se retrouverais avec un exe crypter de base... Je n'ai pas eu le temps de bien regarder , mais ca peut etre inressant. Tous me pousse a dire que ces protections dites commerciales sont vraiment stupid... -------Fin des Remarques:--------------------------------------------------------------------- Bref, revenons a nos moutons , hehe on continue donc de tracer avec F10 s'en reflechir , il faut juste controler le code on cherche un "int3". Apres avoir tracer, on trouve ceci: 025F:00402241 2401 AND AL,01 025F:00402243 8885B8FEFFFF MOV [EBP-0148],AL 025F:00402249 BA6D447546 MOV EDX,4675446D 025F:0040224E 8995B0FEFFFF MOV [EBP-0150],EDX 025F:00402254 C785C4FEFFFF260C3604MOV DWORD PTR [EBP-013C],04360C26 025F:0040225E 895DFC MOV [EBP-04],EBX 025F:00402261 8B85C4FEFFFF MOV EAX,[EBP-013C] 025F:00402267 3385B0FEFFFF XOR EAX,[EBP-0150] 025F:0040226D 8BE8 MOV EBP,EAX 025F:0040226F B804000000 MOV EAX,00000004 025F:00402274 CC INT 3 <----- le chti 025F:00402275 3115148D4000 XOR [00408D14],EDX 025F:0040227B A180804000 MOV EAX,[00408080] 025F:00402280 310584804000 XOR [00408084],EAX 025F:00402286 834DFCFF OR DWORD PTR [EBP-04],-01 025F:0040228A EB18 JMP 004022A4 La protection est vraiment semblable a la 1.73. les Gas de chez armadillo se sont pas trop fouler pour une protection sois disant Tres fiables. Bref, vous avez surement remarque le "MOV EAX, 00000004" Pour passer ce control , il suffit de se mettre a la ligne du MOV. dans soft ice , tapez: A "entrer" JMP 0 "entrer" "echap" voila , nous venons de remplacer le mov eax,4 en un jmp 0. Ceci va provoquer une exception et le programme va croire que le debugger (soft ice) n'est pas charge , donc ce qui va s'occuper de l'execption et le programme se lance!! Nous avons donc calc.exe charge , on peut s'en serire normalement. 2)Virer completement Armadillo de l'executable proteger: A) recuperer et dumper ce que nous avons besoin: C'est cette partie qui m'a poser le plus de prob , car j'avais une erreur au moment de reconstruire un executable valide ;( J'ai recommence plusieurs fois , et voila comment je me suis pris. (Ayant demander de l'aider sur le forum de l'ATP team , j'ai donc lus leur cour , ma methode semble etre celle qu'utilise Alsindor, mais Artex utilise une approche different , donc je vous recommande de lire leur superbe cour sur MP3Wizard V1.2 par Psyché, Artex et Alsindor... J'ai trouver mon erreur de toute facon , je n'utilisais pas la bonne taille de section ".text". Leur cour est base sur armadillo 1.0 je crois) Donc, vous avez votre programme qui est lance, si vous regardez dans le repertoire courant (ou a etre lance le fichier exe , on trouve un fichier temporaire) Copier ce fichier , il va nous servir. Ensuite , lancez Procdump et regarder dans la liste des process , vous devez voir le fichier calc.exe , mais aussi le temporaire. Faites un click droit dessus (on veut dumper le fichier TEMP !! pas l'exe) et faites un dump full. Nous avons donc une fichier executable sur le disque , c'est le dump , et nous avons encore le fichier temp recuperé dans le repertoire ou a ete lance le programme crypte. B)Faire un executable qui marche , et qui n'a plus de armadillo ;) si vous renommer le fichier temporaire en executable et que vous l'executer il va crasher! C normal car dans la premiere Section , on se rend compte qu'elle est pleine de "XX" hmm , si on lance le fichier dumper, il ne marche pas non plus et crash comme un goret ;) GogogadgetauProcdump lol , vous l'avez compris lancez procdump et servez vous du PE editor pour editer le fichier dump, vous devez voir les sections du fichier.il faut regarder la premiere ! Pour ma part , j'avais ceci: - pour la section ".text" : Virtual Offset: 00001000 Raw Size: 11A0E Raw Offset: 1000 ok , gardez ces chiffres en tete nous allons y revenir!! avec procdump , click droit sur la section "text" et faites saves to file pour dumper le fichier dur le disque ! (exemple: text.bin).Car cette section est completement decrypter tandis que le fichier temporaire contient des XX.En effet armadillo re "ecris" la section a la vollée .. Une fois le fichier dumpé sur le disque, ouvrez votre fichier exe (le fichier Temp renomé) avec un editeur hexadecimal , j'utilise hexworkshop pour cela.ouvez egalement la section que vous avez dumper Maintenant dans hexworkshop , pressez alt+f5 , entrez le Raw offset de la section que vous voulez importer. ici : 1000 et cliquer sur ok. Allez dans le menu Edit, et cliquer sur "select block" entrez la longeur (size) de la section , ici : 11A0E... Regardez le fichier ouvert (text.bin) et pressez 'ctrl+a' pour tout selectioner.. copiez tout ca avec 'ctrl+c'. Retournez dans la fenetre principal de l'executable dans hexworkshop (celui que vous avez renomme l'ex fichier temporaire donc), et coller ce que vous venez de copier dans le press papier , faites: 'ctrl+v' ou menu Edit et paste. Enregistrez votre fichier, et vous avez maintenant une section '.text' valable qui ne contient donc plus de "XX" hehe... Lancez votre executable et oh !! miracle cela marche !! Mais pour etre sur que le fichier marche bien , on peut reconstruire le pe avec Procdump cela ne coute rien de toutes maniers : -Lancez Procdump (Merci G-RoM :) allez dans les Options et selecttioner: [X]Recompute Object Size [X]Optmize PE Structure [X] Use actual import infos et cliquer sur OK Cliquer sur Rebuild PE , et cherchez notre nouveau fichier (calc_finis.exe pour nous) Procdump nous fais une valide import table et notre executable est desorme plus sure ;o) Voila !! Le cour est termine , mais si vous avez une quesion ou un commentaire mailez moi!! Acid2600@hotmail.com ou ACiD_BuRN@nema.com Tout mes tuts sont ici : http://acidburn2000.cjb.net/ 3)les mots de la fin: Greetings: group greetings: ID - ECLiPSE - CiA - ODT - EXEC - TiTaNe - PWA - PC - UCF- CORE - CC Also greetingz to: (no specific order) R!SC, ^INFeRNo^, AB4DS, Cyber Blade, Klefz, , Volatility, TORN@DO, T4D Jeff, [Virus], JaNe , Appbusta , Duelist , tKC , BuLLeT , Lucifer48 , MiZ , DnNuke , Bjanes , Skymarshall , afkayas , elmopio , SiFLyiNG , Fire Worx , CrackZ , neural_en , WarezPup , _y , SiONIDE , SKORPIEN Lazarus , Eternal_Bliss , Magic Raphoun , DEZM , Bisoux , Carpathia , K17 , theMc , noos , Xmen , TeeJi , JB007 , Arobas , T0AD ,ytc , Kwai_lo , Killer_3K, TaMaMBoLo , gizmo , Gota , ExtaBrain , Alpine , WarezPup, zoltan , [yAtes], TarGon , Icecream , Punkguy2 , Sortof, TRDdonjuan, Lord Soth, Judged, G-Rom, Quantico, Christal, psike, Leo0n, Albator, +Spath, +Frog's Print, toutim ... et tous ceux que je connais mais que j'ai oublie les nicks , desole ;p Copyright (c) ACiD BuRN and the Immortal Descendants. http://www.immortaldescendants.com/