home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Reverse Code Engineering RCE CD +sandman 2000
/
ReverseCodeEngineeringRceCdsandman2000.iso
/
RCE
/
acid_burn2000
/
tutor35_fr.txt
< prev
next >
Wrap
Text File
|
2000-05-25
|
15KB
|
330 lines
· · - -- 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/