amc emulator что это

Лучшие эмуляторы игровых консолей для Windows

В этом материале я постарался собрать большое количество проверенных временем эмуляторов игровых приставок под Windows. При помощи этих программ можно с легкостью превратить свой ПК в ретро игровую консоль, и наслаждаться классическими играми, от которых остались только лучшие впечатления.

Возможно, что-то в подборку не попало. Если это так, указывайте пропущенный эмулятор в комментариях, обсудим и его.

Принцип работы с эмулятором приставки

Эмулятор игровой приставки — программная оболочка, которая эмулирует работу аппаратной части самого устройства. Разрабатывать эмулятор не так просто — требуется и опыт программирования, и знания точной информации о принципах работы оригинального устройства. Большинство эмуляторов можно разделить на две группы, включая «простые» и «составные» программы. Многие эмуляторы предоставляют даже больший функционал, чем старые консоли (например, сохранение в играх для Dendy и Sega).

Нужны и образы игр. Их разработчики эмуляторов тоже не имеют право встраивать в свое ПО. Образы, или ROM, доступны в интернете. Для Sega или PlayStation количество ROM достигает многих сотен. Сейчас в интернете можно найти образы даже очень редких игр, которые раньше было сложно достать в магазине.

Nintendo Entertainment System (NES)

amc emulator что это

Технически классический эмулятор Nestopia уже не поддерживается своими разработчиками. Но есть порт, который поддерживается — NESTOPIA UE. В этом случае UE означает «Undead Edition», это неофициальная версия NESTOPIA. Достоинствами программы является ее простота. Здесь минимум настроек, но эмулятор работает практически со всеми старыми играми для NES, обеспечивая максимально качественное их отображение. NESTOPIA UE — один из лучших эмуляторов восьмибитной приставки.

amc emulator что это

Это один из наиболее универсальных эмуляторов NES. Приложение все-в-одном предлагает широкие возможности как обычному геймеру, так и продвинутому игроку, который хочет получить максимальный контроль над процессами, происходящими в эмуляторе. Здесь есть инструмент отладки, возможность записи геймплея, инструменты для работы с ROM и вспомогательный инструмент для создания спидранов — процесса скоростного прохождения игры. У этого эмулятора есть порты под Windows, Max OS X и Linux.

Super Nintendo Entertainment System (SNES)

amc emulator что это

Этот эмулятор представляет собой модуль SNEC для RetroArch. Программа — форк эмулятора BSnes, к которому добавили ряд полезных функций. В текущей версии эмулятора есть возможность загрузки файлов BIOS, чего ранее не было в SNES9X. Эмулятор поддерживает очень большое число игр, с ним работают практически все образы SNES-игр, которые есть в сети. Если у вас есть этот эмулятор, скорее всего, никаких проблем никогда не возникнет.

amc emulator что это

SNES9X, определенно, один из самых удачных эмуляторов SNES. Он может работать даже с последними релизами для Super Famicom, с чем не справляются некоторые другие эмуляторы. Разработчики оснастили эмулятор большим числом возможностей, включая настройку видео, звука, поддержку читов и мультиплеер. Порты этого эмулятора выпущены под Windows, Max OS X, iOS, Android. SNES9X доступен и в качестве ядра под RetroArch.

amc emulator что это

Project 64 — один из наиболее совместимых со всеми играми эмуляторов Nintendo 64. Эта программа не требует BIOS. Плагины настроены по умолчанию, и все работает отлично. Эмуляция звукового сопровождения и видео оригинальной приставки работает очень хорошо. Здесь нет большого количества настроек, чтобы не осложнять жизнь пользователю. Но зато есть поддержка мультиплеера, поддержка читов. Можно настраивать масштаб экрана, обеспечивая себе максимальное удобство геймплея.

amc emulator что это

Еще один модуль для RetroArch, универсального эмулятора, о котором мы поговорим в самом конце статьи. Причем этот модуль — единственный. Здесь огромное количество настроек. Если есть желание, можно без труда поменять многое — и цветовую гамму дисплея, и звук и все, что вообще возможно поменять. Есть порты под Windows, Mac OS X, Android, и Linux.

Nintendo GameCube и Wii

amc emulator что это

Dolphin — единственный достойный эмулятор Nintendo GameCube и Wii. Работает он едва ли не лучше, чем сами игровые консоли, которые этот софт должен эмулировать. Вдобавок к сглаживанию и возможности быстрого сохранения в играх, вы можете играть с разрешением 1080р. Этой возможности не было в оригинальных приставках. Конечно, есть и несколько багов, но их не так много. Кроме того, работа над эмулятором ведется энтузиастами, так что особых претензий к ним быть не может. Все, что нужно знать — работает эмулятор почти идеально, обеспечивая качественную графику и уютный геймплей.

Gameboy, Gameboy Color, и Gameboy Advance

amc emulator что это

Для систем Game Boy есть несколько эмуляторов, но лучшим является Game Boy. Работать он может и в качестве автономного эмулятора, и в качестве модуля для RetroArch. Цветопередача, звук, геймплей — все практически идеально. Требовательный пользователь может поработать с графическими фильтрами, настроить звук по своему вкусу, модифицировать еще какие-то настройки. Эмулятор был портирован под Windows, Mac OS X, Linux. Для работы эмулятора требуется Microsoft DirectX, желательно последней версии.

amc emulator что это

Этот эмулятор начал свой путь в мир игр как эмулятор системы Gameboy Advanced. Но сейчас это наиболее универсальный эмулятор NIntendo DS, и единственный, поддерживающий DSi. Это также самый быстрый эмулятор, что было не так просто обеспечить, учитывая наличие двух дисплеев и процессоров в самой приставке. Некоторые функции в эмуляторе отсутствуют (например WiFi и мультиплеер), некоторые игры отображаются не идеально. Но в подавляющем большинстве случаев этот эмулятор обеспечивает вполне комфортную игру. Настроек здесь очень много, так что если вы видите какую-то проблему, ее, вероятнее всего, можно решить настройкой. также здесь есть отладочный инструмент для разработчиков.

amc emulator что это

Отличное ядро для RetroArch, хотя есть и ряд ограничений, особенно, если сравнивать этот эмулятор с автономными. Тем не менее, играть в большинство игр можно без всяких проблем, есть ряд настроек. ПО поддерживает и эмуляцию GBA.

amc emulator что это

Практически идеальный эмулятор Sega — причем не одной консоли Sega Mega, а целого ряда, включая Genesis, Game Gear, Sega CD. Поддержки Saturn и Dreamcast здесь нет. Все остальные приставки эмулируются на отлично, практически полная совместимость с играми для поддерживаемых платформ. Здесь есть поддержка читов, быстрое сохранение, запись видео и аудио, онлайн-игра и поддержка различных геймпадов. Полноэкранный режим, масштабирование и ряд видеофильтров дополняют возможности эмулятора. Порты есть под Windows, Mac OS X и Linux.

А это модуль для RetroArch. Тоже поддерживает эмуляцию таких платформ, как Genesis, Mega Drive, Sega/Mega CD, Master System, Game Gear & SG-1000. Поддерживается большинство игр, есть много настроек. Есть и возможность загрузки BIOS, в случае необходимости.

Здесь проблемы. Для этой приставки практически нет нормального эмулятора под Windows. Есть ряд попыток эмулировать консоль, включая DEMUL или nullDC. Но здесь поддерживается очень мало игр, большое число проблем с совместимостью, стабильно играть не получится. Интересно, что под Android есть отличный эмулятор Dreamcast — это ReiCast. Но вот под Windows — ничего. Плохо и то, что практически никто не занимается разработкой эмулятора в текущее время.

amc emulator что это

Идеального эмулятора PlayStation не существует. Но PCSX близок к тому, чтобы его можно было назвать лучшим. Разработчики этого эмулятора сделали все для того, чтобы игрок чувствовал при игре с PCSX погружение в оригинальную атмосферу Play Station. Для того, чтобы эмулятор работал, требуется официальный BIOS приставки, а также несколько видеоплагинов, звуковых плагинов. Версии эмулятора есть для Windows, Max OS X, Linux. Есть и отдельный модуль для универсального эмулятора RetroArch, модуль называется “PCSX-Rearmed». Совсем слабый ПК не сможет нормально работать с этим эмулятором, нужна более-менее современная система.

amc emulator что это

Эмулятор PS2. Программа до сих пор поддерживается ее разработчиками, которые активно развивают проект. PCSX2 совместим с большинством игр для оригинальной консоли. Как и в предыдущем случае, здесь требуется BIOS, плагины для видео и аудио, привода, а также образы игр (ROM/ISO). Эмулятор выпущен для Windows, Mac OS X и Linux. Но в этом случае характеристики ПК должны быть на высоте, иначе поиграть не выйдет — эмулятор и игры требуют много ресурсов.

amc emulator что это

Отличный эмулятор консоли PSP, поддерживающий большинство игр для этого устройства. Если характеристики ПК высокие, то игра будет выглядеть даже лучше, чем на приставке. Эмулятор позволяет увеличить разрешение в два раза, что убирает часть артефактов на полигональных моделях. Кроме того, эмулятор исправляет и дополняет некоторые текстуры, сглаживая их. BIOS здесь не требуется, настройки есть, их довольно много, но все работает отлично и по умолчанию. PPSSPP выпущен под Windows, Max, Linux.

amc emulator что это

Работа над эмулятором еще ведется, хотя он уже вполне работоспособен. К сожалению, некоторые игры не будут работать с полной скоростью. Даже те игры, что запустятся нормально, будут выглядеть не идеально. Возможно, в будущем этот эмулятор станет работать лучше — разработчики делают все, чтобы так и было. Кстати, для этой платформы не так просто достать образы игр, это еще одна проблема.

amc emulator что это

Как и предыдущий эмулятор, этот еще находится на ранних стадиях разработки. Очень немногие игры для Wii U поддерживаются. Чтобы поиграть хотя бы во что-то, компьютер должен быть очень мощным. Сейчас относительно неплохо идут такие игры, как Mario Kart 8 и Twilight Princess HD. Другие дают стартовый экран, но не загружаются, а если загружаются, играть в них не получится.

amc emulator что это

Наверное, это единственный представитель семейства универсальных эмуляторов, который стоит внимания. Вернее, если вы используете этот пакетный эмулятор, вряд ли понадобится что-то еще. RetroArch — эмулятор все-в-одном, он способен запускать игры большинства известных приставок. Поддерживает он и обычные консоли, Sega, Playstation 1 и другие, и портативные — Game Boy Advance и более старые.

Работает эмулятор с отдельными ядрами, каждое из которых, в свою очередь, эмулирует свою консоль. Это значит, что для GBA — одно ядро, для NES — совсем другое. И все эти ядра можно добавлять в RetroArch. По мере выхода новых модулей их тоже можно добавлять в этот «комбайн».

Доступен эмулятор для ОС Windows, Mac OS X, Linux и мобильных операционных систем.

Источник

Что такое эмулятор

Ваш пропуск в мир винтажных приставок и хакерских игрушек

В вашем детстве были приставки с интересными играми, в которые было бы здорово поиграть снова. Но ради нескольких игр и пары часов удовольствия неохота искать старую приставку или покупать современный ремейк.

Что можно сделать: можно взять компьютер, запустить на нём эмулятор приставки, скачать файл с игрой и поиграть. При желании можно даже подключить к компьютеру джойстик, чтобы было всё совсем как по-настоящему.

Вот сразу список эмуляторов на будущее:

А пока вы распаковываете своего «Супер Марио», вот немного матчасти о том, как это работает.

Что такое эмулятор

Можно представить, что эмулятор — это переходник с определённой программы на другую программу или железо. Например:

amc emulator что это

Прочитайте нашу статью о процессорах M1 на базе ARM

Технически эмулятор — это программа, которая создаёт для другой программы или железа иллюзию, будто она работает в привычной среде: получает данные в нужном формате, исполняет команды на правильной архитектуре и т. д. А сам эмулятор обеспечивает совместимость: занимается преобразованием команд и данных, чтобы всё работало.

Пример. Допустим, мы взяли старый картридж от приставки, разобрали его, подключили через переходник к компьютеру и скопировали игру, которая была на этом картридже. Игра в этом случае — это программа, которая состоит из одного или нескольких файлов. Но сейчас они бесполезны без приставки: компьютер не знает, как с ними работать и как запускать.

amc emulator что это

Затем берём программу-эмулятор, которая создаёт внутри компьютера виртуальную мини-приставку со своими виртуальными драйверами. Эта виртуальная приставка уже знает, как работать с такими файлами, поэтому можно ей отдать файлы с игрой, чтобы она их запустила. В итоге на компьютере можно играть в старые игры точно так же, как на настоящей приставке.

Эмуляторы в играх

Существенная часть современных игр выходит на Windows. Если вы захотите поиграть в них на Mac OS, вам потребуется эмулятор Windows: это будет либо полноценная виртуальная машина Parallels или VMWare, либо частичный эмулятор вроде WINE.

У компании Valve есть площадка для игр Steam, на которой то и дело выходят игры для Mac. Некоторые из них написаны под Mac с нуля, но чаще это игры под Windows, которые обёрнуты в собственный эмулятор.

И есть великое множество эмуляторов ретроприставок, о которых мы писали в начале.

Эмуляторы во всём остальном

Самый известный сейчас пример эмулятора — Rosetta, которая позволяет запускать на новых макбуках с процессором Apple M1 старые программы, которые были написаны для архитектуры x86. С технической точки зрения Rosetta — не совсем эмулятор, скорее транслятор кода, но решает ту же самую задачу — берёт старые команды и на лету преобразует их в новый формат.

Некоторый софт зависит от определённого железа — например, железных ключей шифрования или специальных защитных дискеток. Например, такое ещё можно встретить в бухгалтериях, которые отправляют платёжки через клиент-банк. И если в компьютере нет дисковода или на руках нет флешки, можно использовать эмулятор — программа делает вид, что она дискетка, и клиент-банк забирает с неё все нужные ключи безопасности.

В старом музыкальном оборудовании могут использоваться дискеты, но они недолговечные и их неудобно считывать на современных компьютерах. Тогда используют эмуляторы дискет с использованием USB-флешек. Устройство делает вид, что оно — набор дискет на 1,44 МБ.

amc emulator что этоЭмулятор гибкого диска. Файлы хранятся на флешке

Всё ли можно эмулировать

Теоретически — да, если нет ограничений по мощности железа, которое для этого нужно.

На практике всё сложнее: некоторые устройства по вычислительной силе вплотную подбираются к возможностям компьютера, а иногда даже превосходят их. Например, на компьютере есть эмуляторы приставок PS2 и первого Xbox — они вышли 20 лет назад и по современным меркам в них совсем слабое железо. Но PS4 и Xbox One уже не эмулируются.

👉 Общее правило для эмуляции такое: вычислительная мощность эмулятора должна быть на несколько поколений выше, чем у того устройства, которое мы собираемся эмулировать.

Источник

Популярные эмуляторы Android для Windows

amc emulator что это

amc emulator что это

Содержание

Содержание

Эмуляторов Android под Windows 10 существует великое множество, и засунуть зеленого робота в одно из окон рабочего стола не составит большого труда. В данной подборке представлена пятерка лучших приложений, пользующихся заслуженной любовью и популярностью среди пользователей.

Зачем нужны эмуляторы?

Рано или поздно наступает момент, когда пользователь понимает, что его мобильный гаджет уже не соответствует определенным требованиям, и не «потянет» только что вышедшую новую игрушку. Но руки-то чешутся испытать ее как можно скорей! В таких случаях можно воспользоваться эмуляторами Android, развернув нужную версию операционки прямо на рабочем столе персонального компьютера.

Или, к примеру, смартфон находится в ремонте, а терять прогресс в играх и общение в мессенджерах категорически не хочется. Здесь также можно прибегнуть к помощи виртуального гаджета. Да и честно говоря, смотреть в большой монитор все же приятней, чем напрягать глаза в маленький экран.

Родителям на заметку! Установите эмулятор на стационарный ПК, и позвольте своему чаду дозировано играть в любимые игрушки на нем, а не на вашем смартфоне. И глазки будут целее, и телефон не придется добывать с боем из рук ребенка.

И совсем не стоит забывать о категории блоггеров, несущих в массы разумное доброе, вечное. А именно прохождения мобильных игр, и выкладывающих ролики с ними на свои каналы YouTube. Для них эмулятор — профессиональный инструмент захвата потокового видео.

Если с назначением программ-эмуляторов более-менее понятно, то вопрос: «Какую установить?» многих может поставить в тупик. Далее перейдем непосредственно к кандидатам, способным заменить собой мобильный гаджет.

MEmu Play

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

amc emulator что это

Для запуска эмулятора потребуется как минимум 1 ГБ оперативной памяти, видеокарта, поддерживающая OpenGL 2.0 и процессор, понимающий технологии виртуализации.

После установки MEmu пользователь получает полноценную версию мобильного устройства, дополненную различными удобными «фишками»:

BlueStacks

amc emulator что это

После установки и начальной настройки получаем полноценную копию своего гаджета на рабочем столе. В программе работает Google Play магазин, из которого доступно к установке огромное количество игр и приложений.

Интересной особенностью эмулятора является своя собственная игровая валюта, которая начисляется за скачивание и запуск приложений из магазина. Монетизировать ее не получится, а вот потратить в том же магазине на приобретение дополнительных «плюшек» — всегда пожалуйста.

amc emulator что это

Важно понимать, BlueStacks — довольно требователен к ресурсам ПК. Чтобы получить сносную графику (до 30 fps), рабочая станция должна иметь на борту 4-6 ГБ ОЗУ и как минимум двухъядерный процессор с тактовой частотой 1,8-2,5 ГГц и поддержкой виртуализации.

Именно по этой причине на слабом компьютере можно получить «подлагивание» эмулятора и его беспричинное прекращение работы.

NOX Player

Еще один эмулятор Android для запуска приложений и игр на стационарном компьютере. Получить бесплатную версию программы можно по адресу. Девиз разработчика: «Чем проще, тем лучше», поэтому интерфейс программы прост и интуитивно понятен, но в то же время наделен достаточно богатым функционалом. В арсенале эмулятора:

amc emulator что это

К сильным сторонам эмулятора относятся: стабильная и довольно шустрая работа, невысокие системные требования. По заявлению разработчика, минимум, что надо иметь в системном блоке: процессор с поддержкой виртуализации, 512 МБ ОЗУ и 1 ГБ свободного места на жестком диске. Этого вполне достаточно для запуска мессенджеров и простых 2D-приложений. Для запуска «тяжелых» игрушек потребуется значительно больше вычислительных ресурсов.

Remix OS Player

Уже из названия видно, что, скачав данный эмулятор, пользователь получает полноценную операционную систему. Получить бесплатную версию эмулятора можно с сайта производителя. Внешне интерфейс программы очень схож с NOX Player, и в этом нет ничего удивительного, ведь NOX разрабатывался как облегченная и упрощенная версия Remix OS.

amc emulator что это

Инсталляционный пакет на сайте разработчика имеет внушительные 780 МБ. Приложение предъявляет низкие системные требования к железу (ОЗУ от 1 ГБ и двухъядерный процессор с технологией виртуализации), но в то же время наделено хорошим быстродействием. В виртуальной среде существует возможность запуска большинства «тяжелых» игр с достойными показателями fps.

Существенным недостатком эмулятора является его категорическое нежелание работать с процессорами AMD. Чтобы насладиться богатым функционалом, системой должен управлять центральный процессор производства Intel.

Genymotion

Единственный софт из представленной подборки, предназначенный для профессионального использования. Если у предшественников во главу угла ставятся игровые возможности, то в случае с Genymotion, главенствуют механизмы тестирования приложений. Простая, но надежная система с высокой производительностью — хорошее тому подспорье.

amc emulator что это

Эмулятор работает в связке со средой разработки приложений Android Studio, и в последующем не требует потери времени на компиляцию исполняемого файла и его установку на устройство. Разработчик сразу может видеть в окне программы результат проделанных изменений.

Еще одну сложность при первичной настройке приложения вызывает процесс интеграции Genymotion в Android Studio. Для этого необходимо дополнительно скачать плагин и «внедрить» его в среду разработчика. На выходе получаем мощный пакет для оперативного тестирования созданных под Android приложений.

Вывод

Конечно, эмуляторы не могут полностью заменить мобильный гаджет. Они медлительны, иногда «глючны», но как альтернатива — вполне имеют право на жизнь. И если смартфон уже не «тянет» любимые игры, в них всегда можно «погонять» на рабочем столе компьютера.

Источник

Носорог внутри кота — запускаем прошивку в эмуляторе Kopycat

amc emulator что это

В рамках встречи 0x0A DC7831 DEF CON Нижний Новгород 16 февраля мы представили доклад о базовых принципах эмуляции бинарного кода и собственной разработке — эмуляторе аппаратных платформ Kopycat.

В статье мы приведём описание запуска прошивки устройства в эмуляторе, продемонстрируем взаимодействие с отладчиком и выполним небольшой динамический анализ прошивки.

Предыстория

A long time ago in a galaxy far far away

Пару лет назад в нашей лаборатории возникла необходимость исследовать прошивку устройства. Прошивка была сжата, распаковывалась bootloader’ом. Делал он это весьма замороченным способом, несколько раз перекладывая данные в памяти. Да и сама прошивка потом активно взаимодействовала с периферией. И всё это на ядре MIPS.

Имеющиеся эмуляторы по объективным причинам нас не устроили, а хотелось всё-таки запустить код. Тогда решили сделать свой эмулятор, который сделает минимум и позволит распаковать основную прошивку. Попробовали — получилось. Подумали, а что если добавить периферию, чтобы еще и основную прошивку выполнять. Было не очень больно — и тоже получилось. Снова подумали и решили делать полноценный эмулятор.

В итоге получился эмулятор вычислительных систем Kopycat.

amc emulator что это

Имеет место игра слов.

Kopycat

При создании эмулятора ставились совершенно определённые цели:

В итоге, для реализации был выбран Kotlin, шинная архитектура (это когда модули связываются между собой через виртуальные шины данных), JSON — в качестве формата описания устройства, и GDB RSP — в качестве протокола взаимодействия с отладчиком.

Разработка идёт на протяжении чуть больше двух лет и активно продолжается. За это время были реализованы процессорные ядра MIPS, x86, V850ES, ARM, PowerPC.

Проект растет, и пришло время представить его широкой общественности. Подробное описание проекта сделаем позже, а сейчас сосредоточимся на использовании Kopycat.

Для самых нетерпеливых — промо-версию эмулятора можно скачать по ссылке.

Носорог в эмуляторе

Напомним, ранее для конференции SMARTRHINO-2018 было создано тестовое устройство «Носорог» для обучения навыкам реверс-инжиниринга. Процесс статического анализа прошивки был описан в этой статье.

Теперь же попробуем добавить «динамики» и запустим прошивку в эмуляторе.

Нам понадобятся:
1) Java 1.8
2) Python и модуль Jep для использования Python внутри эмулятора. WHL-cборку модуля Jep под Windows можно скачать тут.

Для Windows:
1) com0com
2) PuTTY

Для Linux:
1) socat

В качестве GDB-клиента можно использовать Eclipse, IDA Pro или radare2.

Как это работает?

Для того, чтобы выполнять прошивку в эмуляторе, необходимо «собрать» виртуальное устройство, которое представляет собой аналог реального устройства.

Реальное устройство («носорог») можно показать на структурной схеме:

amc emulator что это

Эмулятор имеет модульную структуру и конечное виртуальное устройство можно описать в JSON-файле.

Обратите внимание на параметр firmware в разделе params — это имя файла, который можно загружать в виртуальное устройство в качестве прошивки.

Виртуальное устройство и его взаимодействие с основной операционной системой можно представить вот такой схемой:

amc emulator что это

Текущий тестовый экземпляр эмулятора подразумевает взаимодействие с COM-портами основной ОС (отладочный UART и UART для Bluetooth-модуля). Это могут быть реальные порты, к которым подключены устройства или же виртуальные COM-порты (для этого как раз нужен com0com / socat).

Для взаимодействия с эмулятором извне на данный момент существует два основных способа:

Виртуальные COM-порты

Для того чтобы взаимодействовать с UART-ом виртуального устройства на локальной машине через терминал, необходимо создать пару связанных виртуальных COM-портов. В нашем случае один порт задействует эмулятор, а второй — программа-терминал (PuTTY или screen):

amc emulator что это

Использование com0com

Виртуальные COM-порты настраиваются setup-утилитой из комплекта com0com (консольная версия — C:\Program Files (x86)\com0com\setupс.exe, или GUI-версия — C:\Program Files (x86)\com0com\setupg.exe):

amc emulator что это

Следует установить галочки enable buffer overrun для всех созданных виртуальных портов, иначе эмулятор будет ожидать отклика от COM-порта.

Использование socat

Внутренний интерфейс командной строки (Argparse или Python)

Поскольку Kopycat представляет собой консольное приложение, для взаимодействия со своими объектами и переменными эмулятор предоставляет два варианта интерфейса командной строки: Argparse и Python.

Argparse — это CLI, встроенный в Kopycat, он доступен всегда и всем.

Альтернативный CLI — интерпретатор Python. Для его использования необходимо установить Python-модуль Jep и настроить эмулятор для работы с Python (будет использоваться интерпретатор Python, установленный в основной системе пользователя).

Установка Python-модуля Jep

Под Linux Jep может быть установлен через pip:

Для установки Jep под Windows необходимо предварительно установить Windows SDK и соответствующую Microsoft Visual Studio. Мы немного упростили вам задачу и сделали WHL-сборки JEP под актуальные версии Python для Windows, поэтому модуль можно установить из файла:

Для проверки установки Jep, необходимо выполнить в командной строке:

В ответ должно быть получено сообщение:

В командном файле эмулятора для вашей системы (kopycat.bat — для Windows, kopycat — для Linux) к списку параметров DEFAULT_JVM_OPTS добавьте дополнительный параметр Djava.library.path — он должен содержать путь до установленного модуля Jep.

В результате для Windows должна получиться строка следующего вида:

Запуск Kopycat

Эмулятор представляет собой консольное JVM-приложение. Запуск осуществляется через сценарий командной строки операционной системы (sh/cmd).

Команда для запуска под Windows:

Команда для запуска под Linux с использованием утилиты socat:

В результате будет выведено приглашение Python > (или Argparse > ):

Взаимодействие с IDA Pro

В качестве исходного файла для анализа в IDA для упрощения тестирования используем прошивку «Носорога» в виде ELF-файла (там сохранена метаинформация).

Вы также можете использовать основную прошивку без метаинформации.

После запуска Kopycat в IDA Pro в меню Debugger идём в пункт «Switch debugger. » и выбираем «Remote GDB debugger«. Далее настраиваем подключение: меню Debugger — Process options.

amc emulator что это

Теперь становится доступна кнопка запуска отладки (клавиша F9):

amc emulator что это

Нажимаем её — происходит подключение к модулю отладчика в эмуляторе. IDA переходит в режим отладки, становятся доступны дополнительные окна: информация о регистрах, о стеке.

Теперь мы можем использовать все стандартные возможности работы с отладчиком:

Подключение к отладчику не означает запуска кода прошивки. Текущей позицией для выполнения должен быть адрес 0x08006A74 — начало функции Reset_Handler. Если прокрутить листинг ниже, то можно увидеть вызов функции main. Можно установить курсор на этой строке (адрес 0x08006ABE ) и выполнить операцию Run until cursor (клавиша F4).

amc emulator что это

Далее можно нажать F7, чтобы зайти в функцию main.

Если выполнить команду Continue process (клавиша F9), то появится окно «Please wait» с единственной кнопкой Suspend:

amc emulator что это

При нажатии Suspend выполнение кода прошивки приостанавливается и может быть продолжено с того же адреса в коде, где было прервано.

Если продолжить выполнение кода, то в терминалах, подключенных к виртуальным COM-портам, можно увидеть следующие строки:

amc emulator что это

amc emulator что это

Наличие строки «state bypass» говорит о том, что виртуальный Bluetooth-модуль перешёл в режим приёма данных от COM-порта пользователя.

Теперь в Bluetooth-терминале (на рисунке — COM29) можно вводить команды в соответствии с протоколом «Носорога». Например, на команду «MEOW» в Bluetooth-терминал вернётся строка «mur-mur»:

amc emulator что это

Эмулируй меня не полностью

При построении эмулятора можно выбирать степень детализации/эмуляции того или иного устройства. Так, например, модуль Bluetooth можно эмулировать по-разному:

В текущей версии эмулятора используется второй подход — виртуальный Bluetooth-модуль выполняет конфигурирование, после чего переходит в режим «проксирования» данных из COM-порта основной системы в UART-порт эмулятора.

amc emulator что это

amc emulator что это

Мы можем обойти такую ситуацию путём «ручного» сброса флага busy сразу после его установки. В IDA Pro можно создать Python-функцию и вызывать её в breakpoint’е, при этом сам breakpoint поставить в коде после записи значения 1 во флаг busy.

Breakpoint-обработчик

Сначала создадим Python-функцию в IDA. Меню File — Script command.

Добавляем новый сниппет в списке слева, даём ему имя (например, BPT),
в текстовом поле справа вводим код функции:

amc emulator что это

После этого нажимаем Run и закрываем окно скриптов.

amc emulator что это

amc emulator что это

Если текущее значение флага busy равно 1, то следует выполнить функцию skip_dma в строке скриптов:

amc emulator что это

Взаимодействие с эмулятором

Эмуляция ради эмуляции вряд ли вызовет восторг и радость. Гораздо интереснее, если эмулятор поможет исследователю увидеть данные в памяти или установить взаимодействие потоков.

Покажем, как в динамике установить взаимодействие RTOS-тасков. Предварительно следует приостановить выполнение кода, если оно запущено. Если перейти в функцию bluetooth_task_entry в ветку обработки команды «LED » (адрес 0x080057B8 ), то можно увидеть, что сначала создается, а потом отправляется в системную очередь ledControlQueueHandle некоторое сообщение.

amc emulator что это

Следует установить breakpoint на обращение к переменной ledControlQueueHandle, расположенной по адресу 0x20000624 и продолжить выполнение кода:

amc emulator что это

В результате сначала произойдет останов по адресу 0x080057CA перед вызовом функции osMailAlloc, далее — по адресу 0x08005806 перед вызовом функции osMailPut, потом через некоторое время — по адресу 0x08005BD4 (перед вызовом функции osMailGet), который принадлежит функции leds_task_entry (LED-таск), то есть произошло переключение тасков, и теперь управление получил LED-таск.

amc emulator что это

Таким нехитрым способом можно установить, как таски RTOS взаимодействуют друг с другом.

Конечно, в действительности взаимодействие тасков может быть устроено сложнее, но с использованием эмулятора отслеживать это взаимодействие становится менее трудоемко.

Тут можно посмотреть небольшое видео запуска эмулятора и взаимодействия с IDA Pro.

Запуск с Radare2

Нельзя обойти стороной такой универсальный инструмент как Radare2.

Для подключения к эмулятору с использованием r2 команда будет выглядеть так:

Сейчас доступны запуск ( dc ) и приостановка выполнения (Ctrl+C).

К сожалению, на данный момент в r2 есть проблемы при работе с хардварным gdb-сервером и разметкой памяти, из-за этого не работают точки останова и Step’ы (команда ds ). Надеемся, в ближайшее время это будет исправлено.

Запуск с Eclipse

Один из вариантов использования эмулятора — отладка прошивки разрабатываемого устройства. Для наглядности будем также использовать прошивку «Носорога». Скачать исходники прошивки можно отсюда.

В качестве IDE будем использовать Eclipse из набора System Workbench for STM32.

Для того, чтобы в эмулятор загружалась прошивка непосредственно собранная в Eclipse, необходимо добавить параметр firmware=null в команду запуска эмулятора:

Настройка debug-конфигурации

В Eclipse выбираем меню Run — Debug Configurations. В открывшемся окне в разделе GDB Hardware Debugging необходимо добавить новую конфигурацию, после чего на вкладке «Main» указать текущий проект и приложение для отладки:

amc emulator что это

На вкладке «Debugger» необходимо указать GDB-команду:
$\arm-none-eabi-gdb

А также ввести параметры для подключения к GDB-серверу (хост и порт):

amc emulator что это

На вкладке «Startup» необходимо указать следующие параметры:

Обратите внимание, если вы не хотите загружать файл прошивки из Eclipse, то параметры Load image и Run commands указывать не нужно.

amc emulator что это

После нажатия Debug можно работать в режиме отладчика:

Примечание. В Eclipse есть, хмм… некоторые особенности… и с ними приходится жить. Вот, например, если при запуске отладчика появится сообщение «No source available for «0x0″», то выполните команду Step (F5)

amc emulator что это

Вместо заключения

Эмуляция нативного кода — дело весьма интересное. Для разработчика устройств появляется возможность отлаживать прошивку без реального устройства. Для исследователя — возможность проводить динамический анализ кода, что не всегда возможно даже при наличии устройства.

Мы хотим предоставить специалистам инструмент, который был бы удобен, в меру прост и не отнимал много сил и времени на свою настройку и запуск.

Напишите в комментариях о своём опыте использования аппаратных эмуляторов. Приглашаем к обсуждению и будем рады ответить на вопросы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *