Позовавайки метод, защитени от външни или лишени от клас java: уверите, че е невъзможно?
Верния отговор е "зависи от наличието или липсата на сигурност мениджър."
В действителност, чрез размисъл, всъщност е възможно да отиде в сила на ограниченията на Java език, без особено затруднение, ammenochè точно това не е гаранция, мениджър, единственият актьор в състояние наистина да управлява и евентуално да спрат тези видове въоръжени сили.
Но сега ще дойде на пример, който е на стойност повече от много disquisizioni. Като се има предвид следното клас:
net.nothing2hide.test пакет; обществени клас ClassWithMethodsToHack (частни нищожно sayHello (Низ име) (System.out.println ( "Здравейте" + име + "! Вие сте свикване частна метод ");)) ние искаме да покаже, колко лесно invocabile извън частния метод "sayHello", както вече съм очаква да направите силно използване на размисъл:
net.nothing2hide.test пакет; обществени клас PrivateMethodInvocationTest (/ ** * Тази извадка демонстрира как да се позове клас * защитено метод за друг клас * * @ Парам args * / обществеността за недействителни статичното основните (Низ [] args) (Низ myName = "Давид"; Метод м; опитайте (/ / Let'access частния метод / / от размисъл.Можете да сторят същото / / със защитени метод м = ClassWithMethodsToHack.class.getDeclaredMethod ( "sayHello", нов клас [] () String.class); ако (м! = NULL) (/ / Нека сила на езика Java достъп / / Проверка на отразени метод.Бележки / /, че ако един мениджър е определен за сигурност / / тези промени не могат да бъдат разрешени / / и SecurityException биха могли да бъдат повдигнати m.setAccessible (вярно), / / И накрая нека се позове на защитените метод m.invoke (нов ClassWithMethodsToHack () , Нова предметна [] (myName ));)) улов (Изключение д) (e.printStackTrace ();)))
| | Знаете ли тази статия? RSS емисии Абонирай се сега! |
Все още няма коментар "
RSS емисия за коментарите на тази публикация. TrackBack URI




































