Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CRYPTER VOS CLASSES : CHARGEUR DE CLASSES CRYPTÉES !


Information sur la source

Catégorie :Sécurite & cryptage Niveau : Initié Date de création : 02/12/2003 Date de mise à jour : 08/12/2003 13:46:22 Vu / téléchargé: 9 247 / 829

Note :
5,33 / 10 - par 3 personnes
5,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (23)
Ajouter un commentaire et/ou une note


Description

Pour ceux qui ne veulent pas que les autres voient leurs sources .... Cette source va vous permettre de crypter vos classes avec les algorithmes que vous désirez (ici celui de César pour simplifier!), puis de les charger dans la JVM. N'oublions pas que javah est un décompilateur et qu'il en existe d'autres, donc pour les projets que vous désirez vendre ...

Le script va vous demander de supprimer un fichier .class, cela dans le but
de ne pas charger cette classe mais celle qui est cryptée. Le programme
surcharge uniquement la méthode findClass, qui est uniquement appelée si la
classe n'a pas déjà été chargée par la JVM, et si la superclasse ClassLoader
n'arrive pas à trouver cette classe. Par conséquent, le programme n'empêche
pas le chargement de classe non cryptées...
Toutes les classes cryptées ont une extension .caesar (César), en attendant une version avec DES...

C'est une source plus instructive que fonctionnelle et réalisée dans ce but ... c'était ça la source que je terminais GodConan ! C'est donc une source exprès pour les membres de  javafr.com !

Un fichier .BAT est inclus mais ne fonctionnera que si vous avez paramétrer les exécutables java et javac dans votre classpath ... pour les adeptes de Linux, je n'ai pas de machine sous mon coude en ce moment, donc j'ai préféré ne pas mettre de script de peur qu'il soit faut !

Je vous ai trouvé :
un décompilateur GPL http://jode.sourceforge.net
quelques obfuscateurs (pour cacher votre code) :
www.elegantsoftware.com/software/jmangle/
www.alphaworks.ibm.com/tech/JAX (je ne l'ai pas testé !)

Bon cryptage !
 

Source

  • Euh ... tout est dans le zip !
Euh ... tout est dans le zip !

Conclusion

La connaissance appartient à tous, à condition de vouloir y accéder !
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de GodConan le 02/12/2003 23:48:18

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)

++

signaler à un administrateur
Commentaire de neodante le 03/12/2003 01:06:15 administrateur CS

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 !
@+

signaler à un administrateur
Commentaire de GodConan le 03/12/2003 01:33:02

;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
++

signaler à un administrateur
Commentaire de neodante le 03/12/2003 09:06:45 administrateur CS

Prochaine étape le cryptage avec DES (on verra le triple DES un autre jous ...)
@+

signaler à un administrateur
Commentaire de bax1982 le 14/12/2003 15:07:10

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
@++

signaler à un administrateur
Commentaire de neodante le 14/12/2003 23:30:50 administrateur CS

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 !
@+

signaler à un administrateur
Commentaire de bax1982 le 16/12/2003 22:59:42

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 ...

@++

signaler à un administrateur
Commentaire de neodante le 16/12/2003 23:34:56 administrateur CS

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 !!!
@++

signaler à un administrateur
Commentaire de bax1982 le 17/12/2003 19:28:19

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 ;-)

@++

signaler à un administrateur
Commentaire de neodante le 17/12/2003 20:03:54 administrateur CS

OK merci je vais aller regarder ça de plus près !
@+

signaler à un administrateur
Commentaire de guillaume_master le 06/01/2004 21:05:24

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 ?

signaler à un administrateur
Commentaire de Backslash le 06/01/2004 22:14:34

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.



signaler à un administrateur
Commentaire de guillaume_master le 07/01/2004 00:52:34

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

signaler à un administrateur
Commentaire de guillaume_master le 07/01/2004 16:06:31

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+

signaler à un administrateur
Commentaire de Backslash le 07/01/2004 20:10:36

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, ...

signaler à un administrateur
Commentaire de Backslash le 07/01/2004 20:12:47

(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)

signaler à un administrateur
Commentaire de guillaume_master le 08/01/2004 01:31:00

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+

signaler à un administrateur
Commentaire de GodConan le 08/01/2004 23:41:14

euuu cahcer du code !!! pourquoi faire?!!??

..

signaler à un administrateur
Commentaire de neodante le 09/01/2004 10:18:37 administrateur CS

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 !
@+

signaler à un administrateur
Commentaire de GodConan le 09/01/2004 19:31:50

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...

++

signaler à un administrateur
Commentaire de neodante le 07/03/2005 13:17:34 administrateur CS

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 !

@+

signaler à un administrateur
Commentaire de ahmed97556311 le 14/11/2006 09:28:06

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

signaler à un administrateur
Commentaire de neodante le 14/11/2006 09:30:50 administrateur CS

Les classes s'exécutant côté serveur, il n'y a pas grand intérêt à cela ..;

++

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.