H*D*D*L*L*F.4.40.exe

Vous avez un problème pour cracker ou vous souhaitez parler de reversing en général...

Re: H*D*D*L*L*F.4.40.exe

Messagepar rvq35 » 11 Février 2017, 12:27

Bonjour
HappyMan a écrit:Le plus gros du boulot c'est de savoir ce que fait la routine de vérification (il y a 2 instructions asm a connaitre ou a découvrir).

Un indice please pour me guider vers ces 2 instructions
HappyMan a écrit:si exa = 38 ou eax=3A alors stop et affiche le Code
Code=code+1

mais je ne trouve pas la formule code=code+1
Trouver ce sérial ne sert à rien en soi mais je sui très tenace et je veux trouver par curiosité comment créer un sérial valide sur cette cible. Il y a des call dans tous les sens et ça déroute. Je comprend de mieux en mieux les fonctions et appels de la pile par tracage et suivi attentif des modifications de registres. Mais c'est pas évident quand même, alors que bon nombre d'entre vous avez rapidement trouvé la solution.
Merci
rvq35
Mega Crackeur !
Mega Crackeur !
 
Messages: 255
Inscription: 07 Mars 2013, 07:21

Re: H*D*D*L*L*F.4.40.exe

Messagepar HappyMan » 13 Février 2017, 12:00

Bonjour,

Voici l'indice du jour:

La routine de calcul est ici:
004EF236 |. E8 D1F2FFFF CALL 004EE50C

C'est dans ce call qu'est calculé EAX, rien de bien étrange dans cette routine sauf peut être 2 instructions asm.
4 appels à une chaine de caractère (qui n'est pas un sérial mais plutôt un alphabet)
La routine cherche la place de certains caratères de TON sérial dans l'alphabet et les ajoutes
ex:
Si ton alphabet est ABCDEFG

et que ton sérial est CADE, tu auras: 3+1+4+5

J'arrête là sinon je donne la solution.

HM

PS:
Réponds à ces questions tu auras bien avancé:
1- Combien de caractère doit faire ton sérial ?
2- Quelle est la chaine de caractère qui sert d'alphabet ?
3- Quels sont les caractères de ton sérial qui sont testés ?
Qui rira n'amasse pas mousse.
A la saint Barnabé on fait la chasse au boulet.
A la saint Alban la misère s'abat sur le gland.
Avatar de l’utilisateur
HappyMan
Mega Crackeur !
Mega Crackeur !
 
Messages: 296
Inscription: 21 Novembre 2006, 11:43
Localisation: Paris

Re: H*D*D*L*L*F.4.40.exe

Messagepar rvq35 » 15 Février 2017, 09:07

Merci Happyman
1-le sérial doit faire 19 caractères (13 en Hexa)
2-la chaine qui sert d'alphabet est
"2345689QWERTYUPASDFHGJKLZXCVBNM"
3-je pense que les caractères de mon sérial qui sont testés sont uniquement ceux qui figurent ci dessus car tous les autres sont invalides ?

Je remarque que la routine est bien pensée quand même et que la somme des places des caractères doit faire soit 38 soit 3A mais je ne vois pas la commande qui recherche justement la place des caractères du sérial par rapport à la chaine qui va de 2 à M.
C'est peut être dans un call entre 4EE50C et 4EE6BA ?
rvq35
Mega Crackeur !
Mega Crackeur !
 
Messages: 255
Inscription: 07 Mars 2013, 07:21

Re: H*D*D*L*L*F.4.40.exe

Messagepar HappyMan » 15 Février 2017, 22:24

il y a plusieurs appels a la même fonction.

petit rappel sur les appels de fonction avec une fonction imaginaire trouveCar:

a=trouveCar(Alphabet; Caratere a trouver)

une fois compilé dans Olly on voit:

Push Caractere à trouver
Push Alphabet
Call trouveCar

bien sur le push peut prendre d'autres formes on peut tout simplement mettre les valeurs dans un registre avant de les utiliser avec mov ;)

Pour avancer réponds aux questions:

1- Quelle est l'adresse de la fonction trouveCar ?
2- Combien de fois fait on appel à cette fonction ?
3- A part l'alphabet qu'est ce qui est "pushé" avant l'appel à trouveCar ?
4- A ton avis, combien de caractères de ton sérial sont testés ?
5- Question qui tue: Lesquels ?

HM
Qui rira n'amasse pas mousse.
A la saint Barnabé on fait la chasse au boulet.
A la saint Alban la misère s'abat sur le gland.
Avatar de l’utilisateur
HappyMan
Mega Crackeur !
Mega Crackeur !
 
Messages: 296
Inscription: 21 Novembre 2006, 11:43
Localisation: Paris

Re: H*D*D*L*L*F.4.40.exe

Messagepar rvq35 » 18 Février 2017, 00:09

Bonsoir, je reconnais que le codage est un peu léger car en mettant un serial bidon de 19 fois la lettre p par exemple, il valide la licence en Home licence. Bref, c'est une parenthèse mais je recherche toujours.
HappyMan a écrit:1- Quelle est l'adresse de la fonction trouveCar ?

je dirais 407F5C
HappyMan a écrit:2- Combien de fois fait on appel à cette fonction ?
4 fois
HappyMan a écrit:3- A part l'alphabet qu'est ce qui est "pushé" avant l'appel à trouveCar ?

c'est là que je ne comprends pas car c'est le local 10-11-12-13 qui sont virés en eax mais il devrait y avoir mes caractères bidon alors que je ne vois rien? je pense aux lignes 4EE5B5 4EE5EA et suivants
HappyMan a écrit:4- A ton avis, combien de caractères de ton sérial sont testés ?

je pense 4 caractères testés 4 fois de suite ce qui explique le sérial de 4x4 = 16 + 3 neutres au milieu ?
HappyMan a écrit:5- Question qui tue: Lesquels ?

Je suppose ceux qui sont dans la liste alphabet ?
Je ne sais pas si je "brule" en tout cas même si ça s'éclaircit dans mon esprit, je suis loin de constater la routine qui recherche la place des caractères et des bons en plus...
Et t'as trouvé la solution en un court laps de temps, chapeau Happyman :o
rvq35
Mega Crackeur !
Mega Crackeur !
 
Messages: 255
Inscription: 07 Mars 2013, 07:21

Re: H*D*D*L*L*F.4.40.exe

Messagepar HappyMan » 18 Février 2017, 09:38

Bon faut creuser encore...
Il me semble que certaines de tes bases sont encore un peu fragiles, mais tu es là pour apprendre ? donc on y va:

1- tu lances le soft dans Olly
2- tu poses un breakpoint en 004EE50C
3- F9, il break une premiere fois sans intéret, F9
4- Tu rentre un sérial comme celui ci: abcdefghijklmnopqrs

Pourquoi celui ci ? on sait qu'il doit faire 19 caractères et pour savoir quels caractères sont traités il vaut mieux qu'ils soient tous différents.

5- F9 tu arrives ici

Code: Tout sélectionner
CPU Disasm
Address   Hex dump          Command                                  Comments
004EE50C  /$  55            PUSH EBP                                 ; HDDLLF_4_40.004EE50C(guessed void)


si tu regarde ce que contient EAX à ce moment précis: une adresse de la pile qui pointe vers une chaîne de caractères: ABCDEFGHIJKLMNOPQRS
Notre sérial en majuscule !! Nouvel indice notre sérial ne respecte pas la case.

Bon maintenant ces 4 appels à une chaine étrange:
Code: Tout sélectionner
CPU Disasm
Address   Hex dump          Command                                  Comments
004EE5B5  |.  8B45 D8       MOV EAX,DWORD PTR SS:[LOCAL.10]
004EE5B8  |.  8B15 60ED4F00 MOV EDX,DWORD PTR DS:[4FED60]            ; UNICODE "2345689QWERTYUPASDFHGJKLZXCVBNM"
004EE5BE  |.  E8 9999F1FF   CALL 00407F5C                            ; [HDDLLF_4_40.00407F5C


4 fois la même chose mais avec des variables différentes

Fais F8 jusqu'a 004EE5B8 y a quoi dans EAX ? Une adresse de la pile je te laisses "follow in dump"
On y trouve 'B' , c'est peut être un coincidence mais B ne serait-il pas le DEUXIEME caractère de notre sérial? Voila pourquoi faut pas mettre ppppppppppppppppppp comme sérial bidon sinon tu vois moins vite les choses

on continu avec F8, maintenant il mov la chaîne et maintenant le call
Y a quoi dans EAX à la sortie du call ? 1D ou 29 en décimal, je te laisse deviner comment il obtient 29 avec B et la chaîne de caractères 2345689QWERTYUPASDFHGJKLZXCVBNM

Quand tu crois à une hypothèse, il faut la tester et la tu as de la chance tu as 3 essais supplémentaires pour transformer tes croyances en certitude.
Si tu n'arrive pas à avoir de certitude de comment il transforme le B en 1D alors on regardera de plus pret le call 00407F5C (c'est dans celui-ci qu'il y a 2 instructions asm à connaitre)

Je laisse faire cet exercice pour les 3 fois suivantes

Laches pas tu es au bout.

HM
Qui rira n'amasse pas mousse.
A la saint Barnabé on fait la chasse au boulet.
A la saint Alban la misère s'abat sur le gland.
Avatar de l’utilisateur
HappyMan
Mega Crackeur !
Mega Crackeur !
 
Messages: 296
Inscription: 21 Novembre 2006, 11:43
Localisation: Paris

Re: H*D*D*L*L*F.4.40.exe

Messagepar rvq35 » 19 Février 2017, 11:08

bonjour et merci Happyman de ton aide sérieuse
Oui ça avance car j'ai compris comment il trouve les valeurs de EAX. Elles correspondent au déplacement de la chaine alphabet, soit pour notre sérial bidon à 29, 27 8 et 11 pour respectivement B puis C, Q et R pour la suite.
De là à vouloir rechercher par exemple sur la ligne 4EE5B8 la valeur de EAX à l'adresse 9B4224, je n'y aurais jamais pensé. Plutôt une valeur de EDX qui figure clairement indiquée et qui peut donner des idées de recherche.
C'est ce que je disais, tantôt dans les registres il y a des adresses et tantôt des valeurs et ça fait perdre le fil de la logique tout ça.
En tout cas, ok pour l'ordre des caractères mais de là à deviner un serial de 19 caractères, la route est encore longue ,n'est ce pas ?
rvq35
Mega Crackeur !
Mega Crackeur !
 
Messages: 255
Inscription: 07 Mars 2013, 07:21

Re: H*D*D*L*L*F.4.40.exe

Messagepar HappyMan » 19 Février 2017, 11:47

rvq35 a écrit: la route est encore longue ,n'est ce pas ?


Ha bon ?

Pour le moment tu sais:
Que le sérial doit faire 19 caractères.
Que le sérial ne respecte pas la case.
Que la routine teste les caracteres 2, 3, 17 et 18

Avec le même sérial regarde ce que devient la donnée 1D au fil des 4 appels à trouveCar.

Normalement le 1D va devenir.. autrechose une fois que tu as passé les 4 appels à trouveCar va jusqu'au bout (a coup de F8) jusqu'au test avec 38 et 3A.

HM
Qui rira n'amasse pas mousse.
A la saint Barnabé on fait la chasse au boulet.
A la saint Alban la misère s'abat sur le gland.
Avatar de l’utilisateur
HappyMan
Mega Crackeur !
Mega Crackeur !
 
Messages: 296
Inscription: 21 Novembre 2006, 11:43
Localisation: Paris

Re: H*D*D*L*L*F.4.40.exe

Messagepar rvq35 » 19 Février 2017, 13:34

HappyMan a écrit:Avec le même sérial regarde ce que devient la donnée 1D au fil des 4 appels à trouveCar
il devient 1B puis 8 puis OB
HappyMan a écrit:Normalement le 1D va devenir.. autrechose une fois que tu as passé les 4 appels à trouveCar va jusqu'au bout (a coup de F8) jusqu'au test avec 38 et 3A.
il devient soit 38 soit 3A
avec mon cas il devient on dirait 29+27+8+11=75d si je retranche le nombre d'appels je trouve bien 75-4 soit 71d comme indiqué en 42F23B
Je pense qu'il faut prendre l'analyse à partir de là donc raisonner en arrière, ce qui voudrait dire que les autres caractères du sérial sont neutres pour le calcul ?
rvq35
Mega Crackeur !
Mega Crackeur !
 
Messages: 255
Inscription: 07 Mars 2013, 07:21

Re: H*D*D*L*L*F.4.40.exe

Messagepar HappyMan » 19 Février 2017, 14:19

rvq35 a écrit:ce qui voudrait dire que les autres caractères du sérial sont neutres pour le calcul ?


Voilà une hypothèse, qu'il faudra vérifier. Mais pour le moment tu as vu une routine qui teste 4 caractères et rien sur les autres, donc elle parait plausible.

1er appel:
EAX=1D
EBX=1D

2eme appel:
EAX=1B
EBX=1D+1B=38

3eme appel:
EAX=8
EBX=38+8=40

4eme appel:
EAX=0B
EBX=40+0B=4B

Et effectivement:
Code: Tout sélectionner
CPU Disasm
Address   Hex dump          Command                                  Comments
004EE679  |> \8BC3          MOV EAX,EBX
004EE67B  |.  83E8 04       SUB EAX,4


EAX=EBX=4B
après le SUB EAX,4 EAX=47 et c'est à priori ce 47 qui sera comparé à 38 ou 3A

donc part de la fin EAX doit être 38 donc en 004EE679 EAX doit être 38+4=3C

Crée un serial dont la somme de la position des 4 caracteres est égale à 3C et raconte ce qui se passe

HM
Qui rira n'amasse pas mousse.
A la saint Barnabé on fait la chasse au boulet.
A la saint Alban la misère s'abat sur le gland.
Avatar de l’utilisateur
HappyMan
Mega Crackeur !
Mega Crackeur !
 
Messages: 296
Inscription: 21 Novembre 2006, 11:43
Localisation: Paris

Re: H*D*D*L*L*F.4.40.exe

Messagepar rvq35 » 19 Février 2017, 14:49

il suffit de remplacer dans notre cas le b par le a ce qui donne :
aabcdefghijklmnopqrs
comme on sait qu'il ne teste que les caractères 2-3-17 et 19 alors je fais :
3A =58
58+4=62
on a vu que le trouvecar transforme EAX soit pour :
c ------->27
q-------->8
r--------->11
donc si je veux garder les 3 derniers tests alors il ne me reste que le 1 à changer soit le 2ème caractère
62-27-8-11=16 et qu'est ce qu'il y a en 16ème caractère et bien le "a"

Fallait y penser quand même de se positionner sur la bonne adresse qui donne EAX avant la moulinette et 2 F8 après pour avoir le EAX qui en ressort comme le fait de devoir retrancher le nombre de tests (4).
ceci n'est qu'un exemple mais on peut inventer des sérials plus originaux et ils fonctionneraient !
Je n'y aurais jamais pensé tout seul, ça me paraissait innacessible. Merci beaucoup HappyMan
les 2 instructions dont tu me parles c'est peut être REPE et REPNE ?
Vous serez tous bien d'accord que ça diffèrent complètement du fameux guide du cracking, raison pour laquelle j'avais fait mes suggestions d'un second guide pour les crackeurs plus avertis ???
rvq35
Mega Crackeur !
Mega Crackeur !
 
Messages: 255
Inscription: 07 Mars 2013, 07:21

Re: H*D*D*L*L*F.4.40.exe

Messagepar HappyMan » 19 Février 2017, 15:23

rvq35 a écrit:raison pour laquelle j'avais fait mes suggestions d'un second guide pour les crackeurs plus avertis ???


Mon investissement n'était pas déinsteressé. Tu es d'accord que sans moi tu ne serais pas allé au bout ?
Alors maintenant c'est le moment de payer ta dette. Tu vas nous faire un joli tuto.

Et oui c'est bien les deux instructions dont je parlais.

HM
Qui rira n'amasse pas mousse.
A la saint Barnabé on fait la chasse au boulet.
A la saint Alban la misère s'abat sur le gland.
Avatar de l’utilisateur
HappyMan
Mega Crackeur !
Mega Crackeur !
 
Messages: 296
Inscription: 21 Novembre 2006, 11:43
Localisation: Paris

Re: H*D*D*L*L*F.4.40.exe

Messagepar rvq35 » 20 Février 2017, 08:32

Ok pour le tuto, cela me semble équitable !
Je vais tacher de faire quelque chose de pédagogique et qui tient la marée :)
mais j'aurai besoin d'un peu de temps ...
rvq35
Mega Crackeur !
Mega Crackeur !
 
Messages: 255
Inscription: 07 Mars 2013, 07:21

Re: H*D*D*L*L*F.4.40.exe

Messagepar rvq35 » 29 Avril 2017, 07:58

HappyMan a écrit:Et puis contrairement à rvq35 je n'ai jamais vu le serial en clair ni dans la pile ni ailleurs.

c'est ici que je l'avais vu mais peut être garde t-il en mémoire dans Olly
http://hpics.li/354c00e
c'était une parenthèse. A +
rvq35
Mega Crackeur !
Mega Crackeur !
 
Messages: 255
Inscription: 07 Mars 2013, 07:21

Précédente

Retourner vers Reversing

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Google [Bot] et 3 invités