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



J'entre une combinaison au hazard, je pose un bpx hmemcpy, je click sur le boutton "<-check->"
et a marche pas :( J'essaye aussi le bpx IsDlgButtonChecked, qui ne marche pas non plus.
Comment rentrer dans le code ET au bon endroit ?
Je dsassemble avec W32Dasm, je regarde dans "String Data References", dans l'espoir de trouver
quelque chose. Je trouve la chane "Registered", je click dessus et je m'aperois que je touche
au bon endroit :) Beaucoup de tests identiques avec des jz/jnz 004403EB. Je note donc l'adresse
du dbut de la routine (004402EC) et j'y mets un bpx. Nous somme ici:

XXXX:004402EC  PUSH EBX                 ;soft-ice s'est arrt ici
XXXX:004402ED  MOV  EBX,EAX
XXXX:004402EF  MOV  EAX,[EBX+00000308]  ;un boutton
XXXX:004402F5  MOV  EDX,[EAX]
XXXX:004402F7  CALL [EDX+000000B8]      ;CMP BYTE PTR [EAX+000001F2],01 / SETZ AL
XXXX:004402FD  TEST AL,AL
XXXX:004402FF  JNZ  004403EB            ;pas coch = (no jump)
...
 partir d'ici, on a cette sequence (voir ci-dessous) 11 fois, 'yyy' vaut successivement:
310, 31C, 320, 324, 328, 330, 304, 30C, 314, 318, 32C.
(malheureusement ces nombres ne sont pas les handles des buttons)

XXXX:004403xx  MOV  EAX,[EBX+00000yyy]
XXXX:004403xx  MOV  EDX,[EAX]
XXXX:004403xx  CALL [EDX+000000B8]      ;CMP BYTE PTR [EAX+000001F2],01 / SETZ AL
XXXX:004403xx  TEST AL,AL
XXXX:004403xx  JZ/JNZ 004403EB

En fait, chaque boutton est test, le crackme vrifie seulement si la grille de droite est
valide. Pour obtenir la grille de droite, on doit cocher les diffrents bouttons de la
grille de gauche, et il y a bien sr plusieurs possibilits pour arriver  un mme rsultat.
La routine se finie ainsi:

XXXX:004403D9  JZ   004403EB
XXXX:004403DB  MOV  EDX,004403F8
XXXX:004403E0  MOV  EAX,[EBX+000002D0]
XXXX:004403E6  CALL 004210B0
XXXX:004403EB  POP  EBX
XXXX:004403EC  RET

En condisrant la grille (de droite) suivante:

A   B   C   D
E   F   G   H
I   J   K   L

Voil les comparaisons effectues (dans l'ordre):

* B (308): non coch	* A (304): coch
* D (310): non coch	* C (30C): coch
* G (31C): non coch	* E (314): coch
* H (320): non coch	* F (318): coch
* I (324): non coch	* K (32C): coch
* J (328): non coch
* L (330): non coch


Voil les solutions que j'ai trouv (grille de gauche):

O  X  O  O
O  O  O  X
O  O  O  X

O  O  O  O
O  O  X  X
O  O  O  X

O  O  X  O
O  O  X  X
O  O  O  X

O  O  X  O
O  O  X  X
X  O  O  X

O  X  O  O
O  O  X  X
O  O  O  X

O  X  X  O
O  O  X  X
O  O  O  X

O  X  X  O
O  O  X  X
X  O  O  X

X  X  X  O
O  O  X  X
O  O  O  X

X  X  X  O
O  O  X  X
X  O  O  X

Je ne sais pas combien j'en ai oubli, mais c'est dj pas mal!

Greetings: ID group, Eternal Bliss (wonderfull site), tC... (for his *big* crackme in delphi ),
           ACiD BuRN, et ceux que j'aime et que j'apprcie.

Lucifer48
