			-="Runnin' Butt-On"=-
		            [lite version]
		-------------------------------------
		(c) The AntiXryst & tC... (June 1999)
		 Tutorial de Lucifer48, 24 juin 1999
		-------------------------------------


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

Etant donn que l'on ne peut pas appuyer sur le boutton "register", j'en
dduit que le serial est vrifi aprs chaque appuie d'une touche.
J'entre donc mon nom est nom serial ftique sans le dernier caractre. Je pose un
bpx hmemcpy, et j'entre le dernier caractre de mon serial.
Nous sommes ici:

XXXX:0045640A  CALL 00423854        ;on sort d'ici
XXXX:0045640F  MOV  EAX,[EBP-18]    ;mon nom
XXXX:00456412  CALL 00403AD0        ;ressort la taille du nom
XXXX:00456417  ADD  EAX,11          ;+17
XXXX:0045641A  CMP  EAX,14          ;le nom doit faire 3 caractres minimum
XXXX:0045641D  JL   0045640C
...
ensuite delphi lit le serial, teste si la taille est nulle,
il relit encore une fois le nom, et reteste la taille.
Sauveagarde la longueur du nom en [EBP-14], ce sera l'indice d'une boucle.
(cette boucle est compose de nombreuses additions)


============
2. LA BOUCLE
============

allez voir la boucles, ce n'est que des additions dans tous les sens.
...
XXXX:00456A1  INC  DWORD PTR [EBP-0C]
XXXX:00456A4  DEC  DWORD PTR [EBP-14]
XXXX:00456A7  JNZ  00456465           ;fin de la boucle (a l'issu de cette boucle, il y a 4 ..
XXXX:00456A9  MOV  EAX,[EBP-04]       ;.. valeurs importantes: EBX, ESI, [EBP-04] et [EBP-08])
XXXX:00456AC  IMUL DWORD PTR [EBP-08] ;rsultat en eax
XXXX:00456AF  ADD  ESI,EAX
XXXX:00456B1  XOR  ESI,EBX
XXXX:00456B3  AND  ESI,7FFFFFFF       ;on veut que des nombres positifs


A ce moment ESI contient le checksum dfinitif du nom, il va ensuite tre compar au serial.

XXXX:004564D8  LEA EAX,[EAX+EBX]      ;EAX= serial convertie en hxa
XXXX:004564DB  XOR EAX,EBX            ;ebx  mme valeur qu'en sortant de la boucle
XXXX:004564DD  AND EAX,7FFFFFFF       ;on veut des nombres positifs
XXXX:004564E2  CMP ESI,EAX            ;vrification (ultra classique)
XXXX:004564E4  JNZ 0045640C           ;(jump) = mauvais cracker

Quand le bon serial est entr, on peut enfin appuyer sur le boutton register pour voir notre
rcompense :)

Name/ Lucifer48
Serial/ 1738114503

=============
3. CONCLUSION
==============

Ci-joint une source en c++, comme keygen (c'est fait sous linux), et un autre fait en Delphi (3.0).
Ce crackme n'tait pas trs difficile. J'ai hte d'essayer l'[advanced-version].

Greetings: ID group, Eternal Bliss (wonderfull site), tC... (for his *big* crackme in delphi ),
           ACiD BuRN, and others i forgot.

Lucifer48
