Vedoten on suojattu tai yksityinen luokan java: varma, että on mahdotonta?
Advertisement
Oikea vastaus on: "riippuu läsnäolo tai puuttuminen, Security Manager."
Itse kautta harkinta on todella mahdollista mennä pakottaa rajoitukset Java-kielellä, ilman kohtuuttomia vaikeuksia, ammenochè ei ole vain Security Manager, ainoa toimija pystyy todella hallita ja lopulta lopettaa tällaisia voimia.
Mutta meillä on nyt esimerkki siitä, että on arvokkaampi kuin monet disquisition. Koska seuraava luokka:
package net.nothing2hide.test; public class ClassWithMethodsToHack { private void sayHello(String name){ System.out.println("Hello " + name + "! You're calling a private method"); } } haluamme osoittaa, kuinka helposti vedota menetelmä yksityisten sayHello ", kuten olen jo edennyt niin voimakkaasti käyttää harkinta:
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(); } } } Vielä ole kommentti -
Kommentit RSS-syöte tähän virkaan. Trackback URI
Jätä kommentti
Nothing2Hide © 2006 Kaikki oikeudet pidätetään.
Lisenssi | Disclaimer
Sulje
- Sosiaalinen web
- Lähetä sähköposti







































