home *** CD-ROM | disk | FTP | other *** search
-
- · · - -- 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/
-