Cracks-Hacks
(2):
: push ecx ; sauvegarde le nbre de caract. de notre compteur sur la pile
: inc eax ; eax:=eax+1 ie incrémentation du caratère à droite
: mov byte ptr [esp+ecx+00000080], al ; le replace en [esp+7c]
: cmp eax, 0000003A ; compare le caractère à ";"
: jne bye_bye ; pas égal <=> on le renvoit dans la routine de vérif' d'ACDSee
: mov byte ptr [esp+ecx+00000080], 30 ; égal ? On le remplace par 0 (0x30 en ASCCII !!)
: dec ecx / on vérifie tous les chiffres car après 1699, on
: cmp ecx, FFFFFFFF / a 1700, donc il faut incrémenter 3 caractères !!
: je routine_3 /
: xor eax, eax /
: mov al, byte ptr [esp+ecx+00000080] /
: jmp (2) / |
Attention : on a mis ecx sur la pile, ecx est un registre 32 bits donc 4 octets, donc on a déplacer la pile de 4 octets, d'où on a un mov byte ptr
[esp+ecx+80] au lieu de mov byte ptr [esp+ecx+7C] !!!! (0x80 = 0x7C + 0x04) |
La routine_3 est une routine spéciale qui permet de passer de 999 à 1000 par exemple :
: pop ecx ; restaure la pile
: mov [esp+ecx+7D], 30 ; met un "0" en plus à droite
: mov al, byte ptr [esp+7C] ; incrémente le chiffre le plus
: inc eax ; à gauche.
: mov byte ptr [esp+7C], al ; et le replace en [esp+7c]
: jmp vérif ; retour à la routine de vérif'.
Il y a également la routine bye_bye :
: pop ecx ;restaure la pile
: jmp vérif ; retour à la routine de vérif'. |
Evidement, pas question d'écrire ça avec son pauvre éditeur
hexa, Soft-Ice nous permet d'assembler notre code à l'aide de la commande "a [adresse]".
Voici la source complête du reverse enginering d'ACDSee v2.22 avec les offsets (à assembler directement sous SI !!!). En noir : le code original et en rouge les offset modifiés. |
précédent
Retour
à l'accueil
suivant
©Copyright Wardog's House
|