2009-05-18 10 views
1

Je construis un système de plugin pour mon application. J'ai lu que n'importe qui peut décomposer des fichiers .class et donc je suis forcé d'utiliser un compilateur Ahead-Of-Time (non?). Le problème est que j'ai besoin de charger certaines classes de plugins dynamiquement. À l'heure actuelle, je charge tous les fichiers .class dans un dossier et j'appelle une méthode statique (je ne crée jamais d'objet) comme système de plug-in.Java AOT + chargement dynamique des classes java

Puis-je charger ces classes lorsque toutes mes sources sont complétées AOT? Dois-je aborder le problème d'une autre manière? Java est la bonne langue pour moi?

Répondre

4

Avant la compilation de temps n'est pas pour bloquer les gens de décompiler. Je pense que vous devriez utiliser un obfuscator à cette fin.

Les classes dynamiquement chargées pour le système plugin devraient fonctionner avec les obfuscators et AOT.

+0

Thx, je vais regarder plus loin dans un obfuscator avant déployer mon application. Jusqu'à ce que j'ignore le "problème" :) – Baversjo

+1

En fait, les compilateurs AOT bloquent en effet la décompilation (en transformant le bytecode en code machine natif). Voir la caractéristique n ° 2 sur la page produit d'Excelsior JET: http://www.excelsior-usa.com/jet.html. –

+0

Ils bloquent la décompilation du bytecode Java mais un attaquant déterminé/expérimenté peut désosser le code natif. – Nat

2

Tahit Akhtar a raison. Vous avez besoin d'un obfuscator. Vous devrez le configurer pour ne pas obscurcir le nom des classes et des méthodes que votre programme utilise dynamiquement pour charger et appeler les plugins. C'est-à-dire que le SPI public des plugins ne peut pas être obscurci, mais leurs implémentations le peuvent.

1

À moins que vos classes contiennent des fonctionnalités secrètes vraiment top, je dirais que laisser tomber le faux-fuyants ...

Je me construire un cadre de plug-in et j'ai eu la même pensée pour bloquer l'accès aux plug-ins code (puisque tout sera sensible là-bas) mais j'ai abandonné, de nos jours tout ce que vous pouvez penser est déjà posté sur le web, il n'y a plus de secrets dans le développement de logiciels;)

+0

En effet. Comme je le note, je ne déploierai mon application qu'à des clients de confiance, il n'y a donc pas vraiment de quoi s'inquiéter. – Baversjo

Questions connexes