Позовавайки се на защитена или частни клас Java: уверите, че е невъзможно?
Правилният отговор е: "Зависи за наличието или липсата на гаранция мениджър."
В действителност, чрез размисъл е действително възможно да отида в сила на ограниченията на езика Java, без излишни трудности, ammenochè не е само мениджър на сигурността, единственият актьор в състояние наистина да управлява и евентуално да спрат тези видове въоръжени сили.
Но сега сме пример, че си струва повече от много дисертациите. Като се има предвид следното Клас:
package net.nothing2hide.test; public class ClassWithMethodsToHack { private void sayHello(String name){ System.out.println("Hello " + name + "! You're calling a private method"); } } Ние искаме да се докаже колко лесно да се позове на метод от частни sayHello ", както вече съм напреднал да го направи силно използване на размисъл:
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(); } } }
Nothing2Hide © 2006 Всички права запазени.
Лиценз | Опровержение
Затварям
- Социални Уеб
- Изпрати електронна поща

























