Het inroepen van een beschermd of prive-class java: zeker van te zijn dat het onmogelijk is?
Advertentie
Het juiste antwoord is: "hangt af van de aanwezigheid of afwezigheid van een security manager."
Sterker nog, door middel van de bezinning is echt mogelijk om te gaan zetten om de beperkingen van de Java taal zonder al te veel moeilijkheden, ammenochè is niet alleen een security manager, de enige actor in staat om echt te beheren en uiteindelijk stoppen met dit soort krachten.
Maar we zijn nu het voorbeeld dat is meer waard dan veel verhandeling. Gegeven de volgende klasse:
package net.nothing2hide.test; public class ClassWithMethodsToHack { private void sayHello(String name){ System.out.println("Hello " + name + "! You're calling a private method"); } } willen we laten zien hoe gemakkelijk beroepen op de methode van particuliere sayHello ", zoals ik al vergevorderd te doen zwaar gebruik van de reflectie:
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(); } } } Nog geen commentaar '
Reacties RSS-feed voor dit bericht. TrackBack URI
Geef een reactie
Nothing2Hide © 2006 Alle rechten voorbehouden.
Licentie | Disclaimer
- Social Web
- Stuur een e-mail







































