CRYPTER VOS CLASSES : CHARGEUR DE CLASSES CRYPTÉES !

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 2 déc. 2003 à 23:48
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 14 nov. 2006 à 09:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18372-crypter-vos-classes-chargeur-de-classes-cryptees

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
14 nov. 2006 à 09:30
Les classes s'exécutant côté serveur, il n'y a pas grand intérêt à cela ..;

++
ahmed97556311 Messages postés 1 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 14 novembre 2006
14 nov. 2006 à 09:28
Salut neodante

Je voudrais bien avoir une idée si c'est possible pour un projet web de crypter les .class
Et comment les décrypte lors de l'accès a ces class.
Est-ce que c'est possible d'utiliser la Class loader malgré que je n'est pas de class main et j'utilise les JSF
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
7 mars 2005 à 13:17
Je viens de trouver un article qui explique un peu pourquoi l'obfuscation n'est pas (toujours ...) une solution :
http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.html?
Je voulais en faire profiter à tout le monde !

@+
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
9 janv. 2004 à 19:31
ouai ;o) autant tous refaire soi meme ;o) ...

et puis je trouve les jvm asser lente comme sa ;o) pas la peine de surcharger en + le classloader héhé ;o)... à la limite l' ofuscateur suffit...

Mais quoi qu il en soit c est un tres bonne exercice... ;o)

Et pis moi en general jaime bien montrer mes 'algo géniaux' (pas sur que j en fasses ;o) ), temps mieu si sa peu instruire les autres...

++
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
9 janv. 2004 à 10:18
Salut GodConan,
simplement pour cacher l'algo génial que tu veux vendre et breveter : en attendant les sous pour le faire ... c'est pas très Open Source mais combien de fois t'ais tu fais 'emprunter' des bouts de codes pour un autre projet par kk1 d'autre sans un petit mail au moins : merci ça coûte pas cher !
Mais au fond le cryptage du code n'est vraiment vrai que pour les très gros projets qui deviennent alors vraiment incompréhensible à moins de passer des jours à essayer de remettre le code debout en redéfinissant toutes les variables et en sachant ce qu'elle signifie !
@+
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 janv. 2004 à 23:41
euuu cahcer du code !!! pourquoi faire?!!??

..
guillaume_master Messages postés 7 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 8 janvier 2004
8 janv. 2004 à 01:31
Oui c'est un sujet trés intéressant le débat sur l'Open Source et la propriétaire. Sinon un site trés intéressant sur les obfuscateurs :

http://www.semdesigns.com/Products/

on peut choisir un langage de prog et ca donne des exemples avant et aprés le brouillage.

Sinon, dans le cadre d'un code se voulant propriétaire, mon idée est de déporter une partie du code fonctionnel du programme sur un serveur.

A+
Backslash Messages postés 4 Date d'inscription mercredi 11 septembre 2002 Statut Membre Dernière intervention 7 janvier 2004
7 janv. 2004 à 20:12
(petite remarque qui n'a rien à voir je viens de me rendre compte que j'avais deux comptes sur le site en fait ... bax1982 et Backslash sont la même personne .... moi en l'occurence :-p)
Backslash Messages postés 4 Date d'inscription mercredi 11 septembre 2002 Statut Membre Dernière intervention 7 janvier 2004
7 janv. 2004 à 20:10
Des dé-obfuscators ??? Je n'avais jamais entendu parler de ça !!! Et comment ces dé-obfuscators font ils pour regénérer des noms de variables compréhensibles et surtout cohérents ... ???
Le code passé dans un obfuscator est compréhensible si ta classe est ultra simple. (genre tout en une classe et pas plus compliqué qu'une petite calculatrice .. ok) :-p
Mais si tu as une application bien structurée avec des dizaines (voir meme des centaines ou des milliers de classes) avec des dépendances dans tous les sens, si tous ces noms de classes, tous leurs attributs et leurs noms de méthodes sont renommés en quelque chose du style "aXpq7bv" je me demande comment tu fais pour y comprendre quelque chose ...

Pour ton idée de logiciel incrackable ... Je crois que c'est utopique d'imaginer quelque chose d'incrackable ... Si quelqu'un est suffisamment doué pour faire quelque chose de très solide, il existe quelqu'un d'autre (ou un groupement d'autres) qui sera encore plus fort pour refaire la même chose à l'envers ou pour trouver un système qui permet de contourner la difficulté.

Je pense qu'actuellement la meilleure façon de protéger sa "logique" est de la faire tourner chez soi, la ou les utilisateurs n'y ont pas accès. Néanmoins, je peux t'assurer que l'open source a fait ses preuves et que jusqu'ici c'est comme ça que les softwares se développent le mieux. Je ne veux pas ici relancer le débat entre linux et windows, ni entre les logiciels propriétaires et l'open source. Si je participe à cette discussion sur ce site, c'est parce que le projet fait intervenir d'intéressantes notions autant au point de vue technique java (reflection etc ...) qu'au niveau théorique et mathématique (crypto and co ...). Je ne pense pas que ce projet soit réellement utile mais je le trouve très intéressant parce qu'il fait intervenir ces notions qui me plaisent beaucoup. Une entreprise privée qui développe des logiciels de vraiment bonne qualité (j'en connais !) pourraient voir une utilité à crypter leur code pour protéger leurs secrets de fabrication, mais comme je disais, une fois que la logique tourne, il est facile de suivre en mémoire ce qui se passe, dans certains cas des notions d'assembleur sont nécessaires, en Java, c'est beaucoup plus simple puisqu'une fois qu'une classe est chargée elle peut etre dumpée en clair. Si une protection doit etre mise en place pour ça en Java, je pense que c'est dans la machine virtuelle qu'elle doit être implémentée.

Voilà,

Bien à vous, ...
guillaume_master Messages postés 7 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 8 janvier 2004
7 janv. 2004 à 16:06
J'ai fait pas mal d'obfuscator, mais y a plusieurs problèmes : d'abord il existe des dé-obfuscateur (donc voila quoi :-)). Ensuite le code est quand même compréhensible (dsl). J'ai pas encore trouvé un moyen de faire un logiciel incrakable à par la solution serveur ou dongle.
Si vous avez des idées hésiter pas !

A+
guillaume_master Messages postés 7 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 8 janvier 2004
7 janv. 2004 à 00:52
ok ca me confirme dans ce que j'ai compris (pardon pour la redondance). J'ai pas trop compris le coup de l'obfuscator, je vais bosser ca. En fait moi perso, j'essaye de trouver un moyen de cacher mon code et de faire un logiciel absolument in-crackable. Je viens de delphi et la à mon avis y a rien à faire. Alors que en java on peut peut etre utiliser le cryptage ou bien ce fameux obfuscator pour planquer le code. V bosser un peu et je reviendrais ;-)

merci bcp et pardon pour la redondance de ma remarque
Backslash Messages postés 4 Date d'inscription mercredi 11 septembre 2002 Statut Membre Dernière intervention 7 janvier 2004
6 janv. 2004 à 22:14
C'est ce qu'on expliquait au dessus mais la méthode que j'avais proposé était quand même beaucoup plus simple puisqu'elle ne demande même pas de comprendre l'algorithme ... Mais de toute façon comme le disait neodante, quand ta source est passée dans un obfuscator, ok la logique de ton code est toujours la et fonctionnelle, mais quasiment inexploitable puisque très durement compréhensible.
guillaume_master Messages postés 7 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 8 janvier 2004
6 janv. 2004 à 21:05
j'ai une question ! Le loader il est obligé d'être en .class ? donc on peut décompiler le loader, donc on peut connaitre l'aglo de décryptage ? donc on peut décrypter le .caesar donc on peut avoir le code source !

donc ... ca sert à rien ?
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
17 déc. 2003 à 20:03
OK merci je vais aller regarder ça de plus près !
@+
bax1982 Messages postés 3 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 17 décembre 2003
17 déc. 2003 à 19:28
C'est un projet mené par l'Apache Software Foundation qui reprend une série de sous projets liés au langage Java. La librairie BCEL est un de ces sous projets qui permet de manipuler les classes Java, les méthodes et les propriétés sous la forme d'objets, de façon un peu plus poussée qu'à l'aide de la Reflection API. Si le sujet te passionne, sache également qu'il existe une autre librairie avec le même genre de fonctionnalités et qui a l'air plus rapide que BCEL (à ce que disent les développeurs de cette deuxieme librairire), il s'agit d'ASM chez ObjectWeb (http://asm.objectweb.org/), et il en existe encore une troisième, c'est SERP (http://serp.sourceforge.net).

Il ya moyen de faire des trucs techniquements géniaux avec ça, il reste juste à trouver une idée intéressante.

Voilà voilà, amuse toi bien ;-)

@++
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
16 déc. 2003 à 23:34
Bon je vais aller regarder ce projet jakarta histoire de m'informer ... merci pour l'info. J'avais déjà entendu ce nom mais jamais je n'avais cherché à savoir ce qu'il contenait !!!
@++
bax1982 Messages postés 3 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 17 décembre 2003
16 déc. 2003 à 22:59
Même avec un classloader en JNI, cela ne pose aucun problème à partir du moment ou il est possible de l'utiliser pour charger la classe. Il suffit d'utiliser la librairie BCEL du projet jakarta (http://jakarta.apache.org) qui permet de dumper une classe chargée en mémoire.
Mais, et sur ce point, tu as tout à fait raison, à partir du moment ou le code est "brouillé" par un obfuscator, il devient vite compliqué de comprendre quelque chose à un code ne fut-ce qu'un tout petit peu complexe. Et là, je pense qu'aucun programme ne peut être capable de regénérer des noms de variables sensés et cohérents ...

@++
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
14 déc. 2003 à 23:30
Effectivement mais avec un algorithme poussé et un offuscateur de codes (renomme toutes les variables et reformate le code de sorte que lors de la décompilation, le code soit difficile à comprendre). .. je ne me souviens plus des noms de ces prog mais si cela t'intéresses je peux te retrouver les noms ! Cela ajoute une petite difficulté ! Ah oui si on passe par un class Loader en JNI (en C par exemple !) là faut désassembler et comprendre des lignes d'assembleur comme du C ou du java : c'est une autre histoire ! Donc tu me diras on peut le lire le prog ,mais dans ce cas on peut connaître les sources de n'importe quel programe !!! Même Windows mais bon en combien de lignes ... et combien d'années !
@+
bax1982 Messages postés 3 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 17 décembre 2003
14 déc. 2003 à 15:07
Hehe, ca a l'air pas mal, mais il ne faut pas oublier que malgré tous les efforts qu'on peut faire pour crypter le fichier .class, en utilisant le chargeur de classe adapté pour charger les classes cryptées, il est toujours possible de regénérer les fichiers .class originaux, non cryptés, et de les décompiler en code java clair ... Evidemment, cela demande un minimum de connaissances en java, mais toute personne normalement constituée et capable d'écrire un classloader doit être capable de décompiler les classes meme les mieux cryptées s'il possède le classloader sans réécrire l'algorithme à l'envers ...


bonne continuation
@++
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 déc. 2003 à 09:06
Prochaine étape le cryptage avec DES (on verra le triple DES un autre jous ...)
@+
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
3 déc. 2003 à 01:33
;o) moi c tou les matin 6h ;o)
pis te cas pas pour le projet eclipse ;o) i en a pas besoin ;o) ...
sa ce fait en 3 secondes ... par contre ;o) moi j enleve tou les package a cause de toi (ton premier post sur ma source...) ;o) héhé ;o) car jadore sa aussi ;o) mais fo reconnaitre c qd meme plus simple a compiler qd on use seulement javac ... ;o)

bn
++
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 déc. 2003 à 01:06
Bon d'accord je vais essayer de retirer les répertoires du package .... sniff moi qui aime bien les packages ... ;-) Et la prochaine fois je mettrais un projet Eclipse pour monsieur et un projet JBuilder9 pour les autres ... et mon batch et le script sh !
Bon je vais me coucher, je viens de terminer la saison 9 de Friends et je n'affectionne pas particulièrement Harry Potter donc au lit ! Ah oui demain debout à 6h000 ... oulà dur rien que d'y penser !
@+
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
2 déc. 2003 à 23:48
dit dc heureusement que g toujour eclipse sur moi ;o) : c chian tous c repertoire ;o) et pis moi g pas de var classpath sur ma machine ...
sa ser a rien ;o) G 3 JDK en ligne ;o) héhé...

autrement c pas mal ton source ;o) pour voir comment fonctionne un class loader car il existe deja pas mal de chiffreure de class ;o) gratuit.. ;o)

++
Rejoignez-nous