Fonction saisie de texte

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

Fonction saisie de texte

Messagepar Louzew » 13 Novembre 2017, 09:11

Bonjour,
je travaille sur un soft qui demande un code d'activation pour être déverrouillé.
J'ai déjà pas mal bossé dessus (une partie du code est crypté), ça c'est fait.
J'ai aussi pu faire ouvrir l'appli en version complète avec affichage de la bonne version dans le caption de la fenêtre et dans le "a propos".
Par contre à l'utilisation le logiciel plante.
Je suis parti des chaines de caractères des différentes versions (Démonstration, Pro etc...) pour en arriver a ce que j'ai décrit ci-dessus.
Comme ce travail (intéressant) n'est pas concluant, j'envisage d'attaquer le problème d'une autre manière, c'est à dire de partir de la fenetre d'activation et de trouver la routine de contrôle.
J'ai déjà analysé des applis de cette manière et je récupérais le numéro saisi par la fonction "GetDlgItemTextA", sauf que dans cette application, ça ne marche pas, OllyDbg ne break pas.

Cette fenêtre d'activation affiche un code urilisateur (static), une boite de saisie (code d'activation), un bouton "démo" actif et un bouton "ok" qui reste grisé.

Quelle ou quelles fonctions peuvent être utilisées dans ce cas pour obtenir le code d'activation saisi ?

Merci.
Louzew
 
Messages: 6
Inscription: 12 Novembre 2017, 16:50
Localisation: Au bout du monde

Re: Fonction saisie de texte

Messagepar etherlord » 13 Novembre 2017, 15:46

La fonction peut-être appellée à travers LoadLibrary, auquel cas elle ne sera pas visible en tant qu'import.

Si le numéro de série est un entier, il peut être récupéré par DlgItemInt

On peut passer par les messages Windows VM_GETTEXT.

Il est possible que le contrôle réagisse à chaque frappe (event), auquel cas la fonction de lecture n'est pas nécessaire.

etherlord
etherlord
Triumvirat
Triumvirat
 
Messages: 2549
Inscription: 22 Mars 2004, 16:12

Re: Fonction saisie de texte

Messagepar tutork » 13 Novembre 2017, 20:53

Bonjour,

D'autres idées en vrac:
- mettre un bp directement sur user32.dll (wiew, executable, module, clic droit sur user32.dll, view names) et mettre un bp sur tout ce qui ressemble à GetDlgItemTextA: GetDlgItemTextA, GetDlgItemInt, GetDlgItemTextW
- regarder quel compilateur a été utilisé --> si c'est du delphi, utiliser dédé pour localiser la routine de vérification, si c'est du vb, utiliser vb decompiler pro

a+
tutork
Visiteur
Visiteur
 
Messages: 23
Inscription: 12 Novembre 2017, 22:01

Re: Fonction saisie de texte

Messagepar Martinooooo » 13 Novembre 2017, 20:54

tutork a écrit:utiliser dédé


On est en 2017, on utilise IDR :'(
Acme::Don't
Acme::Bleach
Acme::Pony
Lingua::Romana::Perligata
The Lingua::Romana::Perligata makes it makes it possible to write Perl programs in Latin. (If you have to ask "Why?", then the answer probably won't make any sense to you either.)
Avatar de l’utilisateur
Martinooooo
Maître des ténèbres
Maître des ténèbres
 
Messages: 577
Inscription: 19 Août 2008, 08:20
Localisation: DR8, le + utile DRx

Re: Fonction saisie de texte

Messagepar Bango » 14 Novembre 2017, 08:19

Il y en a d'autres pour récupérer un champ... GetDlgItemTextW (W => unicode), GetWindowTextA/W
Sinon, pour activer un bouton grisé => EnableWindow (oui, même si ce n'est pas une fenêtre :P)
\ô/
Avatar de l’utilisateur
Bango
Modérateur
Modérateur
 
Messages: 1565
Inscription: 23 Juillet 2007, 15:33
Localisation: Gotham city

Re: Fonction saisie de texte

Messagepar Louzew » 14 Novembre 2017, 18:25

Merci à tous pour vos réponses.
Quelques précisions :

etherlord a écrit:Si le numéro de série est un entier, il peut être récupéré par DlgItemInt
.......
Il est possible que le contrôle réagisse à chaque frappe (event), auquel cas la fonction de lecture n'est pas nécessaire.


Le code d'activation est de la forme XXXX-XXXX-XXXX-XXXX (caractères alphanumériques).
En effet, je suis presque certain que le logiciel réagit à chaque frappe. Tu dis que la Fonct de lecture n'est pas nécessaire, dans ce comment récupère tu ces frappes au clavier ?
Merci.
tutork a écrit:- mettre un bp directement sur user32.dll (wiew, executable, module, clic droit sur user32.dll, view names) et mettre un bp sur tout ce qui ressemble à GetDlgItemTextA: GetDlgItemTextA, GetDlgItemInt, GetDlgItemTextW
- regarder quel compilateur a été utilisé --> si c'est du delphi, utiliser dédé pour localiser la routine de vérification, si c'est du vb, utiliser vb decompiler pro
a+

Merci pour ton aide tutork, pour poser un BP, pas de soucis je sais faire. Pour ce qui est de l'appli, ce n'est pas du delphi ni du VB mais du C++, compilé avec Visual C++ 6.0.

Bango a écrit:Il y en a d'autres pour récupérer un champ... GetDlgItemTextW (W => unicode), GetWindowTextA/W
Sinon, pour activer un bouton grisé => EnableWindow (oui, même si ce n'est pas une fenêtre :P)


Merci pour ton aide Bango. J'ai déjà essayé EnableWindow mais ça ne marche pas dans ce cas.

J teste vos idées dès que je peux et vous tiens au courant :idea: :lol:
Louzew
 
Messages: 6
Inscription: 12 Novembre 2017, 16:50
Localisation: Au bout du monde

Re: Fonction saisie de texte

Messagepar Bango » 15 Novembre 2017, 08:24

Louzew a écrit:Le code d'activation est de la forme XXXX-XXXX-XXXX-XXXX

Comment tu le sais ?
Si c'est dit quelque part dans le soft, il y a un moment où il va contrôler la taille de cette chaine, la présence des tirets, etc... :roll:
tu peux aussi faire des recherches sur les constantes (taille de la chaine, 0x2D (les tirets)
\ô/
Avatar de l’utilisateur
Bango
Modérateur
Modérateur
 
Messages: 1565
Inscription: 23 Juillet 2007, 15:33
Localisation: Gotham city

Re: Fonction saisie de texte

Messagepar Hao » 16 Novembre 2017, 09:02

Comme le dit etherlord, ça peut aussi passer par WM_GETTEXT. Dans ce cas, il faut surveiller les fonctions send message.

Code: Tout sélectionner
SendDlgItemMessageA/SendDlgItemMessageW : https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms645515(v=vs.85).aspx
SendMessageA/SendMessageW: https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms644950(v=vs.85).aspx
Avatar de l’utilisateur
Hao
Mega Crackeur !
Mega Crackeur !
 
Messages: 286
Inscription: 27 Novembre 2013, 22:24

Re: Fonction saisie de texte

Messagepar Louzew » 07 Décembre 2017, 14:18

Juste un mot pour vous dire que je n'abandonne pas et que je ne vous oublie pas mais quelques soucis personnels me tiennent un peu à l'écart de cette activité pour l'instant.
J'avais, suite a vos idées, essayé GetDlgitemTextA et GetDlgitemTextW sans succès.
Quand à la méthode des messages Windows, hummmmm, il faut que je bosse un peu l'affaire des que j'aurai retrouvé un peu de sérénité.
A bientôt j'espere.
Louzew
 
Messages: 6
Inscription: 12 Novembre 2017, 16:50
Localisation: Au bout du monde


Retourner vers Reversing

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 invités