J'ai besoin de vous les gars ! (Ou fille bien entendu :D)

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

J'ai besoin de vous les gars ! (Ou fille bien entendu :D)

Messagepar Benoit31380 » 05 Avril 2017, 10:43

Je m'explique brièvement.
Pour tous dire je ne sais pas vraiment vers ou me diriger. Je me suis donnée pour mission de trouver un moyen de contourner le principe d'activation sur une application développé sur (Attention ça va faire mal !) WinDev15 ...

Je vous donne les quelques éléments que j'ai pu déterminer :

- J'ai un PC sur lequel le soft et activé, je fait une image du DD de ce poste. Cette image je l’intègre sur un HDD neuf, ce même HDD je l'installe sur un PC physique différent (Workstation DELL). Aprés une bataille de plusieurs heures pour intégrer ce nouveau poste sur le domaine AD (Ils faut croire que le domaine n'apprécie pas le ghost d'un pc même si le nom diffère !). Dans ces conditions le soft n-y voit aucun problème ! Il fonctionne à merveille. J'en conclue que l'adresse MAC différente ne pose aucun soucis. Le processeur est différent lui aussi (Les deux sont des xéon quand même).

- Si je copie l'ensemble des fichier du soft y compris les fichier dans AppData et dans Roaming du poste sur lequel le soft fonctionne sur un poste vierge. Celui-ci démarre mais m'annonce que ce poste à une configuration matériel différente, et donc on m'invite à procéder à une nouvelle activation!

Le concept d'activation et le suivant :

Le soft génére une clé initiale de cette forme "SNwwgVksXCQdTfg", je peut générer une nouvelle clé en cliquant sur un bouton prévue à cette effet.
Aprés le passage par un algoryhtme X nous avons une clé d'activation de cette forme "QHNdWldfYWZ0PVQheWhFdA==" que j'entre dans la page prévue à cette effet. Dés lors je clique sur "Activation du poste" et si la clé entrée et valide vous connaissez la suite ..

Si j'entre des information valide sur un autre poste sur le fichier .init de l'application celle-ci m'annonce qu'une carte réseau nommé "DD" et inactive. Hors, une telle carte n'a jamais existé sur aucun des poste Activer ou Non. Est ce message reste identique quelque soit la composition de clé utiliser (Je parle bien de composition clé initiale/clé activation valide et fonctionnel sur d'autre poste!)

En voulant utiliser Ollyblg je me trouve dans l'impossibilité de lancer le soft. Dans kernel32 je n'es pas aucun nom ... IsDebugerPresent et absent.

De quel manières je devrait procéder ? Je ne veut pas spécifiquement de tuto, juste un angle d'attaque d’après des gens bien plus expérimenté que moi !
Merci d'avance ! :D :D
Benoit31380
 
Messages: 3
Inscription: 05 Avril 2017, 06:27

Re: J'ai besoin de vous les gars ! (Ou fille bien entendu :D

Messagepar etherlord » 05 Avril 2017, 15:12

Benoit31380 a écrit:Aprés une bataille de plusieurs heures pour intégrer ce nouveau poste sur le domaine AD (Ils faut croire que le domaine n'apprécie pas le ghost d'un pc même si le nom diffère !).


Exact. Quand on duplique des SID censés être uniques, il aime pas trop. Il y a des outils Microsoft pour corriger une image de ce type.

Le soft génére une clé initiale de cette forme "SNwwgVksXCQdTfg", je peut générer une nouvelle clé en cliquant sur un bouton prévue à cette effet.


Quand tu clique plusieurs fois sur le bouton, le code retourné est toujours le même, ou il change ? parce que si il change, cela signifie qu'un code pseudo aléatoire est
généré, et à ce moment là il faut plutôt chercher où il le sauve.

En voulant utiliser Ollyblg je me trouve dans l'impossibilité de lancer le soft. Dans kernel32 je n'es pas aucun nom ... IsDebugerPresent et absent.


Une lib peut être chargée dynamiquement, le fait de ne pas voir une fonction dans les imports ne signifie pas qu'elle n'est pas utilisée. Il y a des plugins pour Olly qui
gèrent cette fonction, cela peut-être utile de les activer, même si tu n'as pas l'impression que la DLL est chargée.

Olly est très connu, donc parmi les premiers être détectés. Test un autre debuggeur peut donner d'autres résultats. Sinon il y a des variantes d'Olly qui modifient
certaines données liées à Olly, de manière à tromper certaines détections. Valable pour autant que la détection ne soit pas trop évoluée.

De quel manières je devrait procéder ? Je ne veut pas spécifiquement de tuto, juste un angle d'attaque d’après des gens bien plus expérimenté que moi !
Merci d'avance ! :D :D


WinDev utilise une machine virtuelle pour interpreter son code. Il faut plutôt se placer au niveau de VM, si tu veut voir quelque chose. Sinon il y a quelques postes sur
ce forum qui traitent vaguement de WinDev, il y a peut être quelques conseils dans ces posts.

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

Re: J'ai besoin de vous les gars ! (Ou fille bien entendu :D

Messagepar dionosis » 05 Avril 2017, 23:27

Salut,

Commence par lire ça, ça t'aidera sûrement :
http://www.forumcrack.com/viewtopic.php?f=4&t=13737

Puis lis ça, ça t'aidera très probablement :
http://www.forumcrack.com/viewtopic.php?f=6&t=13650

++
Avatar de l’utilisateur
dionosis
Maître des ténèbres
Maître des ténèbres
 
Messages: 507
Inscription: 09 Octobre 2009, 21:43

Re: J'ai besoin de vous les gars ! (Ou fille bien entendu :D

Messagepar Benoit31380 » 07 Avril 2017, 13:13

Bonjour bonjour les ami(e)s ! :D

Oui on peut en générer à l'infini !

Merci du coup de pied déjà .. :)
J'ai avancée pas mal (enfin je crois ..). Je ne trouve pas la fonction "nEgaliteEx" cependant je trouve la fonction "nEgalite" dans wd150vm.dll.
Je pence ne pas me tromper en disant que la partie qui m'intéresse et dans les lignes suivantes, soit la fonction à proprement dit. Je me trompe ?
Ceci étant, j'ai posée des BP sur l’ensemble des lignes ayant pour commande "cmp" dans la fonction nEgalite. Est du coup j'arrive en magouillant le code lors de ces BP à avoir des événements intéressant ! Jusqu’à avoir un magnifique plantage de l'appli à chaque fois ! Ce qui me laisse penser que faire l'apprenti codeur en assembleur n'es que très peut efficace .. ^^. Mais voila j'arrive à berner de manière très sale l'application (l'appli semble à un moment être activé, je dit sa car le beau message rouge "BRIDER" devient un beau message vert "NORMAL" !
Est cela bien sur après avoir travailler le code pendant la séquence de contrôle du code d'activation. Est non en modifiant en "statique" la vue.
Ce qui donc implique que je tape au bon endroit ! Je me trompe peut être aussi ?

Dans les dump mémoire je trouve ma clé initiale en clair, mais pas celle d'activation ..

De ce que je comprend du code la clé d'activation n'es pas généré pour la comparaison avec celle que j'ai renseignée. La clé d'activation que je renseigne mouline dans la fonction nEgalite (prés de 230 appel sur deux commande "cmp" entre le moment ou je clique sur "Activer" et le moment ou le popup apparait), et un résultat et attendu de cette clé d'activation... Je ne sais pas vraiment si je suis clair.

D’après vous que devrai-je faire à maintenant pour allez plus loin ? J'avoue tourner en rond ... Je vais essayer de rendre juste l'ensemble des 230 appel sur mais deux commande cmp pour voir ou cela me mène !

Et donc je reviens vers vous pour en savoir un peut plus sur la méthode à employer maintenant .. Dois-je modifier le code ? Dois-je trouver l’algorithme ? Ne puis-je pas simplement inverser la réponse au test de la clé d'activation ? je suppose que oui, mais comment déterminer quelle ligne assembleur et a ciblé ?

Navré pour les fautes ..

Merci !
Benoit31380
 
Messages: 3
Inscription: 05 Avril 2017, 06:27

Re: J'ai besoin de vous les gars ! (Ou fille bien entendu :D

Messagepar dionosis » 10 Avril 2017, 00:00

Salut,

Tu sembles être dans le bon secteur mais impossible de t'en dire plus sans savoir de quoi on parle. :)

++
Avatar de l’utilisateur
dionosis
Maître des ténèbres
Maître des ténèbres
 
Messages: 507
Inscription: 09 Octobre 2009, 21:43

Re: J'ai besoin de vous les gars ! (Ou fille bien entendu :D

Messagepar etherlord » 10 Avril 2017, 07:42

Benoit31380 a écrit:Dans les dump mémoire je trouve ma clé initiale en clair, mais pas celle d'activation ..


Donc tu peut placer un BP en lecture sur cette zone pour voir depuis où ton programme accède à cette donnée

De ce que je comprend du code la clé d'activation n'es pas généré pour la comparaison avec celle que j'ai renseignée. La clé d'activation que je renseigne mouline dans la fonction nEgalite (prés de 230 appel sur deux commande "cmp" entre le moment ou je clique sur "Activer" et le moment ou le popup apparait), et un résultat et attendu de cette clé d'activation... Je ne sais pas vraiment si je suis clair.


Une validation de chaîne de caractères ne se fait pas forcément de manière littérale (comparaison sur la totalité de la chaîne), il est possible qu'il compare un seul caractère à la fois,
que quelques uns, etc...

Et donc je reviens vers vous pour en savoir un peut plus sur la méthode à employer maintenant .. Dois-je modifier le code ? Dois-je trouver l’algorithme ? Ne puis-je pas simplement inverser la réponse au test de la clé d'activation ? je suppose que oui, mais comment déterminer quelle ligne assembleur et a ciblé ?


Modifier le code signifie modifier le langage interprété WD, cela me paraît plutôt délicat, inverser la réponse n'est pas toujours une bonne solution (mais c'est un détail), reste donc l'analyse de l'algo....

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

Re: J'ai besoin de vous les gars ! (Ou fille bien entendu :D

Messagepar Martinooooo » 10 Avril 2017, 17:31

etherlord a écrit:*
Et donc je reviens vers vous pour en savoir un peut plus sur la méthode à employer maintenant .. Dois-je modifier le code ? Dois-je trouver l’algorithme ? Ne puis-je pas simplement inverser la réponse au test de la clé d'activation ? je suppose que oui, mais comment déterminer quelle ligne assembleur et a ciblé ?


Modifier le code signifie modifier le langage interprété WD, cela me paraît plutôt délicat, inverser la réponse n'est pas toujours une bonne solution (mais c'est un détail), reste donc l'analyse de l'algo....


Je plussoie: modifier le code WD implique que tu saches déchiffrer+décompresser/recompresser+rechiffrer la partie contenant le bytecode WD (plusieurs clés différentes avec un chiffrement un peu bizarre + algo de compression LZ avec une impl un peu bizarre aussi) (sans parler du fait que ça nécessite de l'interpréter).
En règle générale: WD n'a pas d'algorithmes asymétriques nécessitant un patching (sauf si utilisation des Win32API dédiées, mais très rare vue leur difficulté d'utilisation): il est donc toujours possible de keygen toutes les applications WD. Les applications WD utilisant de la crypto asymétrique utilisent en général des lib externes non WinDev qu'on peut patcher.
Il te sera donc plus simple de trouver l'algorithme (ou même de fisher le serial si c'est un algorithme un peu simplet qui finit en if(serial entré == serial calculé)) que de patcher :)
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: 575
Inscription: 19 Août 2008, 08:20
Localisation: DR8, le + utile DRx


Retourner vers Reversing

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 4 invités