2 votes

Obfusquer les éléments protégés de Java avec ProGuard

Je suis en train de développer une bibliothèque composée de plusieurs classes individuelles qui travaillent toutes ensemble pour remplir la fonction de la bibliothèque. L'une des classes expose ensuite une poignée de fonctions publiques qui permettent à tout code extérieur d'utiliser la bibliothèque.

Comme les différentes classes doivent interagir, je les place toutes dans le même paquetage et j'ai beaucoup de choses "protégées" (classes et fonctions).

Le problème est que, par défaut, ProGuard n'obfusquera pas ces éléments protégés, car il est possible qu'ils soient combinés ultérieurement avec une autre classe dans le même paquetage. J'aimerais empêcher cela pour des raisons de sécurité.

La question est donc de savoir si je peux forcer ProGuard à obscurcir ces éléments protégés en plus des éléments privés.

En d'autres termes, existe-t-il un moyen de dire à ProGuard "J'ai fini d'ajouter des choses à ce paquet, veuillez obscurcir non seulement les choses privées dans chaque classe, mais aussi les choses protégées dans le paquet" ?

Merci de votre attention !

7voto

Eric Lafortune Points 17656

ProGuard obscurcit tout ce qui ne correspond pas à l'une des options -keep de votre configuration. Par exemple, à partir de l'option Manuel ProGuard > Exemples > Une bibliothèque typique :

-keep public class * {
    public protected *;
}

Cette spécification conserve toutes les classes, champs et méthodes publics et protégés. ProGuard obfusque tout le reste. Si vous voulez obscurcir davantage, vous devez spécifier moins d'éléments à conserver, par exemple avec une ou plusieurs options comme celle-ci :

-keep public class mypackage.MyPublicClass {
    public void myPublicMethod();
}

Vous pouvez utiliser des caractères génériques ou d'autres modèles, comme indiqué dans le manuel ProGuard.

Ainsi, par défaut, ProGuard obfusque tout, sauf si vous spécifiez de conserver certains éléments. ProGuard ne peut pas deviner ce que vous souhaitez conserver.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X