[DONE] Jet Profiler

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

[DONE] Jet Profiler

Messagepar S8N » 30 Août 2017, 21:46

Bonjour a tous

je me dis : "tiens un program en Java, je me suis jamais amusé à crack du java"
donc j'ai commencé depuis hier soir soit environ 3h de recherche donc pas énorme

pour decompiler j'ai trouvé Bytecode Viewer que je trouve très bien, c'est plus facile à lire avec ça
pour modifier et pour "recompiler" j'utilise JByteMod
par contre c'est plus difficile à lire car en Bytecode si j'ai bien compris,
je ne connais rien en Java mais on dirait de l'assembleur en version java ;)

voici le code d'une class
Code: Tout sélectionner
en lien car sinon impossible de poster sinon

https://mega.nz/#!KRgkQLxL!SwP3mq0vOaseRoo7kIAaTDlYLi0xjWyOnccaNYCU5ts

la 1er technique que j'ai utilisé : le mode bourrin !
j'ai supprimé tous les "throw new lP(" pour évite tout problème
mais quand le code veut faire ceci :
Code: Tout sélectionner
byte[] arrby = new byte[n];

il fait un
Code: Tout sélectionner
 new byte[-1];

il n'aime pas trop donc je me dis : "et si je rajoute juste une ligne comme ceci :"
Code: Tout sélectionner
int n = -1;
        for (int i = 0; i < object.length - 1; ++i) {
            if (object[i] != 10 || object[i + 1] != 10) continue;
            n = i + 2;
            break;
        }
        n = 1 // mon ajout
        if (n == -1) {
            throw new lP("The license was corrupt, error 1.");
        }
        byte[] arrby = new byte[n];


mais c'est du Btyecode et c'est là que j'aurais besoin de vous,
quelle est la synthaxe pour écrire "n = 1" dans un Bytecode ?
et c'est la bonne solution pour vous ?

Merci.
Dernière édition par S8N le 03 Septembre 2017, 17:16, édité 1 fois.
S8N
Débutant
Débutant
 
Messages: 36
Inscription: 25 Juin 2012, 11:48

Re: Jet Profiler

Messagepar Hao » 31 Août 2017, 10:35

Pourquoi ne pas entrer une clé qui respecte les conditions de validation du format plutôt que de patcher ?
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: Jet Profiler

Messagepar S8N » 31 Août 2017, 12:18

très bonne question,
le problème est le suivant ne connaissant pas Java, je connais pas les commandes
example :
Code: Tout sélectionner
localMessageDigest = MessageDigest.getInstance(str)
localMessageDigest.update(paramArrayOfByte);

Code: Tout sélectionner
paramString = new X509EncodedKeySpec(paramString)

Code: Tout sélectionner
(localSignature = Signature.getInstance("SHA1WithRSA")).initVerify(paramPublicKey);

puis des info que je n'ai pas, par exemple ce "paramPublicKey"

je pense que patcher sera plus rapide pour MOI que de comprendre le code.
je fais avec les capacités que j'ai à disposition ;)
S8N
Débutant
Débutant
 
Messages: 36
Inscription: 25 Juin 2012, 11:48

Re: Jet Profiler

Messagepar Martinooooo » 31 Août 2017, 15:24

Avec ce que tu dis, il y a une vérif de signature par crypto asymétrique (RSA), du coup ça parait assez improbable que tu puisses générer une clé valide pour le logiciel :)
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

Re: Jet Profiler

Messagepar Bango » 01 Septembre 2017, 07:46

ça dépend (entre autres) de la longueur de la clef :P
\ô/
Avatar de l’utilisateur
Bango
Modérateur
Modérateur
 
Messages: 1527
Inscription: 23 Juillet 2007, 15:33
Localisation: Gotham city

Re: Jet Profiler

Messagepar S8N » 02 Septembre 2017, 08:48

Vous n'avez pas de logiciels à me conseiller ?
il me manque le break de ollydbg ;)
S8N
Débutant
Débutant
 
Messages: 36
Inscription: 25 Juin 2012, 11:48

Re: Jet Profiler

Messagepar Hao » 02 Septembre 2017, 13:54

Ça semble passer en patchant à la truelle.
BytecodeViewer + JD Gui pour voir le code source et le bytecode.
Un éditeur hexa pour patcher directement les .class.
Et la liste des opcodes bytecode : https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings.
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: Jet Profiler

Messagepar Martinooooo » 02 Septembre 2017, 19:55

Bango a écrit:ça dépend (entre autres) de la longueur de la clef :P


Je pars du principe que les dévs sont pas trop cons et utilisent pas des clés privées de 2 bits qu'ils laissent en clair dans le code, mais c'est vrai que ça existe (surtout les clés privées utilisées pour vérifier la signature :roll: ).

Hao a écrit:Ça semble passer en patchant à la truelle.
BytecodeViewer + JD Gui pour voir le code source et le bytecode.
Un éditeur hexa pour patcher directement les .class.
Et la liste des opcodes bytecode : https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings.


Dans mes souvenirs, on peut directement patcher à la truelle avec BytecodeViewer sans devoir se taper l'éditeur hexa ?
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

Re: Jet Profiler

Messagepar Hao » 02 Septembre 2017, 20:17

Martinooooo a écrit:Dans mes souvenirs, on peut directement patcher à la truelle avec BytecodeViewer sans devoir se taper l'éditeur hexa ?


Pas trouvé comment modifier directement le bytecode dans BytecodeViewer. Ca m'aurais épargné du temps.
J'ai bien vu la possibilité de modifier la source java, mais le code décompilé n'est pas recompilable en l'état.
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: Jet Profiler

Messagepar S8N » 03 Septembre 2017, 08:26

Il y a bien un bouton pour autoriser "Edite" et un autre bouton pour compiler
or le problème c'est que j'ai une erreur de lors de la compilation
c'est pour cela que j’utilise JByteMod car pas de problème de compilation car pas besoin de compiler ;)
mais plus chiant a lire
en lissant cette page http://chable.developpez.com/tutoriel/java/binaire/ je commence a comprendre
S8N
Débutant
Débutant
 
Messages: 36
Inscription: 25 Juin 2012, 11:48

Re: Jet Profiler

Messagepar S8N » 03 Septembre 2017, 09:35

Voilà mon avancement par contre je ne sais ou pas j'avance ;)

j'ai supprimé la partie avec vérification de public key car elle n'est pas utile pour la suite
Image

un moment dans le code il y avait :
Code: Tout sélectionner
int var1 = -1;

         for(int var2 = 0; var2 < var7.length - 1; ++var2) {
            if(var7[var2] == 10 && var7[var2 + 1] == 10) {
               var1 = var2 + 2;
               break;
            }
         }

         if(var1 == -1) {
            throw new lP("The license was corrupt, error 1.");
         } else {
            byte[] var9 = new byte[var1];
            byte[] var3 = new byte[var7.length - var1];

je ne pouvais pas shunté ce "if(var1 == -1)" car sinon le code devait faire un tableau de -1
donc pour faire en sorte que var1 > 0 alors j'ai modifié le if a double dimension

voici le résultat actuel:
Image

le problème suivant, comme vous pouvez le voir a la fin il fait un "return a(var6)", vu que var6 = un byte[]
alors le code call cette function
Image

et actuellement le code fait un " throw new lP("The license was corrupt, error 6.");"
donc il y a une conversion vers un INT qui bug donc c'est les "Integer.parseInt(var1.getProperty());"'
mais pour le moment je ne connais pas la fonction/utilité de getProperty donc je cherche encore ;)
S8N
Débutant
Débutant
 
Messages: 36
Inscription: 25 Juin 2012, 11:48

Re: Jet Profiler

Messagepar Hao » 03 Septembre 2017, 10:18

S8N a écrit:c'est pour cela que j’utilise JByteMod car pas de problème de compilation car pas besoin de compiler ;)


Ah ben oui. Ça fait le taff. Par contre il semble avoir un peu de mal avec les switchs.
Je suis tombé sur JBE aussi hxxp://set.ee/jbe/. Pas testé.
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Re: Jet Profiler

Messagepar S8N » 03 Septembre 2017, 10:42

déjà testé et j'aime pas, il apporte de rien par rapport a JByteMod (sauf peut être la gestion des switch mais pas testé)
j'aimerais trop avoir:
- la possibilité de break;
- pourvoir faire des throw ou je veux avec n'importe quel variable
- et le MUST c'est un convertisseur de FernFlower(code normal) to Bytecode decompiler

mais bon ... let's go comme dirait Dora ;)
S8N
Débutant
Débutant
 
Messages: 36
Inscription: 25 Juin 2012, 11:48

Re: Jet Profiler

Messagepar S8N » 03 Septembre 2017, 17:16

Bon finalement j'abandonne, je n'arrive vraiment pas à crack la vérification de la licence
donc j'ai changé d'angle d'attaque
je me suis dit : "A la place de transformer ce programme en Enterprise, si je transformais les fonctions Enterprise en Free Version"

ben cette technique marche nickel.

Yatta !!!

Merci tout le monde
S8N
Débutant
Débutant
 
Messages: 36
Inscription: 25 Juin 2012, 11:48

Re: [DONE] Jet Profiler

Messagepar Hao » 03 Septembre 2017, 19:29

Chercher à vouloir forcer la licence entreprise en faisant sauter les exceptions n'était pas une bonne idée. :D
Bien joué.
Avatar de l’utilisateur
Hao
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 113
Inscription: 27 Novembre 2013, 22:24

Suivante

Retourner vers Reversing

Qui est en ligne

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

cron