ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Programme : FireHand Ember v3.0.7 
  Protection:    Numero de Serie 
 Ecrit par : LuCiFuGe RoFoCaLe [STYX]  
Type de Crack: REG + Patch 
 Date      : 12/1997                   
Niveau:        Debutant Confirme
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Introduction:
ÄÄÄÄÄÄÄÄÄÄÄÄÄ
Ce shareware possede plusieurs petites astuces qui seront tres bien a etudier
dans notre petite initiation au crack. Je vais distribuer ce soft avec mon
tutorial mais si vous ne l'avez pas regarder sur: http://www.firehand.com
ou PC TEAM CD PRO numero 30

Phase D'approche:ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ        
a) on voit dans le premier nag screen, un compteur de lancement.
b) il y a une possibilite de s'enregistrer par un numero de serie :)
Nous allons laisser tomber le compteur de lancement, qui etant limite a 35
devrait etre nettement suffisant pour notre crack. Donc on va essayer la
methode habituelle pour les numeros de serie: Je pose un BPX hmemcpy, je
clique deux fois sur F5 (une fois pour la copie du nom et une fois pour le
numero de serie), je trace comme un fou avec F10 pour me retrouver devant:
409F90:   LEA  EDX,[ESP+C] = mon mauvais code
                  LEA  EAX,[ESP+20]        
                  PUSH EDX        
                  PUSH EAX        
                  MOV  DWORD PTR[ESP+28],B300FEA1
                 CALL 4138D6  = Premier CALL a etudier        
                 MOV  EDI,EAX        
                 CMP  EDI,-1        
                 MOV  [ESI+34],EDI       
                JNZ  409FB5       
                 XOR  EAX,EAX       
                JMP  409FE2  = "Mauvaise Boite"

409FB5: TEST ESI,ESI
                JZ   409FD6        
               CMP  BYTE PTR[ESI],0        
               JZ   409FD6        
               LEA  ECX,[ESP+20]        
               PUSH ESI        
               PUSH ECX        
               CALL 41389A = Deuxieme CALL a etudier        
               LEA  EDX,[ESP+20]        
               PUSH EAX        
               PUSH EDX        
               CALL 413894 = Troisieme CALL a etudier        
               JMP  409FD9

409FD9: OR   EAX,-1
                 XOR  ECX,ECX        
                 CMP  EAX,EDI        
                 SETZ CL        
                 MOV  EAX,ECX

409FE2: TEST EAX,EAX        
                 JNZ  40A002        
                 PUSH 41B8B4        
                 PUSH EBX        
                 CALL 41382E = Affiche la "Mauvaise Boite"

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄEtude du premier CALL:ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

4138D6:   JMP  E0091B0 = Appel a une routine de Fireutil.dll

E0091B0: SUB  ESP,C        
                  PUSH ESI        
                  MOV  ESI,[ESP+8]        
                   PUSH ESI

E0091B9: CALL [E001E44C]        
                  CMP  EAX,C   = mon Code doit contenir 12 chiffres       
                   JZ   E0091CE = si pas assez de chiffres alors pas de saut        
                   OR   EAX,-1  = et mettre -1 dans EAX        
                   POP  ESI        
                   ADD  ESP,C        
                   RET  

8E0091CE: MOV  EAX,ESI = contient notre mauvais code        
                      ADD  ESI,4        
                      PUSH ESI        
                      MOV  CX,[EAX]        
                      MOV  [ESP+8],CX        
                      MOV  DL,[EAX+2]        
                      LEA  EAX,[ESP+B]        
                      PUSH EAX        
                      MOV  [ESP+E],DL        
                      CALL [E00BED0]

E0091FD:  TEST EAX,EAX        
                    JNZ  E00920B = 12 chiffres donc le Code alors jump        
                    OR   EAX,-1        
                    POP ESI        
                    ADD  ESP,C        
                    RET  

8E00920B: MOV  EAX,[ESP+18] =EAX contient une cle calculee avec notre code
                     POP  ESI       
                      ADD  ESP,C        
                     RET  8  Donc comme vous pouvez le voir une cle est calculee avec notre mauvais code,
celle-ci servira sans doute apres.

Pour moi la cle-code = cccb44a

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Etude du deuxieme CALL:
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

                  CALL 41389A = Sur JMP E009222 Routine de FireUtil.dll
E009222 :MOV  EBP,[ESP+10]
                   PUSH ESI        
                   PUSH EDI        
                   PUSH EBP       
                    XOR  EDI,EDI        
                   CALL E01E44C        
                   MOV  EBX,EAX       
                   XOR  ESI,ESI        
                   TEST EBX,EBXE

009237: JLE  E009254

E009239: MOVSX EAX, BYTE PTR[EBP+ESI]        
                   PUSH EAX

E00923E:CALL E00CEC0        
                  LEA  ECX,[EDI+ESI+1]       
                  ADD  ESP,4        
                  IMUL EAX,ECX        
                  ADD  EDI,EAX        
                  INC  ESI        
                  CMP  ESI, EBX = ESI=1 EBX=8 la premiere fois        
                  JL   E009239        
                  MOV  EAX,EDI        ...               
                 RET  8Cette routine calcule, elle aussi une cle.

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Etude du troisieme CALL:
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Appel encore d'une routine de FireUtil.dll

E009260: MOV  EAX,[ESP+4]        
                   MOV  ECX,[ESP+8]        
                   MOV  EAX,[EAX]       
                   XOR  EAX,ECX        
                  JGE  E09270             
                   NEG  EAX                        

E009270: RET  8 dans XOR EAX,ECX on se sert de nos deux cles precedement calculees pour 

constituer la cle finale :) pour moi c'est 4F24940F a mettre dans la base
de registre. Mais essayons de faire un patch pour ce soft..

Phase Finale:
ÄÄÄÄÄÄÄÄÄÄÄÄÄ

On obtient donc comme schema de protect: 409F90: LEA  EDX,[ESP+C] = mon mauvais code        
LEA  EAX,[ESP+20]        
PUSH EDX        
PUSH EAX        
MOV  DWORD PTR [ESP+28], B300FEA1        
CALL 4138D6  = Calcul la premiere cle        
MOV  EDI,EAX        
CMP  EDI,-1        
MOV  [ESI+34],EDI         
JNZ  409FB5       
 XOR  EAX,EAX        
JMP  409FE2  ="Mauvaise Boite"

409FB5: TEST ESI,ESI        
                JZ   409FD6        
                CMP  BYTE PTR[ESI],0        
                JZ   409FD6        
                LEA  ECX,[ESP+20]        
                PUSH ESI        
                PUSH ECX        
               CALL 41389A = Calcul de la deuxieme cle        
               LEA  EDX,[ESP+20]        
               PUSH EAX        
               PUSH EDX        
               CALL 413894= Calcul du code final (EAX)        
             JMP  409FD9

409FD9: OR   EAX,-1       
                 XOR  ECX,ECX       
                CMP  EAX,EDI = Compare le bon code et la premiere cle        
                SETZ CL        
                MOV  EAX , ECX

409FE2: TEST EAX,EAX       
                JNZ  40A002         
                PUSH 41B8B4        
               PUSH EBX        
               CALL 41382E = Affiche la "Mauvaise Boite" Essayer de mettre la valeur de EDI dans EAX a la sortie du CALL 413894, et
presser F5....Le soft vous indique que votre code est juste :)Donc vous faites les modifications dans l'exe et hop vous relancez....
Merde cela ne marche pas et "Invalid Key" apparait. Essayons de comprendre pourquoi,
lesoft a modifie dans la base de registre User="" par User="Lucifuge" et Key=0 par Key=CCCB44Ah. Ben voila notre probleme, 
c'est le mauvais code qui est mis dans la base de registre; donc effacons les valeurs dans key et user
de la base de registre, et relancons notre soft. 
Cette fois copier EAX dans EDI, 
Idem dans la base de registre !!!! Donc il y a une copie du mauvais
codequi se ballade en memoire:        
409F90: LEA  EDX,[ESP+C] = mon mauvais code        
                LEA  EAX,[ESP+20]        
                PUSH EDX        
                PUSH EAX        
                MOV  DWORD PTR [ ESP+28], B300FEA1        
                CALL 4138D6  = Calcul la premiere cle        
                MOV  EDI,EAX        
               CMP  EDI,-1        
                MOV  [ESI+34], EDI = Stocke la cle calculee en 4138D6 pour le REG
               JNZ  409FB5       
               XOR  EAX,EAX       
              JMP  409FE2  ="Mauvaise Boite" Ben vi, c'est tout simplement en [ESI+34] que le code qui sert pour la base
de registre est copie. Donc je vais regarder ou je peux le recuperer...
Il y a dans la DLL, mais il faut savoir que celle ci a un checksum donc plus
de travail, je vais plustot chercher dans l'exe.        

PUSH EDX        
CALL 413894 = Troisieme CALL        
JMP  409FD9 

409FD9: OR   EAX,-1        
XOR  ECX,ECX        
CMP  EAX,EDI        
SETZ CL        
MOV  EAX, ECX

409FE2: TEST EAX,EAX        
                JNZ  40A002        
                PUSH 41B8B4        
                PUSH EBX        
                CALL 41382E        
                PUSH EDX        
                CALL 413894        
               JMP  409FE6

409FD9: OR   EAX,-1       
                XOR  ECX,ECX        
                CMP  EAX,EDI        
                SETZ CL        
                MOV  EAX,ECX        
                TEST EAX,EAX        
                JNZ  40A002

409FE6: MOV  EDI,EAX        
                MOV  [ESI+34],EAX        
                JMP  409FD9 Cela fait bcp de changement mais cela fonctionne et c'est bien le principal.
Pour le Patch:        
Offset: 93D4 = EB 10        
Offset: 93E6 = 8B F8 89 46 34 EB EC        
Et n'oubliez pas de mettre 12 chiffres au code pour l'enregistrement

Pour le Reg:        dans HKEY_LOCAL_MACHINE\SOFTWARE\Firehand Technologies\Ember\   

Mettre user: Lucifuge Rofocale [STYX]               key:  0C925633        
ou     
user: Lucifuge               key:  4F24940F 

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Voila c'est enfin fini !!!                                

LuCiFuGe RoFoCaLe [STYX] 1997--====================987654321_0==