ПОДПИСАТЬСЯ НА НОВОСТИ
Подписка по Email - новости

Отменить подписку
61

Что такое эмулятор и как его сделать?

2012
15
Дек
Admin
viewsПросмотров: 1671         commentsКомментариев: 0

эмулятор

Итак, что же такое эмулятор? Это специальная программа, которая притворяется тем, чем она на самом деле не является. Много лет назад существовали различные компьютеры -- "ДВК", "Микроша", "Правец", "Синклер" и т.п. В юности многие провели с ними большое количество времени, и нельзя сказать, что впустую. Да и сейчас многие реализованные тогда на этих компьютерах идеи будут интересны. Не застали те годы? Не беда. Есть ещё одна тема -- эмулятор сотовых телефонов. эмуляторПредставьте себе, что в вашем компьютере живёт целая армада сотовых трубок, которые ведут себя в точности так, как настоящие -- показывают заставки, переключаются в меню, работают с Java-играми и приложениями, а также могут даже звонить. И даже выглядят, как настоящие. Поклонники хакерской деятельности могут создать эмулятор настоящего компьютера, чтобы обманывать старые программы девяностых годов. Часто те были защищены, имели интересные алгоритмы, хитрые трюки программирования. Эмулятор мог бы приоткрыть тайны, скрываемые этими программами. Ничего нет более увлекательного, чем момент, когда обманутая программа запустится на вашем псевдо компьютере- эмуляторе.

Итак, с идеями мы определились. Перечислим ещё раз пользу от эмулятора процессора:

  1. Повышение собственной самооценки;
  2. Умение работать с документацией по целевому процессору;
  3. Польза от исследования обманываемой программы;
  4. Приятные воспоминания о днях минувших.

Как сделать эмулятор

программа эмуляторКак строится эмулятор. В принципе, это обычная программа. На вход ей подаётся целевая программа, которую она должна исполнить. Для этого вы должны запрограммировать реакцию программы на все возможные виды кодов центрального процессора, т.е. создать дизассемблер, анализатор и исполнитель. Дизассемблер нужен, чтобы превратить машинный код в более понятную для анализа схему, анализатор должен решить -- выполнять код непосредственно, или эмулировать действие настоящего процессора, а исполнитель проводит непосредственную операцию. Все эти три алгоритма можно реализовать в одном. Первым делом для псевдо компьютера отводится память -- в настоящей памяти или на диске. программа эмуляторПосле этого "в неё" загружается исследовательская программа, и после этого эмулятор начинает её выполнять с первого же адреса «в памяти». И если всё сделать правильно и не ошибиться, то вы увидите небольшое чудо -- эмулятор будет шагать по адресам, перепрыгивать в случае переходов, записывать и читать данные из ячеек, работать с портами ввода/вывода... Вы всегда сможете остановить её, посмотреть дамп (снимок) памяти, поэкспериментировать, увеличить скорость работы или замедлить, прочитать отчёт о выполненных операциях. К примеру, если программа работает с портами, то в реальной программе очень тяжело "отловить" эти коды, а в эмуляторе -- нет проблем! эмуляторМожно даже специально настроить эмулятор так, чтобы он вёл отдельный отчёт при каждой операции с этими портами или другими интересующими вас регистрами. Особенно интересно проявляется визуальный эффект, когда программа выводит что-либо на экран. Лучше всего начать с эмуляторов процессоров, которые были установлены в компьютеры, не имеющими графики (для простоты). Дальше -- для тех, которые работали с графикой.

мобильный эмуляторКонечно же, сейчас есть множество самых разных эмуляторов, и все они рабочие. И старые программы также можно скачать из Интернета или найти на старых пыльных дисках. Но всё же насколько самому интереснее создать эмулятор собственными руками и головой -- чужая программа с этим не сравнится. А уж польза от таких "исследований" будет несомненная. И уже потом можно будет подумать: а как эту идею развить? Ну, к примеру, написать эмулятор своего рабочего компьютера, который будет эмулировать вашу рабочую операционную систему. Или поймать и «мучить» вирус? Или найти прорехи в Windows? А исправить их? Слабо?

Автор:
ОЦЕНИТЬ НОВОСТЬ
3   (голосов: 4)

Чтобы добавить комментарий нужно авторизироваться.
Авторизируйтесь используя Yandex Google Вконтакте Mail.ru Twitter