			------------------------------
			CrackMe [id:14] coded by tC...
			Tutorial de Lucifer48, 17 juin
			------------------------------

Type de protection: Name/Serial (Single licence / Worldwide license)

===============
1. INTRODUCTION
===============

Un bpx hmemcpy nous permet d'accder au code du programme (en delphi).

XXXX:0043F6B9  CALL 00421960          ;on sort d'ici
XXXX:0043F6BE  MOV  EAX,[EBP-08]      ;d EAX: mon nom
XXXX:0043F6C1  CALL 00403A1C          ;ressort la taille du nom (en eax)
XXXX:0043F6C6  CMP  EAX,03
XXXX:0043F6C9  JL   0043F841          ;notre nom doit donc comporter 3 lettres minimum

on continue:

XXXX:0043F6F5  MOV  EAX,[EBP-08]      ;d EAX: mon serial
XXXX:0043F6F8  CALL 00403A1C          ;ressort la taille du nom (en eax)
XXXX:0043F6FD  CMP  ESI,EAX           ;ESI=taille du nom / EAX=taille du serial
XXXX:0043F6FF  JNZ  0043F841          ;seconde info: mme taille pour le nom et le serial
...
code de delphi... pas trs interessant
on arrive ici:

XXXX:0043F7BE  CALL [EDX+00000B8]     ;<=> MOV AL,[EAX+000001F1]
XXXX:0043F7C4  TEST AL,AL             ;'Single licence' ou 'Worldwide license'
XXXX:0043F7C6  JZ   0043F7CF          ;--\
XXXX:0043F7C8  CALL 0043F58C          ;  |  ---\
XXXX:0043F7CD  JMP  0043F7D4          ;  |     |
XXXX:0043F7CF  CALL 0043F5F0          ;<-/     |
XXXX:0043F7D4  CMP  DWORD PTR [0044192C],00  <-/
XXXX:0043F7DB  JNZ  0043F80A

On reconnait bien, le schma, si on a slectionn 'Single licence' (AL=01), on va dans le
call 0043F58C, si on a slectionn 'Worldwide license' (AL=00), on va dans le call 0043F5F0.
Dans les deux cas on doit avoir [0044192C]=0.

=================================
2. SINGLE LICENCE (call 0043F58C)
=================================

Ca peut se rsumer en une boucle:

XXXX:0043F5CC  MOV  EDX,0044182C     ;voir remarque (plus bas)
XXXX:0043F5D1  MOV  ESI,[EAX]        ;eax pointe sur un caractre du serial
XXXX:0043F5D3  SUB  ESI,[EDX]        ;edx pointe sur un caractre du nom
XXXX:0043F5D5  JZ   0043F5DD
XXXX:0043F5D7  ADD  [0044192C],ECX   ;n'oublions pas qu'on doit avoir [0044192C]=0  la fin
XXXX:0043F5DD  INC  ECX
XXXX:0043F5DE  ADD  EDX,04           ;caractre suivant
XXXX:0043F5E1  ADD  EAX,04           ;caractre suivant
XXXX:0043F5E4  DEC  EBX              ;indice de boucle -1
XXXX:0043F5E5  JNZ  0043F5D1         ;BOUCLE

Remarque: voil ce qu'on trouve en 0044182C (c'est mon nom!)
-----CM_ID14!BSS+082C-----------------------------------------------PROT---(0)--
XXXX:0044182C 4C 00 00 00 75 00 00 00-63 00 00 00 69 00 00 00  L...u...c...i...
XXXX:0044183C 66 00 00 00 65 00 00 00-72 00 00 00 34 00 00 00  f...e...r...4...
XXXX:0044184C 38 00 00 00                                      8...
--------------------------------------------------------------------------------
Le serial a subit le mme traitement, sauf qu'il a t retourn.

  Name/ Lucifer48
RegNo./ 84reficuL

====================================
3. WORLDWIDE LICENCE (call 0043F5F0)
====================================

L encore, a se rsume  une unique boucle:

XXXX:0043F631  MOV  EDX,0044182C
XXXX:0043F636  MOV  ESI,[EDX]       ;mon nom
XXXX:0043F638  ADD  ESI,08
XXXX:0043F63B  MOV  EDI,[EAX]       ;mon serial ( l'envers)
XXXX:0043F63D  SUB  EDI,ESI
XXXX:0043F63F  JZ   0043F647
XXXX:0043F641  ADD  [0044192C],ECX
XXXX:0043F647  INC  ECX
XXXX:0043F648  ADD  EDX,04          ;caractre suivant
XXXX:0043F64B  ADD  EAX,04          ;caractre suivant
XXXX:0043F64E  DEC  EBX             ;indice de boucle -1
XXXX:0043F64F  JNZ  0043F636        ;BOUCLE

Ca ressemble fortement  ce qui prcde. Pas besoin d'en dire d'avantage, le code est vident.

  Name/ Lucifer48
RegNo./ @<zmnqk}T


Greetings goes to: Torn@do, Volatility, tC, Eternal Bliss, ACiD BuRn,
                   et aux bons crackers franais.

Lucifer48
