breakpoint dans olly

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

Re: breakpoint dans olly

Messagepar Hao » 14 Août 2017, 08:02

Tu es sur la bonne voie.
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: breakpoint dans olly

Messagepar jean02 » 14 Août 2017, 22:21

Bonsoir,
j'ai trouver la chaine primaire qu'il crypte (processeur + numéro hdd) , c'est apparemment du blowfish-compat en mode ECB , mais il n'y a pas beaucoup de source sur le sujet , si quelqu'un à des infos la dessus ...
jean02
Elève
Elève
 
Messages: 48
Inscription: 15 Juin 2015, 11:44

Re: breakpoint dans olly

Messagepar Hao » 15 Août 2017, 10:33

Bien. Ça avance. :)

Le problème, c'est que Blowfish peu être utilisé avec pas mal de paramètres différents. Et a priori le module Crypto du logiciel est quelque peu exotique.
Blowfish est un chiffrement symétrique. Et c'est ça qui nous intéresse vraiment.

Donc si tes recherches n'aboutissent pas, essaye d'envisager une autre approche.
Pourquoi chercher à reproduire le fonctionnement d'une fonction, quand tu peux utiliser directement cette fonction ?

C'est une belle journée pour self-keygen... non ? :mrgreen:
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: breakpoint dans olly

Messagepar jean02 » 15 Août 2017, 14:09

j'ai réussi à trouver mon serial avec ton aide , effectivement ,lua est une aberration dans la sécurité , j'ai modifier une fonction en mémoire avec winhex pour me faire apparaitre dans la case id mon serial :mrgreen: :mrgreen: :mrgreen:
sans ton aide ,je n'aurai pas compris que ses fonctions visible était des scripts .... tout simplement
j'ai compris pourquoi le blowfish ne fonctionnait pas , car il ajoute (on ne sait pas vraiment pourquoi) un 00h à la fin , ce qui n'est pas reproductible en texte puisque l'espace et un 2Oh
j'ai tout simplement transformer l'id en hexa et crypter avec check+email+sum (en blowfish-compat ECB) et le tour et jouer depuis ce site :
http://www.bierkandt.org/encryption/sym ... yption.php
tu me dit 'tu peux utiliser directement cette fonction' , cette à dire ?
jean02
Elève
Elève
 
Messages: 48
Inscription: 15 Juin 2015, 11:44

Re: breakpoint dans olly

Messagepar Hao » 15 Août 2017, 14:48

Et bien voila ! Bien joué. :wink:
Effectivement LUA est un langage interprété.

La solution que je te proposais repose sur la possibilité d'éditer la mémoire à l’exécution avec Olly ou autre. Je pense que c'est ce que tu as fait au final.
Le code qui nous intéresse est le suivant :

Code: Tout sélectionner
num = Input.GetText("num"); if num == "" then num = 0; end

serial = Input.GetText("Serial");

first = String.Find(serial, "<<<", 1, false);
last = String.Find(serial, ">>>", 1, false);
All = String.Mid(serial, first, last-first); -- String.Length(serial)-last+3

serial = All;
serial = String.Replace(serial, "<<<", "", false);
serial = String.Replace(serial, ">>>", "", false);

decrypt = Crypto.BlowfishDecryptString(serial, "check"..num.."sum");

--Dialog.Message("",decrypt.."\r\n"..ID_crypted);

if decrypt == ID_crypted then
   Dialog.Message("Code d'activation valide", "Merci pour votre registration.\r\nRe-ouvrir le logiciel SVP.");
   
   --to_xml("set/sdcv/tsjl/ser","<ser id='"..ID_crypted.."'>"..serial.."</ser>");

    -- Check the error code of the last example.
    error = Application.GetLastError();
    -- If an error occurred, display the error message.
    if (error ~= 0) then
        Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
    end
          
   --num
   -- to_xml("set/sdcv/tsjl/mun/","<mun>"..Crypto.BlowfishEncryptString(num, text4encpt, 0).."</mun>");
   
   TextFile.WriteFromString(appFolder.."\\mun.b4t", Crypto.BlowfishEncryptString(num, text4encpt, 0) , false);
   TextFile.WriteFromString(appFolder.."\\ser.b4t", serial, false);
   TextFile.WriteFromString(_TempFolder.."\\di.txt", Input.GetText("Id_input"), false);


On voit donc que le serial est d'abord soulagé de ses caractères en début et fin de chaîne ("<<<", ">>>").
Puis la fonction Crypto.BlowfishDecryptString va déchiffrer le serial avec la clé "check"..num.."sum".
num correspondant au numéro ou mail entré à l'enregistrement.

Le résultat va être comparé à ID_crypted qui n'est autre que l'ID qui apparait dans le formulaire d'enregistrement sans les "<<<", ">>>".
On peut voir finalement que lorsque que le serial entré est correct, il va l'écrire dans un fichier :

Code: Tout sélectionner
TextFile.WriteFromString(appFolder.."\\ser.b4t", serial, false);


Si on modifie le code de la façon suivante :

Code: Tout sélectionner
serial = String.Replace(serial, ">>>", "", false);
-- devient
serial = ID_crypted                              ;


Code: Tout sélectionner
decrypt = Crypto.BlowfishDecryptString(serial, "check"..num.."sum");
-- devient
serial  = Crypto.BlowfishEncryptString(serial, "check"..num.."sum");


Code: Tout sélectionner
if decrypt == ID_crypted then
-- devient
if decrypt ~= ID_crypted then


ce qui nous donne au final :

Code: Tout sélectionner
num = Input.GetText("num"); if num == "" then num = 0; end

serial = Input.GetText("Serial");

first = String.Find(serial, "<<<", 1, false);
last = String.Find(serial, ">>>", 1, false);
All = String.Mid(serial, first, last-first); -- String.Length(serial)-last+3

serial = All;
serial = String.Replace(serial, "<<<", "", false);
serial = ID_crypted                              ;

serial  = Crypto.BlowfishEncryptString(serial, "check"..num.."sum");

--Dialog.Message("",decrypt.."\r\n"..ID_crypted);

if decrypt ~= ID_crypted then
   Dialog.Message("Code d'activation valide", "Merci pour votre registration.\r\nRe-ouvrir le logiciel SVP.");
   
   --to_xml("set/sdcv/tsjl/ser","<ser id='"..ID_crypted.."'>"..serial.."</ser>");

    -- Check the error code of the last example.
    error = Application.GetLastError();
    -- If an error occurred, display the error message.
    if (error ~= 0) then
        Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
    end
          
   --num
   -- to_xml("set/sdcv/tsjl/mun/","<mun>"..Crypto.BlowfishEncryptString(num, text4encpt, 0).."</mun>");
   
   TextFile.WriteFromString(appFolder.."\\mun.b4t", Crypto.BlowfishEncryptString(num, text4encpt, 0) , false);
   TextFile.WriteFromString(appFolder.."\\ser.b4t", serial, false);
   TextFile.WriteFromString(_TempFolder.."\\di.txt", Input.GetText("Id_input"), false);


Lorsque l'on va essayer de s'enregistrer en entrant à la fois :
    ¤ un num/email pour la clé
    ¤ un serial bidon

Le code va générer le bon serial et le placer dans le bon fichier. Le soft est enregistré.
Dernière édition par Hao le 15 Août 2017, 15:06, édité 1 fois.
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: breakpoint dans olly

Messagepar jean02 » 15 Août 2017, 14:57

Merci de ton aide ...
et Oui effectivement c'est bien comme ceci que j'ai procédé avec winhex mais un peu différemment , on ne peut pas le faire en dur dans l'exe ,je suppose ? puisque c'est interpréter ?
ma recherche avec blowfish me pose un soucis car sur 1 serial cela fonctionnait mais pas d'autre , il y a un sac (je pense) avec une completation de chaine peut-etre , il y a une dizaine d'octet de plus dans leur cryptage à la fin ...
jean02
Elève
Elève
 
Messages: 48
Inscription: 15 Juin 2015, 11:44

Re: breakpoint dans olly

Messagepar Hao » 15 Août 2017, 15:05

styck007 a écrit:Merci de ton aide ...
et Oui effectivement c'est bien comme ceci que j'ai procédé avec winhex mais un peu différemment , on ne peut pas le faire en dur dans l'exe ,je suppose ? puisque c'est interpréter ?
ma recherche avec blowfish me pose un soucis car sur 1 serial cela fonctionnait mais pas d'autre , il y a un sac (je pense) avec une completation de chaine peut-etre , il y a une dizaine d'octet de plus dans leur cryptage à la fin ...


De rien. :D
Je pense que le code est présent dans le PE sous forme compressée ou du moins packée (c'est une supposition pas une affirmation). Donc l'édition en mémoire est le moyen le plus rapide.

Le "sac" est peut être un salage. C'est pour ça qu'il vaut mieux directement utiliser les mêmes fonctions que le soft (et pour gagner tu temps aussi).
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: breakpoint dans olly

Messagepar jean02 » 15 Août 2017, 15:23

Hao a écrit:
De rien. :D
Je pense que le code est présent dans le PE sous forme compressée ou du moins packée (c'est une supposition pas une affirmation). Donc l'édition en mémoire est le moyen le plus rapide.

Le "sac" est peut être un salage. C'est pour ça qu'il vaut mieux directement utiliser les mêmes fonctions que le soft (et pour gagner tu temps aussi).


bon apparemment le soft est relativement null donc le crack n'est pas d'une grande utilité et en plus les données sont récupérable par un simple copier coller , donc il est plus facile de le refaire en 2/3 heures de temps
mais pour ma gouverne , on ne peut donc pas utiliser une de ses dll pour refaire le cryptage puisqu'il est dans le PE ? la deuxième solution serait de regarder la décompression du soft en mémoire pour savoir quand il décompresse ses instructions pour pouvoir les modifier ?
ou c'est banane pour pour un patch et un serial
jean02
Elève
Elève
 
Messages: 48
Inscription: 15 Juin 2015, 11:44

Re: breakpoint dans olly

Messagepar Hao » 15 Août 2017, 17:11

Oui je pense que le soft référence des fichiers texte. Je ne sais pas si il fait autre chose que ça, je ne m'y suis pas intéressé. Il y a des liens vers des vidéos dans la section Aide.

Pour un crack ou un serial générique, je ne sais pas. Peut être coder un keygen à condition de pouvoir reproduire le comportement de la fonction de chiffrement.
Je ne vois pas dans l'immédiat de solution vraiment "bateau".
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: breakpoint dans olly

Messagepar jean02 » 15 Août 2017, 17:49

j'ai juste un problème de fin de chaine sur le cryptage , à mon avis avec la source avec lequel il la faites ,je devrais trouver le même résultat , il y a des disparités selon les sources , j'ai remarqué çà entre openssl et crypto ++ , le truc c'est qu'il dit que le serial est ok mais au redémarrage .... banane .... cela ne fonctionne plus
jean02
Elève
Elève
 
Messages: 48
Inscription: 15 Juin 2015, 11:44

Re: breakpoint dans olly

Messagepar jean02 » 15 Août 2017, 17:56

Hao a écrit:Oui je pense que le soft référence des fichiers texte


sur ce sujet d'ailleurs les fichiers texte sont crypter , je l'ai décrypte sans soucis , le mdp est dans le binz en clair comme dab :mrgreen: :mrgreen: et avec le fameux blowfish-compat ECB .
en tout cas , vraiment merci pour m'avoir aider à comprendre , le but étant ceci comme tu la bien compris .....
jean02
Elève
Elève
 
Messages: 48
Inscription: 15 Juin 2015, 11:44

Re: breakpoint dans olly

Messagepar Hao » 15 Août 2017, 18:14

Ce fut un plaisir. :D

A noter que les fonctions de chiffrement/déchiffrement du logiciel semblent travailler uniquement avec des chaînes encodées en base64. C'est à garder à l'esprit si jamais tu veux coder un keygen avec une bibliothèque de chiffrement "standard".
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: breakpoint dans olly

Messagepar jean02 » 15 Août 2017, 18:50

Hao a écrit:Ce fut un plaisir. :D

A noter que les fonctions de chiffrement/déchiffrement du logiciel semblent travailler uniquement avec des chaînes encodées en base64. C'est à garder à l'esprit si jamais tu veux coder un keygen avec une bibliothèque de chiffrement "standard".


oui bien sûr , le problème maintenant c'est de trouver quelle bibliothèque il a utiliser mais je pense qu'il n'y a pas beaucoup de possibilité .
jean02
Elève
Elève
 
Messages: 48
Inscription: 15 Juin 2015, 11:44

Re: breakpoint dans olly

Messagepar Hao » 15 Août 2017, 20:05

styck007 a écrit:j'ai juste un problème de fin de chaine sur le cryptage , à mon avis avec la source avec lequel il la faites ,je devrais trouver le même résultat , il y a des disparités selon les sources , j'ai remarqué çà entre openssl et crypto ++ , le truc c'est qu'il dit que le serial est ok mais au redémarrage .... banane .... cela ne fonctionne plus


Je pense (à confirmer) que le problème de la fin de chaîne vient du padding. Il "meuble" la fin de l'ID par quelques octets pour obtenir la taille de bloc de 64 bits utilisée par blowfish.
J'ai remarqué que quand il manque 4 octets, il accole à la fin 0x04 04 04 04 avant de chiffrer le tout. Et si l'ID est divisible en bloc de 64 bits, alors il ajoute un dernier bloc 0x08 08 08 08 08 08 08 08 puis il chiffre.
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: breakpoint dans olly

Messagepar jean02 » 15 Août 2017, 20:32

trop fort , c'est exactement çà !!! c'est pour çà que cela à marché une première fois pour moi , maintenant que c'est piger , il faut que je trouve une petite source en c ou autre pour faire un serial ....
jean02
Elève
Elève
 
Messages: 48
Inscription: 15 Juin 2015, 11:44

PrécédenteSuivante

Retourner vers Reversing

Qui est en ligne

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