Как получить значение из адреса с помощью Java? - PullRequest
0 голосов
/ 18 августа 2010

Для программы запутывания, которую я пишу на Java, мне нужно найти способ получить значение по определенному адресу.Например, в программе, которую я открыл в шестнадцатеричном редакторе, по адресу 0000001F это шестнадцатеричное значение «00».Кроме того, возможно ли записать на определенный адрес памяти?Например, запись в 0000001F и изменение его с «00» на «FF»

Ответы [ 2 ]

1 голос
/ 18 августа 2010

Вы используете не тот язык.C или C ++ были бы лучшим выбором, потому что вы можете легко вызывать библиотеки операционной системы (на большинстве систем) и пытаться получить доступ к памяти в определенном месте.

Большинство POSIX-совместимых операционных систем реализуют mmap, которая позволяет отображатьпамять в определенном месте в адресном пространстве текущих процессов.

1 голос
/ 18 августа 2010

Чтобы ответить на ваш первый вопрос, вы можете открыть файл в виде двоичного потока и прочитать из него все, что захотите.Это не сильно повлияет на загрузчик классов, но если у вас есть пользовательский загрузчик классов, который манипулирует файлом и преобразует его во время выполнения в класс, который является допустимым и загружается JVM, это, безусловно, теоретически возможно.Я хотел бы знать, в чем дело, поскольку сам загрузчик классов не будет запутан таким образом.

Чтобы ответить на ваш второй вопрос, нет, вы не можете писать напрямую в адрес памяти с помощью Java.Вы можете вызывать функцию через JNI, которая могла бы это делать (вне выделения памяти JVM).

Мне кажется, что вы используете неправильный язык для того, что вы хотите сделать.

...