Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вот так я взломал, private inner класс :( 
:(
    Опции темы
Domestic Cat
Дата 28.2.2005, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Сабж

Код

import java.lang.reflect.*;

public class Test
{
public static void main(String [] ar) throws Exception
{
      A a = new A();
     Class b = Class.forName("A$B");
     Class a1 = Class.forName("A$1");
     Constructor[] bctor = b.getDeclaredConstructors();
     Object bimpl = bctor[1].newInstance(new Object[] {a, null});
     Method[] m = b.getDeclaredMethods();
     m[0].invoke(bimpl, new Object[] {});
}
}

class A
{
A(){}
       // А должен создавать объект Б, иначе не выйдет
       // где и как - по барабану
public void main()
{
     B b = new B();
}

private class B  // не такой уж он и приват
{
     void print()
     {
      System.out.println("Hello from hacked class!");
     }
}
}


Аутпут думаю, понятен.
java 1.5.0_01, win 2000, jikes.
Такая вот секьюрити smile


--------------------

PM   Вверх
Zandr
Дата 28.2.2005, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



j2sdk1.4.2_04:
Цитата

java.lang.IllegalAccessException: Class Test can not access a member of class A$B with modifiers "private"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57)
at java.lang.reflect.Constructor.newInstance(Constructor.java:268)
at Test.main(Test.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.intellij.rt.execution.application.AppMain.main(Unknown Source)
Exception in thread "main" Process terminated with exit code 1



Это сообщение отредактировал(а) Zandr - 28.2.2005, 08:41
PM MAIL   Вверх
Domestic Cat
Дата 28.2.2005, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Дык я ж говорю - jikes. javac на такое не ведется smile

В аттаче скомпиленное jikesом творение.

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  test.zip


--------------------

PM   Вверх
Sardar
Дата 28.2.2005, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Дык это на этапе компиляции только, после уже public/private не особо работают. Пример:
Код
public class jtest {
public void getPrivate() {
  jc j=new jc();
  System.out.println("Private field: "+j.privateField);
}
public static void main(String arg[]) {
  jtest j=new jtest();
  j.getPrivate();
}
}

Код

public class jc {
public String privateField="Private Test";
}

Компилим, запускаем, убеждаемся что работает. Меняем jc.java
Код

public class jc {
private String privateField="Private Test";
}

Компилим только jc.java, запускаем jtest, удивляемся smile
Компилятор: javac

Отсюда вывод, хак(системныe утилитy, мониторинг) нужно писать в опкодах на асме.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Domestic Cat
Дата 28.2.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(Sardar @ 28.2.2005, 00:41)
Дык это на этапе компиляции только, после уже public/private не особо работают.


Прикол тот, что оба компилятора спокойно все компилят; только вот при запуске оказывается что jikes дал доступ к приватному классу, а javac - нет.


--------------------

PM   Вверх
pompei
Дата 7.9.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 1
Всего: 6



Хе а у меня на javac хакнулось

Я установил jdk6.1, используя far создал в папке D:\temp файл Test.java, вставил в него вышеприведенный код; запустил команду

D:\temp\>javac Test.java

В папке появились файлы
A.class
A$1.class
A$B.class
Test.class
ну и остался
Test.java

теперь даю команду
D:\temp\>java Test
Hello from hacked class!

 smile 

Может где-то у меня сикьюрити не так настроено?

--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1222 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.