Запишете се за бюлетините или да ми RSS емисии, за да получават автоматично актуализации на блога!

Позовавайки метод, защитени от външни или лишени от клас 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 емисии Абонирай се сега!



Все още няма коментар "

RSS емисия за коментарите на тази публикация. TrackBack URI

Оставете коментар

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Валиден XHTML и CSS. ^ Горе


Затварям
Изпрати електронна поща