En invoquant la protection d'une classe privée ou Java: bien sûr, c'est impossible?
La réponse correcte est: "dépend de la présence ou l'absence d'un gestionnaire de sécurité."
En effet, à travers la réflexion est effectivement possible d'aller à la force des contraintes du langage Java sans trop de difficulté, ammenochè fait ce n'est pas un gestionnaire de la sécurité, le seul acteur capable de vraiment gérer et finalement mettre fin à ces types de forces.
Mais nous sommes maintenant l'exemple qui vaut plus que de nombreux disquisition. Compte tenu de la classe suivante:
package net.nothing2hide.test; public class ClassWithMethodsToHack { private void sayHello(String name){ System.out.println("Hello " + name + "! You're calling a private method"); } } nous voulons montrer comment facilement invoquer la méthode du secteur privé sayHello ", comme je l'ai déjà avancé de le faire largement usage de la réflexion:
package net.nothing2hide.test; public class PrivateMethodInvocationTest { /** * This sample class demonstrates how to * invoke a protected method on another class * * @param args */ public static void main(String[] args) { String myName = "Davide"; Method m; try { //Let'access the private method //by reflection. You could do the same //with a protected method m = ClassWithMethodsToHack.class.getDeclaredMethod( "sayHello", new Class[]{String.class}); if (m != null) { //Let's force the java language access //checks on the reflected method. Note //that if a security manager is defined //this workaround could not be permitted //and a SecurityException could be raised m.setAccessible(true); //And finally let's invoke the protected method m.invoke(new ClassWithMethodsToHack(), new Object[]{myName}); } } catch (Exception e) { e.printStackTrace(); } } } | |
Toujours pas de commentaire "
Fil RSS des commentaires pour cet article. TrackBack URI
Laisser un commentaire
Nothing2Hide © 2006 Tous droits réservés.
License | Déni de responsabilité
- Social Web
- Envoyer un e-mail



























