.
.
  

No more lamerz :
Support us !
Derviche Tourneur
Par Lise_Grim & Olivier

Ou "l'art et la manière d'avoir une bonne migraine :)"

> +Intermédiaires <
Le 19 Juin 2003
by the Dr. rED mEAT
HardCoded s/n inhumain :)
W32 CODE REVERSING
R E S i S T A N C E    I S    F U T i L E    2 k 3
.
P     A     R     E     N     T     A     L
A   D   V   I   S   O   R   Y
D  O  C  T  O  R     A T     W  O  R  K
.
http://www.RIF.fr.fm
¸,¿o©º°¨¨°º©o¿,¸Fiat Lux !¸,¿o©º°¨¨°º©o¿,¸
.

 
>
 INTRODUCE IT ! ::  

Salut les jeunes !

Je reviens apres une *longue* période d'absence :( Ben oui : Exams/Chaleur/Motocross Madness/etc :)
Ca fait la troisième fois que j'essaye de cracker ce prog... En vain ! Mais là je viens de découvrir IceDump, j'avoue que ça me sauve un peu la vie. Etant un fervent défenseur du dead listing je suis plutôt mal barré avec ce crackme *BORDELIQUE* ! C'est à croire que Lise_Grim et Olivier travaillent chez Borland (vous savez, ceux qui ont "écrit" Delphi :). Héhé ! Nan je sait bien que c'etait volontaire . Enfin... j'espere :)

Ne vous fiez pas aux apparences, c'est vrai que 'Lise_Grim et Olivier' ça faut plus animateurs de colonie de vacance que crackers, mais ce crackme est HARDCORE :)

Il vous faudra pas mal d'experience dans l'asm et le cracking, doublé d'une bonne logique pour pouvoir comprendre certains listings trouvés au fur et à mesure de nos recherches. Si vous avez débutés dans le cracking avant-hier (a moins que vous ne soyez Magicalbubble :) : Laissez-tomber !

En fait le but de ce crackme c'est de remplacer le "CRACKED by personne :)" par "CRACKED by ton_blaze :)". Et qu'est-ce qu'on nous dit dans le hello.txt ?

Pour la décompression, pas besoin d'explications !
C'est packé avec upx 1.24.

Les tools nécessaires sont :

Sur ce... Direction la suite !
 
 
>
 DUMP IT ! ::  

Déjà ça serrait pas mal d'unpacker le fichier parceque, à moins que vous voulez faire un HardPatching de 15Ko, il vous faut un exe valide sur le disque.

On peut faire un dump à la main, mais aussi un dump avec les imports à l'aide de la commande d'IceDump, /pedump. Mais bon... Les imports ne nous servirons pas, c'est juste pour montrer à ceux qui ne savent pas utililser IceDump ce qu'ils ont manqué !

Il faut pour cela trouver l'OEP du prog, je vous déconseille PEiD pour ça car il pète un peu les plombs. Le mieux c'est de le trouver à la main simplement en désassemblant :
 
 

UPX1:004494C2                 popa
UPX1:004494C3                 jmp     near ptr dword_401000
UPX1:004494C3 start           endp

Et voilà ! On à déjà l'OEP du prog... Pas trop fatigué ? On continu. En fait le truc avec IceDump c'est de nous positionner en 401000, avec un beau programme décompressé et de dumper directement sur le disque à l'aide de la commande /pedump. Voyons la syntaxe de la commande /pedump :

/PEDUMP <imagebase> <EIP> <filename>

Le membre <imagebase> corresspond... Ben à l'ImageBase (00400000)
Le membre <EIP> correspond à la RVA de l'eip actuel (1000)
Et <filename> c'est le chemin du fichier de sortie.

Donc ce qu'on fait c'est qu'on charge le prog avec le Break'n'Enter de LordPE. Donc on fait un bpint 3 sous SoftIce ensuite on clique sur OK. Après ça on fait un eb eip 60 (LordPE nous le dit dans la fenetre de SI). Après, un petit bpm 00401000 x. On fait F5 pour y aller, un petit bc * pour nettoyer les breakpoints ensuite on tape :

/pedump 00400000 1000 c:\out.exe

Et voilà on quitte et on à un bel exe dumpé avec les Imports ! J'espere que pour l'instant ça vous saoule pas, car moi j'ai horreur de rediger des tuts comme ça... Ca ressemble plus à une recette de cuisine qu'a un tut de cracking :(
 
 
>
 CLEAN IT ! ::  

Pouah ! Mais c'est vraiment du code poubelle ! C'est bien pour ce genre de situation que j'ai crée ISK 2003 :)
Si vous avez des problèmes avec ce prog vous pouvez me mailer !

Donc on supprime les shit 1, 2 et 3. Attention on ne vire pas la shit 4 (qui est celle qui à la plus haute fréquence :( car le prog se base sur celle-ci pour son execution. Avec un petit check et un gros crash :) On pourrait très bien voir quels codes sont nécessaires à l'execution du prog, et le fixer en conséquent, mais je suis vraiment trop feinéant :) Et vous verrez que ça nous pertube pas trop pour la suite.
 
 
>
 FIX IT ! ::  

Ayant IceDump chargé, je ne suis pas victime des anti-softice, mais bon... On va quand même le kicker :
 
 

UPX0:00401040                 push    offset DialogFunc
UPX0:00401045                 push    large dword ptr fs:0
UPX0:0040104C                 mov     large fs:0, esp
UPX0:00401053                 mov     ebp, 'BCHK'
UPX0:00401058                 mov     ax, 4
UPX0:0040105C                 int     3               ; Trap to Debugger
UPX0:0040105D                 pop     large dword ptr fs:0
UPX0:00401064                 add     esp, 4

Donc on noppe l'int 3, ainsi il n'y a pas d'execption ! Et voilà !
 
 
>
 ANALYSE IT ! ::  

En fait, en voyant la tête du bordel, on va plutot poser un bpx API_Qui_Affiche_Du_Texte plutot que de chercher en dead listing. Voici les API possibles :

En fait l'idée c'est de poser un bpx sur une de ces fonction et de regarder ensuite les paramètre (posés sur la pile) pour trouver où on affiche le fameux message "CRACKED by ...".

On va pas se compliquer la vie, on va commencer par un bpx SetDlgItemTextA, c'est la plus courante. *Pouf!* SoftIce apparait juste après le splash (à mes souhaits :). Et on tombe en plein dans l'API SetDlgItemTextA. Ne faites pas F12, ça sert à rien ! Ensuite on fait un dd esp pour voir les valeurs des paramètres. On a un truc comme ça :
 
 

EAX=00000018   EBX=004017CE   ECX=00000000   EDX=00401B0A   ESI=004017E6        
EDI=00401548   EBP=0067FB90   ESP=0067FB80   EIP=BFF5171D   o d I s z a P c     
CS=017F   DS=0187   SS=0187   ES=0187   FS=5BCF   GS=0000                       
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
--------------------------------------------------dword-------------PROT---(1)--
0187:0067FB80 00401592  000002F4  000003EC  00401548      ..@.........H.@.     ^
0187:0067FB90 0067FBB0  BFF7363B  000002F4  00000110      ..g.;6..........     ^
0187:0067FBA0 00000D00  00000000  8BE05BC7  00000187      .........[......      
0187:0067FBB0 0067FBC4  BFF94407  65B78C06  000065B7      ..g..D.....e.e..      
0187:0067FBC0 00000000  BFF719B8  00008C00  0067FF68      ............h.g.      
0187:0067FBD0 BFF7186D  8BE05BC7  00000000  65B78BE0      m....[.........e      
0187:0067FBE0 00000000  00000246  00038C3E  00033CAA      ....F...>....<..      
0187:0067FBF0 000016BF  016F2737  65B70000  65B78C06      ....7'o....e...e      
0187:0067FC00 3E778C44  000416DF  00000000  143A0000      D.w>..........:.     v
0187:0067FC10 00000040  0D000000  01100000  02F40000      @...............     v
-----USER32!SetDlgItemInt+001F-------------------------------------------PROT32-
017f:bff5171a  c21000              ret       0010                              ^
USER32!SetDlgItemTextA                                                         ^
017f:bff5171d  b1a2                mov       cl,a2                              
017f:bff5171f  55                  push      ebp                                
017f:bff51720  8bec                mov       ebp,esp                            
017f:bff51722  51                  push      ecx                                
017f:bff51723  83ec3c              sub       esp,3c                             
017f:bff51726  66ff7508            push      word ptr [ebp+08]                  
017f:bff5172a  ff750c              push      dword ptr [ebp+0c]                 
017f:bff5172d  e85e690000          call      KERNEL32!SMapLS_IP_EBP_16          
017f:bff51732  50                  push      eax                                
017f:bff51733  ff15d612f5bf        call      [bff512d6]                         
017f:bff51739  98                  cwde                                         
017f:bff5173a  e8b7690000          call      KERNEL32!SUnMapLS_IP_EBP_16        
017f:bff5173f  c9                  leave                                        
017f:bff51740  c20c00              ret       000c                               
USER32!GetDlgItemTextA                                                          
017f:bff51743  b1a1                mov       cl,a1                              
017f:bff51745  55                  push      ebp                                
017f:bff51746  8bec                mov       ebp,esp                            
017f:bff51748  51                  push      ecx                                
017f:bff51749  83ec3c              sub       esp,3c                             
017f:bff5174c  66ff7508            push      word ptr [ebp+08]                 v
017f:bff51750  ff750c              push      dword ptr [ebp+0c]            < > v
------------------------------------USER32!.text+071A---------------------------
Break due to BPX USER32!SetDlgItemTextA  (ET=3.15 seconds)                      
:dd esp                                                                         
:/screendump c:\out.html                                                        
                                                                                
Invalid command                                                         Derviche

Ben quoi... Vous aimez pas mon SoftIce en bleu et blanc ?! Donc on à une pile qui ressemble à ça :

00401592  00000998  000003EC  00401548
\______/  \______/  \______/  \______/
 |         |         |         |
 |         |         |         +---[ lpString ]
 |         |         |
 |         |         +-------------[ nIDDlgItem ]
 |         |
 |         +-----------------------[ hDlg ]
 |
 +---------------------------------[ Adresse de retour ]

Selon le prototype de l'API suivant :

BOOL SetDlgItemText(

    HWND hDlg,           // handle of dialog box
    int nIDDlgItem,     // identifier of control
    LPCTSTR lpString   // text to set
   );

Et si on fait un d 00401548, qu'est-ce qu'on voit ? Non mais j'te l'demande ?!
 
 

EAX=00000018   EBX=004017CE   ECX=00000000   EDX=00401B0A   ESI=004017E6        
EDI=00401548   EBP=0067FB90   ESP=0067FB80   EIP=BFF5171D   o d I s z a P c     
CS=017F   DS=0187   SS=0187   ES=0187   FS=3DDF   GS=0000                       
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
-----DERVICHE!UPX0+0548---------------------------dword-------------PROT---(1)--
0187:00401548 43415243  2044454B  70207962  6F737265      CRACKED by perso     ^
0187:00401558 20656E6E  0000293A  E8580040  0000006B      nne :)..@.X.k...     ^
0187:00401568 000008BA  E801EB00  03EB6160  574520CD      ........`a... EW      
0187:00401578 0003EC68  E801EB00  EB0875FF  C281E801      h........u......      
0187:00401588 00401B02  850F02EB  0D8DD2FF  004017C9      ..@...........@.      
0187:00401598 8DE801EB  4017C015  8DCA2B00  4017C035      .......@.+..5..@      
0187:004015A8 CD03EB00  3D8D4520  0040160A  F3E801EB      .... E.=..@.....      
0187:004015B8 EBC3B0A4  37A2E801  EB004018  FEE8DF01      .......7.@......      
0187:004015C8 EB000001  00E8E801  58000000  8DE801EB      ...........X....     v
0187:004015D8 4017E60D  CD03EB00  1D8D4520  004017CE      ...@.... E....@.     v
-----USER32!SetDlgItemInt+001F-------------------------------------------PROT32-
017f:bff5171a  c21000              ret       0010                              ^
USER32!SetDlgItemTextA                                                         ^
017f:bff5171d  b1a2                mov       cl,a2                              
017f:bff5171f  55                  push      ebp                                
017f:bff51720  8bec                mov       ebp,esp                            
017f:bff51722  51                  push      ecx                                
017f:bff51723  83ec3c              sub       esp,3c                             
017f:bff51726  66ff7508            push      word ptr [ebp+08]                  
017f:bff5172a  ff750c              push      dword ptr [ebp+0c]                 
017f:bff5172d  e85e690000          call      KERNEL32!SMapLS_IP_EBP_16          
017f:bff51732  50                  push      eax                                
017f:bff51733  ff15d612f5bf        call      [bff512d6]                         
017f:bff51739  98                  cwde                                         
017f:bff5173a  e8b7690000          call      KERNEL32!SUnMapLS_IP_EBP_16        
017f:bff5173f  c9                  leave                                        
017f:bff51740  c20c00              ret       000c                               
USER32!GetDlgItemTextA                                                          
017f:bff51743  b1a1                mov       cl,a1                              
017f:bff51745  55                  push      ebp                                
017f:bff51746  8bec                mov       ebp,esp                            
017f:bff51748  51                  push      ecx                                
017f:bff51749  83ec3c              sub       esp,3c                             
017f:bff5174c  66ff7508            push      word ptr [ebp+08]                 v
017f:bff51750  ff750c              push      dword ptr [ebp+0c]            < > v
------------------------------------USER32!.text+071A---------------------------
:dd esp                                                                         
:/screendump c:\shot1.html                                                      
:/screendump c:\shot2.html                                                      
                                                                                
Invalid command                                                         Derviche

Bingo ! On le tiens ! Maintenant qu'on à l'adresse, on va touver la source de l'adresse. En effet, il se peut que l'adresse soit cryptée puisqu'on ne trouve rien à cette adresse en dead listing.

Donc on lance le crackme et on fait un bpm 00401548 rw. Hop ! Un truc interessant ici :
 
 

UPX0:004015D7                 lea     ecx, ds:4017E6h
UPX0:004015E2                 lea     ebx, ds:4017CEh
UPX0:004015E8                 sub     ecx, ebx  ; ecx = 18h
UPX0:004015F3                 lea     esi, ds:4017CEh
UPX0:004015FC                 lea     edi, ds:401548h
UPX0:00401602                 repe movsb

 
 
 
EAX=00000018   EBX=004017CE   ECX=00000018   EDX=004017C9   ESI=004017CE        
EDI=0067FB98   EBP=0067FB90   ESP=0067FB90   EIP=004015F9   o d I s z A P c     
CS=017F   DS=0187   SS=0187   ES=0187   FS=2197   GS=0000                       
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
-----DERVICHE!UPX0+07CE---------------------------byte--------------PROT---(0)--
0187:004017CE 43 52 41 43 4B 45 44 20-62 79 20 70 65 72 73 6F  CRACKED by perso^
0187:004017DE 6E 6E 65 20 3A 29 00 00-4F 6C 69 76 69 65 72 2C  nne :)..Olivier,^
0187:004017EE 20 6A 65 20 74 27 20 61-69 6D 65 20 3A 29 00 58   je t' aime :).X 
0187:004017FE B9 16 00 00 00 FE 89 CD-17 40 00 C0 89 CD 17 40  .........@.....@ 
0187:0040180E 00 03 FE 89 E5 17 40 00-C0 89 E5 17 40 00 05 E2  ......@.....@... 
0187:0040181E E4 A0 DE 17 40 00 A2 70-15 40 00 B9 06 00 00 00  ....@..p.@...... 
0187:0040182E 80 81 DD 17 40 00 0E E2-F7 68 43 15 40 00 C3 55  ....@....hC.@..U 
0187:0040183E 8B EC 8B 45 0C 83 F8 10-75 17 B9 0C 00 00 00 6A  ...E....u......j 
0187:0040184E 00 FF 75 08 81 C1 BC 1A-40 00 FF D1 E9 98 01 00  ..u.....@.......v
0187:0040185E 00 3D 01 02 00 00 75 28-8B 45 14 EB 01 E8 BA 20  .=....u(.E..... v
-------------------------------------------------------------------------PROT32-
017f:004015d5  01e8                add       eax,ebp                           ^
017f:004015d7  8d0de6174000        lea       ecx,[004017e6]                    ^
017f:004015dd  eb03                jmp       004015e2                           
017f:004015df  cd20                int       20 VXDJmp CE1D,0D45                
017f:004015e5  17                  pop       ss                                 
017f:004015e6  40                  inc       eax                                
017f:004015e7  002b                add       [ebx],ch                           
017f:004015e9  cb                  retf                                         
017f:004015ea  eb02                jmp       004015ee                           
017f:004015ec  0f858bc1eb01        jnz       022bd77d                           
017f:004015f2  e88d35ce17          call      180e4b84                           
017f:004015f7  40                  inc       eax                                
017f:004015f8  00eb                add       bl,ch                              
017f:004015f9  eb01                jmp       004015fc                (JUMP v)   
017f:004015fb  e88d3d4815          call      1588538d                           
017f:00401600  40                  inc       eax                                
017f:00401601  00f3                add       bl,dh                              
017f:00401603  a4                  movsb                                        
017f:00401604  eb02                jmp       00401608                           
017f:00401606  0f852bf8e959        jnz       5a2a0e37                           
017f:0040160c  ffff                invalid                                      
017f:0040160e  ff90909090eb        call      [eax+eb909090]                     
017f:00401614  71b9                jno       004015cf                           
017f:00401616  0400                add       al,00                             v
017f:00401618  0000                add       [eax],al                      < > v
------------------------------------DERVICHE!UPX0+05D5--------------------------
Screen dumper set to mode 2                                                     
:/screendump c:\shot3.html                                                      
                                                                                
Invalid command                                                         Derviche

 

Voici ce que l'on a en 4017CEh. Donc, comme ça correspond à rien en dead listing, on va ensuite placer un bpm 4017CE rw... Et ça recommence !

Sauf que là on à enfin trouvé le décryptage du message ! C'est en 00401809. On a tout ce qu'il nous faut !
 
 
>
 MORTSUB IT ! ::  

 

EAX=004017CE   EBX=00401B16   ECX=00000016   EDX=004017C9   ESI=00008C06        
EDI=0067FB98   EBP=0067FB90   ESP=0067FB90   EIP=00401809   o d I S z a P C     
CS=017F   DS=0187   SS=0187   ES=0187   FS=116F   GS=0000   ds:004017E3=D8      
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
-----OUT!UPX0+07E3--------------------------------byte--------------PROT---(0)--
0187:004017E3 D8 00 00 EA 8E 2E CF 2E-AD 4F 86 05 4E AD 05 8F  .........O..N...^
0187:004017F3 E5 05 2D 2E AE AD 05 48-26 00 58 B9 16 00 00 00  ..-....H&.X.....^
0187:00401803 FE 89 CD 17 40 00 C0 89-CD 17 40 00 03 FE 89 E5  ....@.....@..... 
0187:00401813 17 40 00 C0 89 E5 17 40-00 05 E2 E4 A0 DE 17 40  .@.....@.......@ 
0187:00401823 00 A2 70 15 40 00 B9 06-00 00 00 80 81 DD 17 40  ..p.@..........@ 
0187:00401833 00 0E E2 F7 68 43 15 40-00 C3 55 8B EC 8B 45 0C  ....hC.@..U...E. 
0187:00401843 83 F8 10 75 17 B9 0C 00-00 00 6A 00 FF 75 08 81  ...u......j..u.. 
0187:00401853 C1 BC 1A 40 00 FF D1 E9-98 01 00 00 3D 01 02 00  ...@........=... 
0187:00401863 00 75 28 8B 45 14 EB 01-E8 BA 20 00 00 00 50 6A  .u(.E..... ...Pjv
0187:00401873 02 68 A1 00 00 00 FF 75-08 90 90 90 90 90 81 C2  .h.....u........v
-------------------------------------------------------------------------PROT32-
017f:004017fd  58                  pop       eax                               ^
017f:004017fe  b916000000          mov       ecx,00000016                      ^
017f:00401803  fe89cd174000        dec       byte ptr [ecx+004017cd]            
017f:00401809  c089cd17400003      ror       byte ptr [ecx+004017cd],03         
017f:00401810  fe89e5174000        dec       byte ptr [ecx+004017e5]            
017f:00401816  c089e517400005      ror       byte ptr [ecx+004017e5],05         
017f:0040181d  e2e4                loop      00401803                           
017f:0040181f  a0de174000          mov       al,[004017de]                      
017f:00401824  a270154000          mov       [00401570],al                      
017f:00401829  b906000000          mov       ecx,00000006                       
017f:0040182e  8081dd1740000e      add       byte ptr [ecx+004017dd],0e         
017f:00401835  e2f7                loop      0040182e                           
017f:00401837  6843154000          push      00401543                           
017f:0040183c  c3                  ret                                          
017f:0040183d  55                  push      ebp                                
017f:0040183e  8bec                mov       ebp,esp                            
017f:00401840  8b450c              mov       eax,[ebp+0c]                       
017f:00401843  83f810              cmp       eax,10                             
017f:00401846  7517                jnz       0040185f                           
017f:00401848  b90c000000          mov       ecx,0000000c                       
017f:0040184d  6a00                push      00                                 
017f:0040184f  ff7508              push      dword ptr [ebp+08]                 
017f:00401852  81c1bc1a4000        add       ecx,USER32!DialogBoxParamA         
017f:00401858  ffd1                call      ecx                               v
017f:0040185a  e998010000          jmp       004019f7                      < > v
------------------------------------OUT!UPX0+07FD-------------------------------
00000016  0000000022  " "                                                       
:/screendump c:\enfin.html                                                      
                                                                                
Invalid command                                                              Out

Bon suite à ça on à tout ce qu'on veut. A savoir une string cryptée et un moyen de la décrypter (donc un moyen d'en crypter d'autre aussi).

Cette routine se décompose en deux parties, mais pour nous seulement la première nous interesse :
 
 

017f:004017fe  b916000000          mov       ecx,00000016
017f:00401803  fe89cd174000        dec       byte ptr [ecx+004017cd]            
017f:00401809  c089cd17400003      ror       byte ptr [ecx+004017cd],03         ; CRACKED by personne :)
017f:00401810  fe89e5174000        dec       byte ptr [ecx+004017e5]            
017f:00401816  c089e517400005      ror       byte ptr [ecx+004017e5],05         ; Olivier, je t' aime :)
017f:0040181d  e2e4                loop      00401803

A moins que vous désirez, vous aussi, déclarer votre flamme dans ce prog, vous n'avez pas à toucher à la seconde partie :)
Note : C'est dans le prog original, c'est pas moi qu'ai écrit ça, hein ?! Nan, j'dit ça parceque les rumeurs à deux francs à mon sujet j'en ai ras-le-cul !

Cela dit quand on trace, on trouve une phrase dans ce gout là :

CRACKED by perso,,W

Donc une petite boucle à été ajoutée à la fin pour fixer les chars érronés :
 
 

017f:00401829  b906000000          mov       ecx,00000006
017f:0040182e  8081dd1740000e      add       byte ptr [ecx+004017dd],0e
017f:00401835  e2f7                loop      0040182e

Retrouvons donc notre string en 004017CD+1 = 004017CE :

UPX0:004017CE                 db  10h ; C = 43
UPX0:004017CF                 db  32h ; R = 52
UPX0:004017D0                 db  50h ; A = 41
UPX0:004017D1                 db  10h ; C = 43
UPX0:004017D2                 db  11h ; K = 4B
UPX0:004017D3                 db 0D0h ; E = 45
UPX0:004017D4                 db 0F0h ; D = 44
UPX0:004017D5                 db  6Ch ;   = 20
UPX0:004017D6                 db  34h ; b = 62
UPX0:004017D7                 db  57h ; y = 79
UPX0:004017D8                 db  6Ch ;   = 20
UPX0:004017D9                 db  76h ; p = 70
UPX0:004017DA                 db 0D4h ; e = 65
UPX0:004017DB                 db  36h ; r = 72
UPX0:004017DC                 db  16h ; s = 73
UPX0:004017DD                 db  95h ; o = 6F
UPX0:004017DE                 db  74h ; n = 6E
UPX0:004017DF                 db  74h ; n = 6E
UPX0:004017E0                 db  92h ; e = 65
UPX0:004017E1                 db  2Ah ;   = 20
UPX0:004017E2                 db 0EDh ; : = 3A
UPX0:004017E3                 db  0Bh ; ) = 29

Sauf qu'on voit dans le 'screenshot' suivant (avant decryptage) :
 
 

EAX=004017CE   EBX=00401B16   ECX=00000016   EDX=004017C9   ESI=00008C06        
EDI=0067FB98   EBP=0067FB90   ESP=0067FB90   EIP=00401803   o d I S z a P C     
CS=017F   DS=0187   SS=0187   ES=0187   FS=1907   GS=0000   ds:004017E3=D9      
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
-----DERVICHE!UPX0+07B3---------------------------byte--------------PROT---(0)--
0187:004017B3 00 00 EB 09 B8 00 00 00-00 C9 C2 10 00 B8 01 00  ................^
0187:004017C3 00 00 C9 C2 10 00 E8 2F-00 00 00 1B 93 0B 1B 5B  ......./.......[^
0187:004017D3 2B 23 02 14 CC 02 84 2C-94 9C 7C 04 04 BB 91 62  +#.....,..|....b 
0187:004017E3 D9 00 00 EA 8E 2E CF 2E-AD 4F 86 05 4E AD 05 8F  .........O..N... 
0187:004017F3 E5 05 2D 2E AE AD 05 48-26 00 58 B9 16 00 00 00  ..-....H&.X..... 
0187:00401803 FE 89 CD 17 40 00 C0 89-CD 17 40 00 03 FE 89 E5  ....@.....@..... 
0187:00401813 17 40 00 C0 89 E5 17 40-00 05 E2 E4 A0 DE 17 40  .@.....@.......@ 
0187:00401823 00 A2 70 15 40 00 B9 06-00 00 00 80 81 DD 17 40  ..p.@..........@ 
0187:00401833 00 0E E2 F7 68 43 15 40-00 C3 55 8B EC 8B 45 0C  ....hC.@..U...E.v
0187:00401843 83 F8 10 75 17 B9 0C 00-00 00 6A 00 FF 75 08 81  ...u......j..u..v
-------------------------------------------------------------------------PROT32-
017f:00401803  fe89cd174000        dec       byte ptr [ecx+004017cd]           ^
017f:00401809  c089cd17400003      ror       byte ptr [ecx+004017cd],03        ^
017f:00401810  fe89e5174000        dec       byte ptr [ecx+004017e5]            
017f:00401816  c089e517400005      ror       byte ptr [ecx+004017e5],05         
017f:0040181d  e2e4                loop      00401803                           
017f:0040181f  a0de174000          mov       al,[004017de]                      
017f:00401824  a270154000          mov       [00401570],al                      
017f:00401829  b906000000          mov       ecx,00000006                       
017f:0040182e  8081dd1740000e      add       byte ptr [ecx+004017dd],0e         
017f:00401835  e2f7                loop      0040182e                           
017f:00401837  6843154000          push      00401543                           
017f:0040183c  c3                  ret                                          
017f:0040183d  55                  push      ebp                                
017f:0040183e  8bec                mov       ebp,esp                            
017f:00401840  8b450c              mov       eax,[ebp+0c]                       
017f:00401843  83f810              cmp       eax,10                             
017f:00401846  7517                jnz       0040185f                           
017f:00401848  b90c000000          mov       ecx,0000000c                       
017f:0040184d  6a00                push      00                                 
017f:0040184f  ff7508              push      dword ptr [ebp+08]                 
017f:00401852  81c1bc1a4000        add       ecx,USER32!DialogBoxParamA         
017f:00401858  ffd1                call      ecx                                
017f:0040185a  e998010000          jmp       004019f7                           
017f:0040185f  3d01020000          cmp       eax,00000201                      v
017f:00401864  7528                jnz       0040188e                      < > v
------------------------------------DERVICHE!UPX0+0803--------------------------
Screen dumper set to mode 2                                                     
:/screendump c:\cry.html                                                        
                                                                                
Invalid command                                                         Derviche

Et oui, les valeurs sont plutôt :

                                                ** ** ** ** ** **
1B 93 0B 1B 5B 2B 23 02 14 CC 02 84 2C 94 9C 7C 04 04 BB 91 62 D9
                                                ** ** ** ** ** **
C  R  A  C  K  E  D     b  y     p  e  r  s  o  n  n  e     :  )

Je ne sait pas par quelle opération du saint-esprit la chaine et comme ça, et puis sincerement : Ca fait deux jours que je suis sur le crackme, mon cerveau est fuck'd'up :) Mais on va le savoir tout de suite, car c'est important (indispensable même) pour fixer la string sur le disque.

On voit que les valeurs avec un '**' doivent être fixées avec un 'add 0E' après décryptage pour obtenir les chars en clair.
 
 

EAX=00000960   EBX=00401B16   ECX=00000006   EDX=004017C9   ESI=00008C06        
EDI=0067FB98   EBP=0067FB90   ESP=0067FB8C   EIP=00401A29   o d I s z a P c     
CS=017F   DS=0187   SS=0187   ES=0187   FS=4B6F   GS=0000                       
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
-----DERVICHE!UPX0+07CE---------------------------byte--------------PROT---(0)--
0187:004017CE 1B 93 0B 1B 5B 2B 23 02-14 CC 02 84 2C 94 9C 7C  ....[+#.....,..|^
0187:004017DE 04 04 BB 91 62 D9 00 00-EA 8E 2E CF 2E AD 4F 86  ....b.........O.^
0187:004017EE 05 4E AD 05 8F E5 05 2D-2E AE AD 05 48 26 00 58  .N.....-....H&.X 
0187:004017FE B9 16 00 00 00 FE 89 CD-17 40 00 C0 89 CD 17 40  .........@.....@ 
0187:0040180E 00 03 FE 89 E5 17 40 00-C0 89 E5 17 40 00 05 E2  ......@.....@... 
0187:0040181E E4 A0 DE 17 40 00 A2 70-15 40 00 B9 06 00 00 00  ....@..p.@...... 
0187:0040182E 80 81 DD 17 40 00 0E E2-F7 68 43 15 40 00 C3 55  ....@....hC.@..U 
0187:0040183E 8B EC 8B 45 0C 83 F8 10-75 17 B9 0C 00 00 00 6A  ...E....u......j 
0187:0040184E 00 FF 75 08 81 C1 BC 1A-40 00 FF D1 E9 98 01 00  ..u.....@.......v
0187:0040185E 00 3D 01 02 00 00 75 28-8B 45 14 EB 01 E8 BA 20  .=....u(.E..... v
-------------------------------------------------------------------------PROT32-
017f:00401a0e  002b                add       [ebx],ch                          ^
017f:00401a10  caa100              retf      00a1                              ^
017f:00401a13  304000              xor       [eax+00],al                        
017f:00401a16  3081c8174000        xor       [ecx+004017c8],al                  
017f:00401a1c  c081c817400006      rol       byte ptr [ecx+004017c8],06         
017f:00401a23  fe89c8174000        dec       byte ptr [ecx+004017c8]            
017f:00401a29  e2eb                loop      00401a16                           
017f:00401a2b  c3                  ret                                          
017f:00401a2c  90                  nop                                          
017f:00401a2d  cc                  int       3                                  
017f:00401a2e  90                  nop                                          
017f:00401a2f  90                  nop                                          
017f:00401a30  eb01                jmp       00401a33                           
017f:00401a32  e8e8330000          call      00404e1f                           
017f:00401a37  006689              add       [esi-77],ah                        
017f:00401a3a  257f104000          and       eax,0040107f                       
017f:00401a3f  90                  nop                                          
017f:00401a40  90                  nop                                          
017f:00401a41  90                  nop                                          
017f:00401a42  90                  nop                                          
017f:00401a43  90                  nop                                          
017f:00401a44  e80e000000          call      00401a57                           
017f:00401a49  33c2                xor       eax,edx                            
017f:00401a4b  eb01                jmp       00401a4e                          v
017f:00401a4d  e885db7505          call      05b5f5d7                      < > v
------------------------------------DERVICHE!UPX0+0A0E--------------------------
    MSR LastBranchToIp=00401A16                                                 
:/screendump c:\cry2.html                                                       
                                                                                
Invalid command                                                         Derviche

C'est bon ! On a fini, mais je vais quand même expliquer toutes les charcutures(*) que subit le serial. A savoir comment passer de 10h (sur le disque) à 43h (le 'C' affiché).
(*) Brevet déposé, cherchez pas :)

10h -> 1Bh -> 43h
    |      |
    |      +-> ROUTINE 2
    |
    +-> ROUTINE 1

ROUTINE 1 :
-----------

xor x, 60
rol x, 6
dec x

ROUTINE 2 :
-----------

dec x
ror x, 3
add x, 0E  ; pour les 6 derniers chars

Donc on a le pseudo-algo suivant :

xor x, 60
rol x, 6
dec x
dec x
ror x, 3
add x, 0E  ; pour les 6 derniers chars

Selon les regles fondamentales du reversing, on a ça :

sub x, 0E  ; pour les 6 derniers chars
rol x, 3
inc x
inc x
ror x, 6
xor x, 60

On inverse les instructions (sauf le xor qui est auto-reversible) ainsi que le flux d'instruction (ce qui est en bas va en haut etc...).
Donc on écrit un chtiot prog qui automatise la tache...
 
 
>
 PARASE IT ! ::  

Héhéhé vous pensez avoir fini ? Hé ben non, il y a encore quelques sécurités... Ceux qui veulent se suicider peuvent le faire maintenant... *PAN!* C'est bon ?!

En fait quand on injecte une string bien comme if faut... Ca crashe ! Windows nous dit à l'aide d'une belle fenêtre d'exception que l'erreur se trouve en 00401570. En fait on voit que l'on tombe en plein dans du code pas beau. J'ai donc fait un ew eip 9090 pour nopper les deux octets indésirables. Et ça marche ! Le problème c'est que (comme vous pouviez vous en douter) le code sur le disque n'est pas le même : Les deux octets subissent des transformations.

On fait un bpm 00401570 rw et on voit les tranformations subies par l'octet !
 
 

017f:0040181f  a0de174000          mov       al,[004017de]
017f:00401824  a270154000          mov       [00401570],al

Voilà c'est là ! On voit (en débugguant) que al vaut la valeur du char à la position du premier 'n' de 'personne'. Donc si on rentre une string comme "ZZZZZZZZZZZZZZZZnZZZZZ" ça marche ! Evidement on ne peut pas contraindre l'utilisateur à mettre un 'n' dans son blaze. Arghhh ! Pourquoi tant de 'n' ? <- J'suis encore plus drôle que Philipe Bouvard :)

Voilà pourquoi :
 
 

EAX=00000018   EBX=004017CE   ECX=00000000   EDX=00000008   ESI=004017E6        
EDI=00401548   EBP=0067FB90   ESP=0067FB90   EIP=00401570   o d I s z A P c     
CS=017F   DS=0187   SS=0187   ES=0187   FS=4B27   GS=0000                       
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
-----DERVICHE!UPX0+0570---------------------------byte--------------PROT---(0)--
017F:00401570 60 61 EB 03 CD 20 45 57-68 EC 03 00 00 EB 01 E8  `a... EWh.......^
017F:00401580 FF 75 08 EB 01 E8 81 C2-02 1B 40 00 90 90 90 90  .u........@.....^
017F:00401590 FF D2 8D 0D C9 17 40 00-EB 01 E8 8D 15 C0 17 40  ......@........@ 
017F:004015A0 00 2B CA 8D 35 C0 17 40-00 90 90 90 90 90 8D 3D  .+..5..@.......= 
017F:004015B0 0A 16 40 00 EB 01 E8 F3-A4 B0 C3 EB 01 E8 A2 37  ..@............7 
017F:004015C0 18 40 00 90 90 90 E8 FE-01 00 00 EB 01 E8 E8 00  .@.............. 
017F:004015D0 00 00 00 58 EB 01 E8 8D-0D E6 17 40 00 90 90 90  ...X.......@.... 
017F:004015E0 90 90 8D 1D CE 17 40 00-2B CB 90 90 90 90 8B C1  ......@.+....... 
017F:004015F0 EB 01 E8 8D 35 CE 17 40-00 EB 01 E8 8D 3D 48 15  ....5..@.....=H.v
017F:00401600 40 00 F3 A4 90 90 90 90-2B F8 E9 59 FF FF FF 90  @.......+..Y....v
-------------------------------------------------------------------------PROT32-
017f:00401570  60                  pushad                                      ^
017f:00401571  61                  popad                                       ^
017f:00401572  eb03                jmp       00401577                           
017f:00401574  cd20                int       20 VXDCall EC68,5745               
017f:0040157a  0300                add       eax,[eax]                          
017f:0040157c  00eb                add       bl,ch                              
017f:0040157e  01e8                add       eax,ebp                            
017f:00401580  ff7508              push      dword ptr [ebp+08]                 
017f:00401583  eb01                jmp       00401586                           
017f:00401585  e881c2021b          call      1b42d80b                           
017f:0040158a  40                  inc       eax                                
017f:0040158b  0090909090ff        add       [eax+ff909090],dl                  
017f:00401591  d28d0dc91740        ror       byte ptr [ebp+4017c90d],cl         
017f:00401597  00eb                add       bl,ch                              
017f:00401599  01e8                add       eax,ebp                            
017f:0040159b  8d15c0174000        lea       edx,[004017c0]                     
017f:004015a1  2bca                sub       ecx,edx                            
017f:004015a3  8d35c0174000        lea       esi,[004017c0]                     
017f:004015a9  90                  nop                                          
017f:004015aa  90                  nop                                          
017f:004015ab  90                  nop                                          
017f:004015ac  90                  nop                                          
017f:004015ad  90                  nop                                          
017f:004015ae  8d3d0a164000        lea       edi,[0040160a]                    v
017f:004015b4  eb01                jmp       004015b7                      < > v
------------------------------------DERVICHE!UPX0+0570--------------------------
    MSR LastBranchToIp=00401570                                                 
:/screendump c:\benvoila.html                                                   
                                                                                
Invalid command                                                         Derviche

Sûr que, si on a un popad sans pushad, le prog il va faire la gueule.

Que peut-on faire ? Nopper le 'mov [00401570], al' et ensuite fixer le 'pushad' sur le disque ? Ouais ! Bonne idée tiens ! Inutile de vous préciser que cette ligne ne figure pas dans l'exe sur le disque. Voyons comment elle est transformée :

GoGoGadgetO bpm 00401824 rw :
 
 

EAX=00000960   EBX=00401B16   ECX=0000005C   EDX=004017C9   ESI=00008C06        
EDI=0067FB98   EBP=0067FB90   ESP=0067FB8C   EIP=00401A1C   o d I S z a P c     
CS=017F   DS=0187   SS=0187   ES=0187   FS=4637   GS=0000   ds:00401824=8E      
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
-----DERVICHE!UPX0+0824---------------------------byte--------------PROT---(0)--
0187:00401824 8E 70 15 40 00 B9 06 00-00 00 80 81 DD 17 40 00  .p.@..........@.^
0187:00401834 0E E2 F7 68 43 15 40 00-C3 55 8B EC 8B 45 0C 83  ...hC.@..U...E..^
0187:00401844 F8 10 75 17 B9 0C 00 00-00 6A 00 FF 75 08 81 C1  ..u......j..u... 
0187:00401854 BC 1A 40 00 FF D1 E9 98-01 00 00 3D 01 02 00 00  ..@........=.... 
0187:00401864 75 28 8B 45 14 EB 01 E8-BA 20 00 00 00 50 6A 02  u(.E..... ...Pj. 
0187:00401874 68 A1 00 00 00 FF 75 08-90 90 90 90 90 81 C2 CC  h.....u......... 
0187:00401884 1A 40 00 FF D2 E9 69 01-00 00 3D 38 01 00 00 75  .@....i...=8...u 
0187:00401894 41 BA 26 00 00 00 68 FF-FF FF 00 FF 75 10 81 C2  A.&...h.....u... 
0187:004018A4 84 1A 40 00 FF D2 B9 2D-00 00 00 EB 01 E8 6A 01  ..@....-......j.v
0187:004018B4 FF 75 10 81 C1 77 1A 40-00 FF D1 B8 0C 00 00 00  .u...w.@........v
-------------------------------------------------------------------------PROT32-
017f:00401a0e  002b                add       [ebx],ch                          ^
017f:00401a10  caa100              retf      00a1                              ^
017f:00401a13  304000              xor       [eax+00],al                        
017f:00401a16  3081c8174000        xor       [ecx+004017c8],al                  
017f:00401a1c  c081c817400006      rol       byte ptr [ecx+004017c8],06         
017f:00401a23  fe89c8174000        dec       byte ptr [ecx+004017c8]            
017f:00401a29  e2eb                loop      00401a16                           
017f:00401a2b  c3                  ret                                          
017f:00401a2c  90                  nop                                          
017f:00401a2d  cc                  int       3                                  
017f:00401a2e  90                  nop                                          
017f:00401a2f  90                  nop                                          
017f:00401a30  eb01                jmp       00401a33                           
017f:00401a32  e8e8330000          call      00404e1f                           
017f:00401a37  006689              add       [esi-77],ah                        
017f:00401a3a  257f104000          and       eax,0040107f                       
017f:00401a3f  90                  nop                                          
017f:00401a40  90                  nop                                          
017f:00401a41  90                  nop                                          
017f:00401a42  90                  nop                                          
017f:00401a43  90                  nop                                          
017f:00401a44  e80e000000          call      00401a57                           
017f:00401a49  33c2                xor       eax,edx                            
017f:00401a4b  eb01                jmp       00401a4e                          v
017f:00401a4d  e885db7505          call      05b5f5d7                      < > v
------------------------------------DERVICHE!UPX0+0A0E--------------------------
    MSR LastBranchToIp=00401A16                                                 
:/screendump c:\decbug.html                                                     
                                                                                
Invalid command                                                         Derviche

Donc pour :

017f:00401824  a270154000          mov       [00401570],al

Ca fait :

((EEA5386564 xor 60) rol 6) - 1 = A270154000
^                                 ^
|                                 |
+- Octets sur le disque           +- mov [00401570], al

Donc pour trouver la valeur d'un nop il faut faire :

((90 + 1) ror 6) xor 60 = 26

Et voilà maintenant que l'on a la valeur du nop, on noppe toute l'instruction en 00401824 (5 nops) mettez des 26 pas des 90, hein ?!

Maintenant passons à la deuxième tache, à savoir, fixer le pushad en 00401570. Voici comment c'est décrypté :
 
 

EAX=00401008   EBX=00000000   ECX=00000036   EDX=0040153B   ESI=81B37A84        
EDI=00000000   EBP=0067FF78   ESP=0067FE14   EIP=00401A80   O d I s z a p c     
CS=017F   DS=0187   SS=0187   ES=0187   FS=3B3F   GS=0000   ds:00401570=94      
--------------------------------------------------------------------------------
ST0  0                                  ST4  0                                  
ST1  0                                  ST5  0                                  
ST2  0                                  ST6  0                                  
ST3  0                                  ST7  0                                  
-----DERVICHE!UPX0--------------------------------byte--------------PROT---(0)--
017F:00401000 60 33 C9 E8 2C 00 00 00-63 77 73 5F 63 6C 61 73  `3..,...cws_clas^
017F:00401010 73 00 2E 2E 2E 4C 6F 61-64 69 6E 67 00 52 41 4E  s....Loading.RAN^
017F:00401020 47 45 00 52 47 4E 00 08-E8 C3 00 00 00 A1 23 10  GE.RGN........#. 
017F:00401030 40 00 33 CA 58 E8 F6 09-00 00 53 E8 FD 07 00 00  @.3.X.....S..... 
017F:00401040 68 3A 14 40 00 64 FF 35-00 00 00 00 64 89 25 00  h:.@.d.5....d.%. 
017F:00401050 00 00 00 BD 4B 48 43 42-66 B8 04 00 90 64 8F 05  ....KHCBf....d.. 
017F:00401060 00 00 00 00 83 C4 04 6A-00 68 3A 14 40 00 6A 00  .......j.h:.@.j. 
017F:00401070 6A 65 FF 35 14 30 40 00-E8 3F 0A 00 00 61 E9 00  je.5.0@..?...a.. 
017F:00401080 00 00 00 61 6A 00 90 90-90 E8 AC 0A 00 00 A3 14  ...aj...........v
017F:00401090 30 40 00 BB 10 00 00 00-6A 0A 6A 00 90 90 90 6A  0@......j.j....jv
-------------------------------------------------------------------------PROT32-
017f:00401a6b  8d0d86154000        lea       ecx,[00401586]                    ^
017f:00401a71  8d153b154000        lea       edx,[0040153b]                    ^
017f:00401a77  2bca                sub       ecx,edx                            
017f:00401a79  c0813a15400002      rol       byte ptr [ecx+0040153a],02         
017f:00401a80  80b13a15400005      xor       byte ptr [ecx+0040153a],05         
017f:00401a87  fe893a154000        dec       byte ptr [ecx+0040153a]            
017f:00401a8d  e2ea                loop      00401a79                           
017f:00401a8f  c3                  ret                                          
017f:00401a90  cc                  int       3                                  
017f:00401a91  cc                  int       3                                  
017f:00401a92  ff2510204000        jmp       [GDI32!CreatePatternBrush]         
017f:00401a98  ff2500204000        jmp       [GDI32!ExtCreateRegion]            
017f:00401a9e  ff2504204000        jmp       [GDI32!GetStockObject]             
017f:00401aa4  ff2508204000        jmp       [GDI32!SetBkMode]                  
017f:00401aaa  ff250c204000        jmp       [GDI32!SetTextColor]               
017f:00401ab0  ff2578204000        jmp       [USER32!CreateWindowExA]           
017f:00401ab6  ff257c204000        jmp       [USER32!DefWindowProcA]            
017f:00401abc  ff256c204000        jmp       [USER32!DialogBoxParamA]           
017f:00401ac2  ff2574204000        jmp       [USER32!DispatchMessageA]          
017f:00401ac8  ff2570204000        jmp       [USER32!EndDialog]                 
017f:00401ace  ff254c204000        jmp       [USER32!GetMessageA]               
017f:00401ad4  ff2544204000        jmp       [USER32!GetSystemMetrics]          
017f:00401ada  ff2550204000        jmp       [USER32!LoadBitmapA]               
017f:00401ae0  ff2540204000        jmp       [USER32!LoadCursorA]              v
017f:00401ae6  ff2538204000        jmp       [USER32!LoadIconA]            < > v
------------------------------------DERVICHE!UPX0+0A6B--------------------------
:u eip-15                                                                       
:/screendump c:\pushad.html                                                     
                                                                                
Invalid command                                                         Derviche

Donc pour obtenir un 60 (pushad) il faut faire :

((60 + 1) xor 5) ror 2 = 19

On place ensuite cette valeur en 00401570. Et voilà bug fixed ! TARGET TOTALLY CRACKED ! Regardez le source du programme, je me suis surpassé je trouve :) Attention ! Ce n'est pas un patcheur, c'est un générateur : Pas besoin de donner un exe au prog, il s'en charge tout seul.
 
 
>
 CONJONCTIVE IT ! ::  

Pfiou ! Voilà... Et dire que je cherchais deseperement des bons crackmes en Pologne ou autre alors qu'il y en avait un tres bon dans nos verts paturages :) Il est plutot 'rara avis' cependant :( <- Pages roses en cas d'incompréhension :)

Je suis pas sûr non-plus que ce crackme respecte vraiment les droit de l'Homme, parceque là j'ai une hémoragie cérebrale. Mais bon, ma mère m'a filé deux cachtons, sa devrai aller mieux d'ici peu... Si il y a quelqu'un qui, à tout hasard, s'interesse à ma santé ici :)

C'est vrai que j'ai pas mal morflé, si j'aurais tout détaillé ce que j'ai fait ce tut aurait été plus long que le Millenium de tHE ANALYST :) Mais comme j'ai lu dans un livre (Clairette et le Chateau des vacances - à partir de 6 ans :) : Un vrai guerrier dédaigne ses plaies... Snif, c'est beau, hein ouais ?! Ca faisait pas mal de temps que j'ai pas touché à un *VRAI* hardcoded serial avec des ror's et tout le bordel, donc j'ai perdu beaucoup de temps sur des trucs tout con.

Je suis vraiment content d'avoir (enfin) résolu ce crackme ! En plus je ne croit pas avoir vu la solution de ce crackme...
Le RIF vous apporte, donc, l'exclusivité, hahaha :) <- J'espere que je suis bien le premier sinon j'aurai l'air fin :)

Il y a des dixaines de méthodes différentes et plus facile (dont l'une serrait de s'appeller 'personne' :) de fixer la string à votre convenance, mais je trouve la mienne bien parce qu'on fait le tour du programme, et pour faire un tut c'est mieux.

N'oubliez pas : Un crackme et toujours simple et évident... Une fois qu'on l'a résolu.
Evidement si le listing aurait été clair, le truc aurait été torché en deux secondes, et vu que je ne suis pas un live approach's man, j'ai pas mal dansé :p

Si il y a un truc qui vous échappe, dites-le moi. Je suis toujours pret à aider quelqu'un qui me mail, et je ne vous jetterai pas au cachot non-plus (voir délire de tONiARd et RocketSpawn :(

Ensuite, la suite :
 
 
>
 GREET'EM ALL ! ::  

All my greetz/thanx/respectz goes to :

(Aujourd'hui tout le monde il est '+' c'est moi qu'j'ai décidé :)

>
 FUCK'EM ALL ! ::  

Et enfin une grosse dédicasse à deux gros lamerz :

(Les '-' awards sont distribués)

Bisous !
the Dr. rED mEAT (on peut porter un casquette, user d'un langage ordurier et être cracker :)
And remember : RESiSTANCE IS FUTiLE !
 
 
.
Mail the Dr. rED mEAT
Visit our website RIF 2k3
Remember me ? "Throw ya gunz in the air !"
Remember me ?! "Slam ! Slam !"
Remember me ?!?! "Nigga 'Bacdafucup' !"
Remember me ??!?!! "Chka-chka-Onyx !"
 No warez ; Free tools ; High quality tutorials ;
RESiSTANCE IS FUTiLE 2k3
© 2003 the Dr. rED mEAT
 
 
¸,¿o©º°¨¨°º©o¿,¸ And remember : RESiSTANCE IS FUTiLE ¸,¿o©º°¨¨°º©o¿,¸