Возможно ли изменить скомпилированный класс?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Возможно ли изменить скомпилированный класс? Expand / Collapse
Автор
Сообщение
29.05.2007 15:34
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.11.2007 10:00
Сообщ.: 129, Visits: 1 404
Попрошу не материться, а ответить на простой вопрос: на одном форуме (не JAVA) увидел дискуссию на такую тему: парень хочет открывать на веб-сервере средствами РНР файл *.class , найти в нем определенную строку и заменить её на другую, после чего файл закрыть и якобы теперь этот файл будет динамически изменен, иметь другие свойства и сохранит работоспособность. Такое ВОЗМОЖНО???!!!
Сообщ. #913737
29.05.2007 16:36
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.04.2008 19:27
Сообщ.: 182, Visits: 1 528
Ну в общем то можно но с кое какими ограничениями:

Имеем два класса:

public class MainClTest {
    public static void main(String [] args) {
        TestBean tsB = new TestBean();
        System.out.println(tsB.getStr());
    }
}

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

public class TestBean {
    public String getStr() {
        return "555";
    }
}

Компилим их, и запускаем класс MainClTest, - на экране выведется "555"

Редактируем теперь файл TestBean.class вместо подстроки "555" ставим "777", - сохраняем, запускаем - выводится "777".

Но если мы вместо "777" напишем "7771" или "77" - будет ругаца!

Сообщ. #913738
30.05.2007 10:24
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.11.2007 10:00
Сообщ.: 129, Visits: 1 404
"Но если мы вместо "777" напишем "7771" или "77" "- будет ругаца! - А с чем это связано?
Сообщ. #913753
30.05.2007 13:56
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.04.2008 19:27
Сообщ.: 182, Visits: 1 528
coloboc66 (30.05.2007)
"Но если мы вместо "777" напишем "7771" или "77" "- будет ругаца! - А с чем это связано?

Ну т.к. скомпилированный class-файл, - это байт-код и есди поменять таким образом длину строки, следовательно адреса всего остального сместятся - отсюда и ругань

Сообщ. #913760
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, mishgun, pl

Время GMT +3:00, Сейчас 5:18