Что такое эмуляция вызова в телефоне нокиа

Что эмуляция вызова телефоне нокиа. Что такое эмуляция? Программа эмуляции. Эмуляция вызова — что это? Смотреть что такое «Эмуляция» в других словарях

Около полугода назад мне задали примерно такой вопрос: “Я использую крупный фреймворк, запускающий некую функцию по действию пользователя. Хочу, не меняя кода этой функции, выполнить по событию вызова этой функции свой код.”. Практика далеко не лучшая, события вызова функции не существует, я просто покрутил пальцем у виска и сказал, что это жуткий говнокод, так делать не стоит, да и это, просто-напросто, — невозможно.

Пару дней назад, направляясь домой относительно тёплым зимним вечером, не типичным для Одессы, у меня возникла нетипичная мысль: “А что если попробовать сделать то, что спрашивал Богдан полгода назад?”. Придя домой, я включил компьютер, и, в течении пары минут, сделал то, что задумал. В первую очередь, меня интересовало то, как будут себя вести встроенные методы, если их переопределить, и можно ли после этого как-нибудь вызвать прежнее их состояние, бывшее до переопределения. Я знал, что, если объект переопределяют, то ссылки на него не уничтожатся, сохраняя прежний вид. Что касается встроенных функций, имелись сомнения. Оказывается, можно.

Скорее всего, мне даже никогда не придется воспользоваться таким инструментом, но, чисто гипотетически, возможно, у кого-то возникнет задача проследить вызов той или иной функции, получив отчет о каждом вызове, состоящий из:

  1. Результата выполнения
  2. Переданных аргументов
  3. Контекста вызова (что есть this при вызове)
  4. Количества вызовов функции после создания обработчика

Очень просто и кратко, правда?

Затем, переопределяем какую-нибудь функцию следующим образом:

SomeFunct = addCallListener(someFunct, function(result, args, self, callNumber)); // или Constructor.prototype.method = addCallListener(Constructor.prototype.method, function(result, args, self, callNumber));

Очевидно, она должна быть «видна» в той части кода, где это происходит.

Несколько примеров

Спасибо товарищам с форума javascript.ru за критику и дополнения.

UPD
Немного расширил функцию: теперь вместо одного колбека вторым аргументом передается объект

  1. before (вызывается перед запуском функции)
  2. success (вызывается, если функция отработала успешно)
  3. error (если возникла ошибка)
  4. after (вызывается в любом случае, не зависимо от успешности выполнения)
  1. self (контекст)
  2. name (имя функции)
  3. status («error» или «success»)
  4. successNumber (количество успешных вызовов)
  5. errorNumber (количество вызовов с ошибкой)
  6. result (результат, если есть)
  7. error (ошибка, если есть)

Форкнуть и потестить можно здесь.

  • Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.
  • Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
  • Тестирование программ, написанных для различных систем.

Аппаратная и программно-аппаратная эмуляция

В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы .

Программная эмуляция

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

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

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

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64 , ZX Spectrum , программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены . Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.

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

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

  • эмулятора или симулятора центрального процессора ;
  • модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ ;
  • модуля или модулей эмуляции различных устройств ввода-вывода .

Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.

См. также

Примечания

Литература

  • А. Аганичев, Д. Панфилов, М. Плавич, О. Полянский. Программно-аппаратный комплекс для отладки МП систем на основе микроконтроллеров семейства MC68HC11 фирмы MOTOROLA
  • Шагурин И., Бродин В., Калинин Л., Толстов Ю., Петров С., Исенин И., Эйдельман С., Ванюлин В. Средства проектирования и отладки систем управления на базе МК фирмы Motorola.

Ссылки

Wikimedia Foundation . 2010 .

  • Андрей
  • Геофизика

Смотреть что такое «Эмуляция» в других словарях:

Эмуляция — имитация работы одной системы средствами другой без потери функциональных возможностей и искажений результатов. Эмуляция выполняется программными и/или аппаратными средствами. См. также: Исполнение программ Финансовый словарь Финам … Финансовый словарь

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

ЭМУЛЯЦИЯ — [англ. emulation соревнование, соперничество] соперничество, конкуренция, желание перещеголять кого л. Словарь иностранных слов. Комлев Н.Г., 2006 … Словарь иностранных слов русского языка

эмуляция — сущ., кол во синонимов: 3 конкуренция (8) подражание (25) соперничество (21) … Словарь синонимов

эмуляция — и, ж. émulation f. См. Эмюляция … Исторический словарь галлицизмов русского языка

эмуляция — emuliacija statusas T sritis automatika atitikmenys: angl. emulation vok. Emulation, f rus. эмуляция, f pranc. émulation, f … Automatikos terminų žodynas

Эмуляция — 53. Эмуляция Emulation Имитация функционирования одного устройства посредством другого устройства или устройств вычислительной машины, при которой имитирующее устройство воспринимает те же данные, выполняет ту же программу и достигает того же… … Словарь-справочник терминов нормативно-технической документации

эмуляция — ж. Желание превзойти в чём либо друг друга; соперничество. Толковый словарь Ефремовой. Т. Ф. Ефремова. 2000 … Современный толковый словарь русского языка Ефремовой

эмуляция — эмул яция, и … Русский орфографический словарь

Так что же такое эмулятор и для чего он нам нужен? Бывают ситуации, когда мы загружаем сотни программ или тем оформления для своего телефона, но хотим из них выбрать именно те, которые будут наиболее приятны нам. Именно в таких случаях для проверки приложений (тем оформления) эмулятор телефонов Nokia , построенных на платформе S40, нам и будет остро необходим.

Говоря простым языком, эмулятор — это то же самое, что и интерфейс нашего телефона, только отображенный на компьютере. Программа дает возможность проверить , не загружая их на телефон. К тому же, он позволяет увидеть swf, начиная с версии 1.1. и выше, которые не видит сама программа для создания тем оформления Nokia S40 ThemeStudio_2.2 (S40 3rd edition).

Чтобы полноценно работал эмулятор на компьютере, нужно скачать программу jre-1_5_0_16-windows-i586-p, которая находится .

Рассмотрим подробно, что мы сможем увидеть и проверить, непосредственно работая с эмулятором. Открыв тему оформления в программе, мы сможем подробно увидеть все элементы интерфейса телефона в новом оформлении. Эмулятор позволяет увидеть не только главный (основной) дисплей, но также подробно рассмотреть все вкладки и элементы оформления.

Для того чтобы загрузить нужную вам тему оформления в эмулятор, нажмите на главной панели программы на вкладку File и из выпавшего меню выберите вкладку Open .

Примечание . Не забывайте, что для корректной работы эмулятора название темы для Nokia должно быть на латинице или задано цифрами.

Эмулятор можно найти на forum.nokia , где вам нужно будет только выбрать нужную версию. Например, для новых телефонов Nokia выбираем Series 40 5th Edition SDK (47МВ).

Примечание : Перед тем, как загружать дополнительные компоненты, проверьте, на какой именно версии платформы S40 построен ваш телефон Nokia.

Регистрация программы происходит так же, как и регистрация программы Nokia S40 ThemeStudio_2.2 (S40 3rd edition). Как это делается, можно прочитать в статье

  • Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.
  • Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
  • Тестирование программ, написанных для различных систем.

Аппаратная и программно-аппаратная эмуляция

В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы .

Программная эмуляция

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

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

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

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64 , ZX Spectrum , программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены . Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.

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

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

  • эмулятора или симулятора центрального процессора ;
  • модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ ;
  • модуля или модулей эмуляции различных устройств ввода-вывода .

Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.

См. также

Примечания

Литература

  • А. Аганичев, Д. Панфилов, М. Плавич, О. Полянский. Программно-аппаратный комплекс для отладки МП систем на основе микроконтроллеров семейства MC68HC11 фирмы MOTOROLA
  • Шагурин И., Бродин В., Калинин Л., Толстов Ю., Петров С., Исенин И., Эйдельман С., Ванюлин В. Средства проектирования и отладки систем управления на базе МК фирмы Motorola.

Ссылки

Wikimedia Foundation . 2010 .

Смотреть что такое «Эмуляция» в других словарях:

Имитация работы одной системы средствами другой без потери функциональных возможностей и искажений результатов. Эмуляция выполняется программными и/или аппаратными средствами. См. также: Исполнение программ Финансовый словарь Финам … Финансовый словарь

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

— [англ. emulation соревнование, соперничество] соперничество, конкуренция, желание перещеголять кого л. Словарь иностранных слов. Комлев Н.Г., 2006 … Словарь иностранных слов русского языка

Сущ., кол во синонимов: 3 конкуренция (8) подражание (25) соперничество (21) … Словарь синонимов

эмуляция — и, ж. émulation f. См. Эмюляция … Исторический словарь галлицизмов русского языка

эмуляция — emuliacija statusas T sritis automatika atitikmenys: angl. emulation vok. Emulation, f rus. эмуляция, f pranc. émulation, f … Automatikos terminų žodynas

Эмуляция — 53. Эмуляция Emulation Имитация функционирования одного устройства посредством другого устройства или устройств вычислительной машины, при которой имитирующее устройство воспринимает те же данные, выполняет ту же программу и достигает того же… … Словарь-справочник терминов нормативно-технической документации

Ж. Желание превзойти в чём либо друг друга; соперничество. Толковый словарь Ефремовой. Т. Ф. Ефремова. 2000 … Современный толковый словарь русского языка Ефремовой

эмуляция — эмул яция, и … Русский орфографический словарь

Владельцы патента RU 2514141:

Изобретение относится к антивирусным решениям, а более конкретно к способам эмуляции вызовов системных функций для обхода средств противодействия эмуляции.

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

Одним из методов исследования потенциально вредоносной программы является использование эмулятора, который применяется в антивирусном приложении при анализе поведения приложения. Существуют различные способы эмуляции. Одним из них является программная имитация процессора, памяти и других устройств путем создания виртуальных копий регистров процессора, памяти и набора инструкций процессора. Таким образом, инструкции программы исполняются не на реальном процессоре, а на его виртуальной копии, а вызовы системных API-функций эмулируют и отправляют в ответ проэмулированный результат работы функции.

Для противодействия эмуляции программного кода создатели вредоносных программ используют различные уловки, которые могут базироваться на ограничениях, связанных с процессом эмуляции и реализацией эмулятора в антивирусных решениях. Один из таких подходов заключается в том, чтобы добавить в код программы большое количество инструкций, которые не несут вредоносной составляющей, однако требуют времени для эмуляции. Учитывая тот факт, что время, отведенное на эмуляцию программного кода, является ограниченным, чтобы не вызывать недовольство пользователя (как правило, это время может составлять несколько секунд), то процесс эмуляции может остановиться до начала выполнения по-настоящему вредоносного кода. Один из методов борьбы с таким подходом противодействия эмуляции описан в патенте US7603713, способ работы которого включает выполнение ряда инструкций на реальном процессоре, что существенно ускоряет процесс эмуляции неизвестных приложений для того, чтобы можно было добраться до самого вредоносного кода. Другой подход, раскрытый в заявке US20110225655, рассматривает вариант определения приложения как подозрительного, если оно противодействует эмуляции. Подобный подход основан на том, что безопасное (легитимное) приложение, как правило, показывает предупреждение о невозможности выполнения в эмуляторе, вредоносное спокойно завершает выполнение или резко меняет вектор (логику) выполнения.

Другой способ противодействия эмуляции основан на определении того факта, что приложение на данный момент запущено именно в эмуляторе, а не в реальной операционной системе. Стоит отметить, что эмулятор создает виртуальную копию процессора, компонентов компьютера и операционной системы (ОС) лишь в ограниченном объеме с усеченными возможностями, так как полное воссоздание всех возможностей того же процессора или системных API-функций невозможно по ряду причин: большие трудозатраты на подобную разработку, наличие недокументированных функций, большое падение производительности при работе подобного эмулятора. Таким образом, создатели вредоносных программ могут прибегать к следующим приемам, которые позволяют обнаружить факт выполнения в эмулируемой среде:

Вызов недокументированной или редко используемой API-функции.

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

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

Поиск в памяти определенных байт. Например, побайтовый поиск заголовка MZ в памяти после загрузки kernel32.dll при старте процесса. В ОС Vista 64 для kernel32.dll используется 64Кб выравнивание, и область между заголовком и первой секцией не будет отображена в адресное пространство процесса, и при попытке доступа к ней произойдет исключение. Если исключение не было зарегистрировано, то будет вызван стандартный обработчик исключений ОС, который завершит процесс.

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

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

Технический результат настоящего изобретения заключается в обеспечении возможности эмуляции вызовов системных функций.

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

Согласно одному из частных вариантов реализации условием требования эмуляции вызовов системных функций является быстрое завершение эмуляции исполняемого файла.

Согласно другому частному варианту реализации условием требования эмуляции вызовов системных функций является отсутствие ограничения на время эмуляции.

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

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

Согласно другому частному варианту реализации низкоуровневым вызовом является инструкция на языке ассемблера.

Согласно еще одному из частных вариантов реализации низкоуровневым вызовом является последовательный вызов всех связанных системных функций.

Согласно одному из частных вариантов реализации заканчивают эмуляцию вызова системной функции при переходе в режим ядра.

Краткое описание чертежей

Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:

Фиг.1 иллюстрирует пример работы классического эмулятора при обработке вызов API-функции.

Фиг.2 показывает пример выполнения API-функции в операционной среде Windows.

Фиг.3 иллюстрирует способ эмуляции вызовов API-функций в рамках настоящего изобретения.

Фиг.4 показывает систему, в рамках которой может быть реализовано настоящее изобретение.

Фиг.5 иллюстрирует способ реализации настоящего изобретения.

Фиг.6 представляет пример компьютерной системы общего назначения, на которой может быть реализовано настоящее изобретение.

Описание вариантов осуществления изобретения

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

Фиг.1 иллюстрирует пример работы классического эмулятора при обработке вызов API-функции. Когда при работе приложения в реальной ОС происходит вызов API-функции, ОС производит большое количество действий, что связано со сложной внутренней архитектурой ОС. Схематически вызов API-функции приводит к выполнению большого количества инструкций на процессоре, после чего приложению возвращается результат работы вызванной API-функции. При работе эмулятора вызов API-функции не приводит к такому же выполнению ряда инструкции, что и в реальной ОС, а вместо этого приложению возвращается сэмулированный результат работы API функции. Например, при попытке создать файл эмулятор вернет указатель на виртуальный файл. Однако несмотря на общий результат работы (например, возврат указателя на файл) результат работы вызванной API-функции может отличаться в ОС и эмуляторе, что связано с тем, что при вызове API-функции могут быть изменены, например, некоторые из регистров процессора, что не будет отражено при работе эмулятора. Данное расхождение может быть использовано для противодействия эмуляции и в первую очередь — вредоносными программами.

Фиг.2 показывает пример выполнения API-функции в операционной системе Windows. В качестве примера API-функции была выбрана WriteFile. На этапе 210 Windows приложение (например, Microsoft Word или Notepad) пытается записать данные в файл путем вызова соответствующей Win32 API функции WriteFile в Kernel32.dll. Затем на этапе 220 происходит вызов NtWriteFile в Ntdll.dll (т.е. происходит последовательный вызов всех связанных системных функций), что в свою очередь приводит к вызову системного прерывания на этапе 230 и поиску соответствующего обработчика (что делает функция KiSystemService в Ntoskrnl.dll) при вызове NtWriteFile. Отметим, что данный процесс происходит в режиме пользователя, а после вызова прерывания происходит переход в режим ядра. На этапе 240 происходит вызов NtWriteFile уже непосредственно в Ntoskrnl.dll и непосредственно выполнение записи в файл на этапе 250 (здесь также скрыты детали, связанные с работой драйвера файловой системы). Исходя из этого становится понятно, что при вызове даже одной API функции в современных ОС происходит большое количество операций (т.е. более низкоуровневых событий в рамках рассмотрения самой структуры ОС), в том числе и переход выполнения приложения из режима пользователя в режим ядра. При рассмотрении этих операций с точки зрения исполнения инструкций на языке ассемблера становится ясно, что корректно проэмулировать вызов API-функции очень тяжело ввиду необходимости учета состояния всех регистров процессора и состояния всех внутренних структур ОС.

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

Фиг.3 иллюстрирует способ эмуляции вызовов API-функций в рамках настоящего изобретения. На этапе 310 происходит классическая эмуляция приложения, как, например, в случае эмуляции приложения Notepad (приведен небольшой фрагмент кода приложения при его отладке в отладчике OllyDbg):

Такие инструкции, как MOV, PUSH, SUB, LEA и подобные будут эмулироваться как есть, т.е. путем эмуляции ассемблерных инструкций с помощью виртуального процессора в эмуляторе. Как только происходит вызов API функции (что определяется на этапе 320), такой как

то эмуляция подобного вызова будет происходить по машинным инструкциям (этап 330) с учетом всех вложенных вызовов, как представлено, например, на Фиг.2. При достижении перехода в режим ядра при выполнении API-функции, что будет проверено на этапе 340, эмуляция будет переведена в стандартный (обычный, классический) режим, т.е. дальнейшие вызовы не будут обработаны последовательно по каждой инструкции, а лишь будет возвращен результат вызова функции. После этого способ возвращается с этапа 350 на этап 310 для дальнейшей эмуляции.

Фиг.4 показывает систему, в рамках которой может быть реализовано настоящее изобретение. Допустим, на компьютере пользователя имеется неизвестный исполняемый файл 410, который следует проэмулировать для определения факта его возможной вредоносности. Следует уточнить, что под исполняемым файлом следует понимать не только исполняемые файлы, имеющие РЕ или ELF формат, но также и другие файлы, содержащие различный код, такие как файлы.class или.jar (для выполнения в виртуальной машине Java), различные файлы сценариев, такие как.vbs и многие другие. Сам файл 410 содержит инструкции 420, последовательная эмуляция которых воспроизводит выполнение файла 410. Отметим, что последовательная эмуляция подразумевает в том числе и выполнение всех переходов как условных, так и безусловных, а также вызов различных функций внутри исполняемого файла 410. При последовательной эмуляции каждая инструкция 420 попадает на вход модуля разбора инструкций 430 внутри эмулятора 405, при этом данный модуль определяет, является ли инструкция вызовом системной API-функции и в случае положительного ответа эмулятор 405 производит эмуляцию вызова данной функции (отображено как 450) в виде цепочки более низкоуровневых событий, таких какие показаны, например, на Фиг.2 (т.е. этапы 210-230 на Фиг.2 до перехода в режим ядра). В противном случае эмулятор 405 эмулирует ее исполнение в рамках классической эмуляции (отображено как 440), т.е. возвращает проэмулированный результат работы функции (т.е. без эмуляции всех этапов отмеченных на Фиг.2). В некоторых случаях инструкция вызова API-функции может быть проэмулирована, так же, как это бы сделано в случае классической эмуляции 440. Например, функция URLDownloadToFile в низкоуровневом представлении содержит сложную цепочку обращений к драйверу TCP/IP, и последовательная эмуляция подобной цепочки может быть нецелесообразна. В одном из вариантов реализации целесообразность использования эмуляции системных вызовов определяет модуль разбора инструкций 430, например, на основании известной информации о скорости проведения эмуляции тех или иных вызовов.

Фиг.5 иллюстрирует способ реализации настоящего изобретения. На этапе 510 происходит попытка эмуляции исполняемого файла 410 на компьютере пользователя. На этапе 520 проверяется, требуется ли выполнение эмуляции системных API-функций.

Требования для эмуляции системных функций:

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

Требуется провести более глубокую эмуляцию исполняемого файла 410. Это происходит в том случае, если исполняемый файл 410 не встречался ранее, что означает отсутствие информации по неизвестному файлу со стороны антивирусного приложения, в рамках которого работает эмулятор (т.е. не классифицирован и не находится в базах антивирусного приложения как вредоносное или безопасное приложение).

Классическим эмулятором обнаружены методы противодействия эмуляции, такие как: вызовы API-функций с заведомо неверными параметрами с последующей проверкой статуса (кода) ошибки, проверка волатильных регистров после вызова API-функций, сканирование содержимого системных модулей, попытки обнаружить в системе отладчик, а также вызовы стандартных методов обнаружения исполнения под виртуальной машиной (RedPill).

Обнаружение применения приемов самораспаковки или самозащиты (пакеры и протекторы).

Необходимость эмуляции потенциально вредоносного приложения в составе ОС пользователя со всеми присутствующими библиотеками и интерпретаторами (например, .NET или Java). Также предложенный способ эмуляции позволяет производить эмуляцию пакетных и управляющих файлов, таких как пакетный файл (batch file) с расширением.bat или.cmd, powershell-сценариев, reg-файлов для внесения данных в реестр и других типов файлов, запуск которых приводит к исполнению кода на компьютере пользователя.

Время на эмуляцию не ограничено жесткими рамками, например может составлять десятки секунд или даже нескольких минут и более, что характерно при первом анализе приложения.

Выполнение хотя бы одного из подобных требований приводит к эмуляции системных вызовов 450 на этапе 530 для эмуляции API-функций по машинным инструкциям, как это показано на Фиг.4. В ином случае на этапе 540 происходит использование лишь классической эмуляции 440. Использование подобных требований позволяет более гибко подходить к процессу эмуляции в рамках антивирусного приложения, не вызывая недовольства пользователя, что связано с дополнительной нагрузкой из-за необходимости эмулировать API-функции по машинным инструкциям.

Фиг.6 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.

Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.

Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш-карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.

Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47 персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.

Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг.6. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.

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

1. Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции, в котором:
а) получают исполняемый файл на вход эмулятора;
б) проверяют условия требования эмуляции вызовов системных функций;
в) при выполнении хотя бы одного вышеприведенного условия используют эмуляцию системных вызовов;
г) эмулируют выполнение исполняемого файла согласно последовательному выполнению инструкций;
д) при обнаружении вызова системной функции переключают процесс эмуляции на эмуляцию системных вызовов;
е) производят эмуляцию вызова системной функции в виде цепочки низкоуровневых вызовов.

2. Способ по п.1, в котором условием требования эмуляции вызовов системных функций является быстрое завершение эмуляции исполняемого файла.

3. Способ по п.1, в котором условием требования эмуляции вызовов системных функций является отсутствие ограничения на время эмуляции.

4. Способ по п.1, в котором условием требования эмуляции вызовов системных функций является отсутствие информации по неизвестному файла со стороны антивирусного приложения.

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

6. Способ по п.1, в котором низкоуровневым вызовом является инструкция на языке ассемблера.

7. Способ по п.1, в котором низкоуровневым вызовом является последовательный вызов всех связанных системных функций.

8. Способ по п.1, в котором заканчивают эмуляцию вызова системной функции при переходе в режим ядра.

Похожие патенты:

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

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

Изобретение относится к области автоматической настройки средств безопасности во время исполнения прикладных программ. Техническим результатом является сокращение потребляемых средством безопасности вычислительных ресурсов во время исполнения прикладной программы без потери качества обеспечения безопасности.

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

Изобретение касается системы, предназначенной для управления правами доступа пользователя к информации, связанной с полетом и безопасностью летательного аппарата. Технический результат заключается в обеспечении идентификации пользователей, получавших доступ к указанной информации. Предложены система управления правами доступа к бортовым прикладным программам и данным и способ, применяемый этой системой, а также летательный аппарат, содержащий эту систему. Система управления правами доступа к бортовой информации пользователя, находящегося на борту летательного аппарата, содержит, по меньшей мере, одно устройство (10) идентификации, выполненное с возможностью считывания информации о личности пользователя, содержащейся в его персональной карточке, и бортовой вычислитель (1), содержащий средства (11) управления правами доступа, выполненные с возможностью аутентификации пользователя и определения прав доступа к бортовой информации в зависимости от личности пользователя. 3 н. и 7 з.п. ф-лы, 2 ил.

Изобретение относится к устройству и способу обработки информации и носителю записи с программой для управления устройством обработки информации. Технический результат заключается в повышении быстродействия обработки данных. Устройство выполнено с возможностью считывать программу приложения с носителя записи, на котором записаны программа приложения, служащая в качестве контента, первый корневой сертификат, выпущенный к программе приложения, и второй корневой сертификат, выпущенный до выпуска первого корневого сертификата к программе приложения, и выполнять программу приложения, при этом устройство обработки информации содержит: средство формирования для формирования в запоминающем устройстве первой папки для хранения данных, подлежащих обработке программой приложения, причем первая папка связана с первым корневым сертификатом; и средство копирования для копирования в первую папку данных, содержащихся во второй папке, причем вторая папка связана со вторым корневым сертификатом в случае, когда вторая папка имеется в запоминающем устройстве. 3 н. и 7 з.п. ф-лы, 19 ил.

Изобретение относится к распространению криптографического секретного ключа между передающей и принимающей сторонами. Технический результат заключается в возможности автоматического регулирования защиты и времени ожидания генерации криптографического секретного ключа за счет установки числа итераций, на основании которого управляют числом сообщений, обмен которыми должен быть выполнен в течение генерации криптографического секретного ключа. Устройство для приема и передачи данных защищенным образом содержит контроллер генерации ключа и блок предоставления числа итераций. 4 н. и 7 з.п. ф-лы, 17 ил.

Изобретение относится к устройству для отправки изображений, требующему аутентификации для использования данного устройства и обеспечиваемой в нем функции. Техническим результатом является обеспечение возможности установки наследования информации аутентификации для отправки изображений и отображения экрана для ввода информации аутентификации в соответствии со способом установки пункта назначения. Для этого в устройстве для отправки изображений выполняют обработку для первой аутентификации для аутентификации пользователя, сохраняют информацию аутентификации, используемую в случае, когда выполняется обработка для первой аутентификации, и устанавливают пункт назначения, к которому средство отправки отправляет данные изображения, посредством множества видов способов установки пункта назначения. Затем выполняют обработку для второй аутентификации, требуемой для средства отправки для отправки данных изображения к установленному пункту назначения, и определяют, использовать ли информацию аутентификации, сохраненную в средстве хранения информации, когда выполняется обработка для второй аутентификации, на основе способа установки пункта назначения. 3 н. и 5 з.п. ф-лы, 17 ил.

Изобретение относится к беспроводной связи, а именно к способу для безопасной передачи клиента управления доступом. Техническим результатом является повышение безопасности. Способ содержит запрос пользовательского клиента управления доступом из беспроводной сети, при этом запрос связан с первым подтверждающим сертификатом; прием пользовательского клиента управления доступом и второго подтверждающего сертификата, при этом первый и второй подтверждающий сертификаты выданы доверенной структурой; и сохранение пользовательского клиента управления доступом в безопасном элементе, если второй подтверждающий сертификат действителен; причем пользовательский клиент управления доступом сохраняют в индивидуальном сегменте из числа множества сегментов, из которых состоит безопасный элемент, и последующие модификации сохраненного пользовательского клиента управления доступом могут быть выполнены только с использованием второго подтверждающего сертификата; а доступ к беспроводной сети ограничен (i) доступом посредством пользовательского клиента управления доступом и (ii) запросами пользовательских клиентов управления доступом. 3 н. и 19 з.п. ф-лы, 8 ил.

Изобретение относится к вычислительной технике и электросвязи, предназначено для решения задач защиты компьютерной информации. Техническим результатом изобретения является повышение быстродействия за счет увеличения степени параллелизма. Способ выполнения трех раундов преобразования осуществляется вдоль осей х, у, z. В первом раунде выполняют N двухмерных преобразований замены слоев L x0, L x1, . L x(N-1) ; во втором раунде выполняют N двухмерных преобразований замены слоев L y0 , L y1 , . Ly (N-1); в третьем раунде выполняют N двухмерных преобразований замены слоев L z0, L z1, . L z(N-1) . 5 ил., 1 табл.

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

Изобретение относится к средствам обеспечения безопасности электронных сетевых транзакций. Техническим результатом является повышение безопасности электронных транзакций через Интернет. Выполняют процедуру усиленной (многофакторной) аутентификации клиентов и серверов, процедуры хеширования, подписывания электронной подписью и проверки электронной подписи клиентов и серверов. Выполняют процесс сканирования программной среды клиентов, после чего принимают решения о критичности или не критичности обнаруженных у клиентов системы уязвимостей программной среды. В процессе взаимодействия участников производят архивирование копий решений клиентов и серверов, подписанных их электронными подписями, о продолжении или закрытии сеансов работы клиентов с серверами. 2 н. и 6 з.п. ф-лы, 1 ил.

Изобретение относится к способу и устройству выполнения криптографического преобразования в электронном компоненте. Технический результат заключается в повышении безопасности установки соединений с аутентификацией пароля за счет повышения эффективности выполнения криптографического преобразования. В способе выполняют получение точки P(X,Y) исходя из параметра t на эллиптической кривой, удовлетворяющей выражению Y2=f(X), и исходя из многочленов X1(t), X2(t), Х3(t) и U(t), удовлетворяющих равенству f(X1(t)).f(X2(t)).f(X3(t))=U(t)2 в Fq, при этом q=3 mod 4, далее получают значение параметра t и определяют точку Р путем выполнения подэтапов, на которых (i) вычисляют Х1=X1(t), X2=X2(t), Х3=Х3(t) и U=U(t), (ii) если элемент f(X1).f(X2) является квадратом, то проверяют, является ли элемент f(X3) квадратом в Fq, и если является, то вычисляют квадратный корень из элемента f(X3), чтобы получить точку Р(Х3), (iii) иначе проверяют, является ли элемент f(X1) квадратом, и если является, вычисляют квадратный корень из f(X1), чтобы получить точку P(X1), (iv) иначе вычисляют квадратный корень элемента f(X2), чтобы получить точку P(X2), и далее эту точку Р используют в криптографическом приложении. 2 н. и 6 з.п. ф-лы, 3 ил.

Группа изобретений относится к средствам контроля по меньшей мере одного процесса, происходящего в системе, связанной с безопасностью. Технический результат заключается в обеспечении возможности гибкой и обобщенной сертификации связанных с безопасностью систем. Для этого предложен способ контроля связанной с безопасностью системы посредством устройства контроля, обеспеченного для контроля связанной с безопасностью системы, в котором осуществляется: выбор первого процесса из множества процессов, исполняемых на устройстве контроля, формирование вызова первым процессом; передачу вызова к устройству, формирующему по меньшей мере часть связанной с безопасностью системы; выбор второго процесса из множества процессов, исполняемых на связанной с безопасностью системе; вычисление, посредством второго процесса, результата обработки путем применения по меньшей мере одной предварительно определенной функции к вызову; передача, вторым процессом, результата обработки в первый процесс; проверку, первым процессом, результата обработки, вычисленного вторым процессом, с результатом обработки, вычисленным первым процессом, причем результат обработки, вычисленный первым процессом, применяет ту же самую по меньшей мере одну предопределенную функцию; и оценивание связанной с безопасностью системы как находящейся в безопасном состоянии, если результат обработки, вычисленный первым процессом, и результат обработки, вычисленный вторым процессом, согласуются. 3 н. и 8 з.п. ф-лы, 2 ил.

Изобретение относится к способам эмуляции вызовов системных функций для обхода средств противодействия эмуляции. Технический результат заключается в обеспечении возможности эмуляции вызовов системных функций. Результат достигается с помощью способа эмуляции вызовов системных функций для обхода средств противодействия эмуляции, при этом способ включает следующие этапы: получают исполняемый файл на вход эмулятора; проверяют условия требования эмуляции вызовов системных функций; при выполнении хотя бы одного вышеприведенного условия используют эмуляцию системных вызовов; эмулируют выполнение исполняемого файла согласно последовательному выполнению инструкций; при обнаружении вызова системной функции переключают процесс эмуляции на эмуляцию системных вызовов; производят эмуляцию вызова системной функции в виде цепочки низкоуровневых вызовов. 7 з.п. ф-лы, 6 ил., 1 табл.

Что эмуляция вызова телефоне нокиа. Что такое эмуляция? Программа эмуляции

Около полугода назад мне задали примерно такой вопрос: “Я использую крупный фреймворк, запускающий некую функцию по действию пользователя. Хочу, не меняя кода этой функции, выполнить по событию вызова этой функции свой код.”. Практика далеко не лучшая, события вызова функции не существует, я просто покрутил пальцем у виска и сказал, что это жуткий говнокод, так делать не стоит, да и это, просто-напросто, — невозможно.

Пару дней назад, направляясь домой относительно тёплым зимним вечером, не типичным для Одессы, у меня возникла нетипичная мысль: “А что если попробовать сделать то, что спрашивал Богдан полгода назад?”. Придя домой, я включил компьютер, и, в течении пары минут, сделал то, что задумал. В первую очередь, меня интересовало то, как будут себя вести встроенные методы, если их переопределить, и можно ли после этого как-нибудь вызвать прежнее их состояние, бывшее до переопределения. Я знал, что, если объект переопределяют, то ссылки на него не уничтожатся, сохраняя прежний вид. Что касается встроенных функций, имелись сомнения. Оказывается, можно.

Скорее всего, мне даже никогда не придется воспользоваться таким инструментом, но, чисто гипотетически, возможно, у кого-то возникнет задача проследить вызов той или иной функции, получив отчет о каждом вызове, состоящий из:

  1. Результата выполнения
  2. Переданных аргументов
  3. Контекста вызова (что есть this при вызове)
  4. Количества вызовов функции после создания обработчика

Очень просто и кратко, правда?

Затем, переопределяем какую-нибудь функцию следующим образом:

SomeFunct = addCallListener(someFunct, function(result, args, self, callNumber)); // или Constructor.prototype.method = addCallListener(Constructor.prototype.method, function(result, args, self, callNumber));

Очевидно, она должна быть «видна» в той части кода, где это происходит.

Несколько примеров

Спасибо товарищам с форума javascript.ru за критику и дополнения.

UPD
Немного расширил функцию: теперь вместо одного колбека вторым аргументом передается объект

  1. before (вызывается перед запуском функции)
  2. success (вызывается, если функция отработала успешно)
  3. error (если возникла ошибка)
  4. after (вызывается в любом случае, не зависимо от успешности выполнения)
  1. self (контекст)
  2. name (имя функции)
  3. status («error» или «success»)
  4. successNumber (количество успешных вызовов)
  5. errorNumber (количество вызовов с ошибкой)
  6. result (результат, если есть)
  7. error (ошибка, если есть)

Форкнуть и потестить можно здесь.

Так что же такое эмулятор и для чего он нам нужен? Бывают ситуации, когда мы загружаем сотни программ или тем оформления для своего телефона, но хотим из них выбрать именно те, которые будут наиболее приятны нам. Именно в таких случаях для проверки приложений (тем оформления) эмулятор телефонов Nokia , построенных на платформе S40, нам и будет остро необходим.

Говоря простым языком, эмулятор — это то же самое, что и интерфейс нашего телефона, только отображенный на компьютере. Программа дает возможность проверить , не загружая их на телефон. К тому же, он позволяет увидеть swf, начиная с версии 1.1. и выше, которые не видит сама программа для создания тем оформления Nokia S40 ThemeStudio_2.2 (S40 3rd edition).

Чтобы полноценно работал эмулятор на компьютере, нужно скачать программу jre-1_5_0_16-windows-i586-p, которая находится .

Рассмотрим подробно, что мы сможем увидеть и проверить, непосредственно работая с эмулятором. Открыв тему оформления в программе, мы сможем подробно увидеть все элементы интерфейса телефона в новом оформлении. Эмулятор позволяет увидеть не только главный (основной) дисплей, но также подробно рассмотреть все вкладки и элементы оформления.

Для того чтобы загрузить нужную вам тему оформления в эмулятор, нажмите на главной панели программы на вкладку File и из выпавшего меню выберите вкладку Open .

Примечание . Не забывайте, что для корректной работы эмулятора название темы для Nokia должно быть на латинице или задано цифрами.

Эмулятор можно найти на forum.nokia , где вам нужно будет только выбрать нужную версию. Например, для новых телефонов Nokia выбираем Series 40 5th Edition SDK (47МВ).

Примечание : Перед тем, как загружать дополнительные компоненты, проверьте, на какой именно версии платформы S40 построен ваш телефон Nokia.

Регистрация программы происходит так же, как и регистрация программы Nokia S40 ThemeStudio_2.2 (S40 3rd edition). Как это делается, можно прочитать в статье

  • Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.
  • Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
  • Тестирование программ, написанных для различных систем.

Аппаратная и программно-аппаратная эмуляция

В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы .

Программная эмуляция

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

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

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

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64 , ZX Spectrum , программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены . Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.

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

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

  • эмулятора или симулятора центрального процессора ;
  • модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ ;
  • модуля или модулей эмуляции различных устройств ввода-вывода .

Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.

См. также

Примечания

Литература

  • А. Аганичев, Д. Панфилов, М. Плавич, О. Полянский. Программно-аппаратный комплекс для отладки МП систем на основе микроконтроллеров семейства MC68HC11 фирмы MOTOROLA
  • Шагурин И., Бродин В., Калинин Л., Толстов Ю., Петров С., Исенин И., Эйдельман С., Ванюлин В. Средства проектирования и отладки систем управления на базе МК фирмы Motorola.

Ссылки

Wikimedia Foundation . 2010 .

Смотреть что такое «Эмуляция» в других словарях:

Имитация работы одной системы средствами другой без потери функциональных возможностей и искажений результатов. Эмуляция выполняется программными и/или аппаратными средствами. См. также: Исполнение программ Финансовый словарь Финам … Финансовый словарь

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

— [англ. emulation соревнование, соперничество] соперничество, конкуренция, желание перещеголять кого л. Словарь иностранных слов. Комлев Н.Г., 2006 … Словарь иностранных слов русского языка

Сущ., кол во синонимов: 3 конкуренция (8) подражание (25) соперничество (21) … Словарь синонимов

эмуляция — и, ж. émulation f. См. Эмюляция … Исторический словарь галлицизмов русского языка

эмуляция — emuliacija statusas T sritis automatika atitikmenys: angl. emulation vok. Emulation, f rus. эмуляция, f pranc. émulation, f … Automatikos terminų žodynas

Эмуляция — 53. Эмуляция Emulation Имитация функционирования одного устройства посредством другого устройства или устройств вычислительной машины, при которой имитирующее устройство воспринимает те же данные, выполняет ту же программу и достигает того же… … Словарь-справочник терминов нормативно-технической документации

Ж. Желание превзойти в чём либо друг друга; соперничество. Толковый словарь Ефремовой. Т. Ф. Ефремова. 2000 … Современный толковый словарь русского языка Ефремовой

эмуляция — эмул яция, и … Русский орфографический словарь

Около полугода назад мне задали примерно такой вопрос: “Я использую крупный фреймворк, запускающий некую функцию по действию пользователя. Хочу, не меняя кода этой функции, выполнить по событию вызова этой функции свой код.”. Практика далеко не лучшая, события вызова функции не существует, я просто покрутил пальцем у виска и сказал, что это жуткий говнокод, так делать не стоит, да и это, просто-напросто, — невозможно.

Пару дней назад, направляясь домой относительно тёплым зимним вечером, не типичным для Одессы, у меня возникла нетипичная мысль: “А что если попробовать сделать то, что спрашивал Богдан полгода назад?”. Придя домой, я включил компьютер, и, в течении пары минут, сделал то, что задумал. В первую очередь, меня интересовало то, как будут себя вести встроенные методы, если их переопределить, и можно ли после этого как-нибудь вызвать прежнее их состояние, бывшее до переопределения. Я знал, что, если объект переопределяют, то ссылки на него не уничтожатся, сохраняя прежний вид. Что касается встроенных функций, имелись сомнения. Оказывается, можно.

Скорее всего, мне даже никогда не придется воспользоваться таким инструментом, но, чисто гипотетически, возможно, у кого-то возникнет задача проследить вызов той или иной функции, получив отчет о каждом вызове, состоящий из:

  1. Результата выполнения
  2. Переданных аргументов
  3. Контекста вызова (что есть this при вызове)
  4. Количества вызовов функции после создания обработчика

Очень просто и кратко, правда?

Затем, переопределяем какую-нибудь функцию следующим образом:

SomeFunct = addCallListener(someFunct, function(result, args, self, callNumber)); // или Constructor.prototype.method = addCallListener(Constructor.prototype.method, function(result, args, self, callNumber));

Очевидно, она должна быть «видна» в той части кода, где это происходит.

Несколько примеров

Спасибо товарищам с форума javascript.ru за критику и дополнения.

UPD
Немного расширил функцию: теперь вместо одного колбека вторым аргументом передается объект

Что такое "эмуляция вызова" в Нокиа515? Для чего ее настраивать?

Эмуляция вызова иногда очень удобная функция у телефона. Эмуляция это когда вроде вам на телефон кто-то звонит, но на самом деле нет. И вы делаете вид, что вам позвонили и даже можете изобразить разговор. У меня друг при помощи эмуляции машины продает. Когда клиент начинает сомневаться, что ему это машина нужна, друг «получает звонок» при помощи эмуляции и начинает говорить «как будто с другим клиентом о машине» в большинстве своем у людей срабатывает инстинкт, если это машина нужна еще кому то, значит она просто подарок и надо ее брать. Такой вот маркетинговый ход или обман.

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

Сделать это можно при помощи компьютера. Можно сделать синхронизацию вашего старого телефона и компьютера через usb-кабель. А затем все контакты можно принести на новый телефон.

Еще как вариант все сбросить с телефона на телефон через блютуз, можно в виде sms. Но на мой взгляд первый вариант гораздо проще.

В данном случае лучше всего по моему «оживить» свой разряженный телефон на короткое время и самому позвонить или послать СМС с предупреждением о невозможности выхода на связь. Способов кратковременного «оживления» существует довольно много, от нагрева батареи до 50-70 градусов, до довольно экзотических, правда после некоторых из них батарею придется менять.

Наверно в сервисе имели в виду не «сетевую», а материнскую плату. Если на карте памяти ваших записей нет (диктофонные обычно находятся в папке «Записи»), то видимо они остались на встроенной памяти телефона.

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

Что такое эмуляция вызова в телефоне нокиа

В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы .

Программная эмуляция

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

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

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

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64 , ZX Spectrum , программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены . Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.

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

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

  • эмулятора или симулятора центрального процессора ;
  • модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ ;
  • модуля или модулей эмуляции различных устройств ввода-выв

Что такое эмуляция? Программа эмуляции. Эмуляция вызова

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

что такое эмуляция

Вычислительная техника

Проще всего рассказать о том, как работает имитирование на ЭВМ, ведь именно на компьютерах, планшетах и другой технике это используется чаще всего. Допустим, у вас есть сканирующее устройство компании Canon, а вы хотите эмулировать работу HP. Устанавливается специальный софт и программы, предназначенные для оригинальных устройств HP, которые могут без проблем работать на том же Canon. Точно такая же ситуация и с большинством лицензионных дисков, которые должны присутствовать в приводе вашего компьютера или ноутбука во время работы.

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

программа эмуляции

Программа эмуляции, или чем воспользоваться для создания образа

В настоящее время проблема заключается только в том, какую именно программу выбрать. Их существует огромное количество, и большинство достойных вариантов размещены в сети совершенно бесплатно. К примеру, DaemonTools – действительно эффективная утилита, которая работает без сбоев и не занимает много места на жестком диске. Такого плана софт позволяет эмулировать сразу несколько дисков, в большинстве случаев можно создавать 3-5 приводов, что зависит от версии программы. Русскоязычный интерфейс достаточно простой и понятный даже начинающему. В главное окно нужно добавить ранее созданный образ и эмулировать его. Есть и другие хорошие программы, такие как GizmoDrive, Alcohol 52% и т. д. Несмотря на большой выбор, принцип работы всех утилит примерно одинаков, главная цель – это заставить систему думать, что в приводе находится настоящий, лицензионный диск.

Эмуляция дисков: краткий обзор GizmoDrive

эмуляция нажатия клавишОсновное назначение утилиты заключается в монтировании файлов, имеющих расширение ISO. Помимо этого, может быть использован и другой формат, который вам подходит. Утилита автоматически создает привод и вставляет туда образ, который отображается, как настоящий CD/DVD диск. Тут для вас доступны самые популярные расширения, такие как ISO, BIN, MDS, MDF и другие. Также стоит отметить достаточно большое количество приводов, максимум 26 штук. Для упрощения создания образов предусмотрен специальный менеджер, который поможет даже новичку разобраться в работе. Также Gizmo позволяет пользователю создавать образ GDrive для эмуляции жесткого диска вашего устройства. Здесь предусмотрены даже сжатие и шифрование данных, что повышает не только производительность, но и уровень безопасности файлов. В принципе, разобраться, что такое эмуляция, вместе с такой простой утилитой, как GizmoDrive, будет предельно просто.

О преимуществах имитирования

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

эмуляция дисковКлассификация эмуляции

В настоящее время практически всегда используется аппаратная платформа. Но тут есть один важный момент — сначала нужно получить или эмулировать операционную систему или оборудование. Такое проделывается всего лишь один раз. Следовательно, такие имитаторы имеют практически неограниченный доступ к оборудованию. Зачастую это обычные слои совместимости, которые позволяют получить доступ к определенному софту или оборудованию. Опять же, для операционной системы «Виндовс» это один слой, а для Linux — совсем другой.

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

Имитация нажатия клавиш

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

эмуляция вызова что это

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

Если сказать вкратце, то вы можете сидеть у себя на работе и управлять домашним компьютером или несколькими его функциями (что-то вроде пульта, только с большим радиусом действия). Правда, понадобится подключение к Интернету.

Немного об эмуляции COM-порта

Есть специальные программы, позволяющие имитировать устройства, находящиеся в вашем Com-порту. Основная задача заключается в работе с пакетами данных. Утилита их подстраивает под себя, используя форматы RS232, UPD и другие. Как показывает практика, эмуляция Com-порта используется разработчиками различных приложений с целью их тестирования и проверки на работоспособность. Крайне полезна функция и для людей, работающих по сети, например, для сетевых инженеров. Также значительно облегчается и системная интеграция. Опять же, если говорить простыми словами, то вы можете проверить свою систему или какую-либо программу, не имея реального устройства в порту. В принципе, эмуляция дисков чем-то похожа по смыслу, но некоторые отличия все же имеются. Если вы новичок, то рекомендуется воспользоваться утилитой под названием COMPortDataEmulator. Русскоязычный интерфейс и удобная навигация по меню помогают быстро разобраться, что к чему.

эмуляция андроидаНесколько важных моментов

Конечно же, нельзя не сказать об эмуляции устройств, работающих на «Андроиде», так как в последнее время это крайне актуально. Вы можете использовать разные программы, например, Genymotion, которая является довольно простой, а также стабильной и удобной. «Фишка» от производителя в том, что поддерживается аппаратное ускорение графики, а это увеличенная производительность.

После того как вы установите утилиту, ее нужно настроить, и можно приступать к работе. Эмуляция «Андроида» мало чем отличается от настоящей игры на этом устройстве, поэтому большинство пользователей используют такого рода имитацию. Когда вы первый раз запустите программу, то получите сообщение о том, что нет виртуальных устройств, поэтому нужно создать новое. Далее жмете Connect и авторизуете свой аккаунт, который вы ранее уже создали. Дальше нет ничего сложного, находите нужную игру и нажимаете Play.

эмуляция com порта

Заключение

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

Теперь вы уже немного знаете о том, как работает эмуляция вызова, что это такое и как пользоваться. Главное – это разобраться в принципе действия. Не забывайте о том, что прежде чем создать образ диска или что-то в этом роде, нужно проверить компьютер на вирусы, ведь вредоносное ПО может полностью испортить образ. Записав образ, не выбрасывайте диск, ведь он вам может еще понадобиться.

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

способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции — патент РФ 2514141

Изобретение относится к способам эмуляции вызовов системных функций для обхода средств противодействия эмуляции. Технический результат заключается в обеспечении возможности эмуляции вызовов системных функций. Результат достигается с помощью способа эмуляции вызовов системных функций для обхода средств противодействия эмуляции, при этом способ включает следующие этапы: получают исполняемый файл на вход эмулятора; проверяют условия требования эмуляции вызовов системных функций; при выполнении хотя бы одного вышеприведенного условия используют эмуляцию системных вызовов; эмулируют выполнение исполняемого файла согласно последовательному выполнению инструкций; при обнаружении вызова системной функции переключают процесс эмуляции на эмуляцию системных вызовов; производят эмуляцию вызова системной функции в виде цепочки низкоуровневых вызовов. 7 з.п. ф-лы, 6 ил., 1 табл.

Изобретение относится к антивирусным решениям, а более конкретно к способам эмуляции вызовов системных функций для обхода средств противодействия эмуляции.

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

Одним из методов исследования потенциально вредоносной программы является использование эмулятора, который применяется в антивирусном приложении при анализе поведения приложения. Существуют различные способы эмуляции. Одним из них является программная имитация процессора, памяти и других устройств путем создания виртуальных копий регистров процессора, памяти и набора инструкций процессора. Таким образом, инструкции программы исполняются не на реальном процессоре, а на его виртуальной копии, а вызовы системных API-функций эмулируют и отправляют в ответ проэмулированный результат работы функции.

Для противодействия эмуляции программного кода создатели вредоносных программ используют различные уловки, которые могут базироваться на ограничениях, связанных с процессом эмуляции и реализацией эмулятора в антивирусных решениях. Один из таких подходов заключается в том, чтобы добавить в код программы большое количество инструкций, которые не несут вредоносной составляющей, однако требуют времени для эмуляции. Учитывая тот факт, что время, отведенное на эмуляцию программного кода, является ограниченным, чтобы не вызывать недовольство пользователя (как правило, это время может составлять несколько секунд), то процесс эмуляции может остановиться до начала выполнения по-настоящему вредоносного кода. Один из методов борьбы с таким подходом противодействия эмуляции описан в патенте US7603713, способ работы которого включает выполнение ряда инструкций на реальном процессоре, что существенно ускоряет процесс эмуляции неизвестных приложений для того, чтобы можно было добраться до самого вредоносного кода. Другой подход, раскрытый в заявке US20110225655, рассматривает вариант определения приложения как подозрительного, если оно противодействует эмуляции. Подобный подход основан на том, что безопасное (легитимное) приложение, как правило, показывает предупреждение о невозможности выполнения в эмуляторе, вредоносное спокойно завершает выполнение или резко меняет вектор (логику) выполнения.

Другой способ противодействия эмуляции основан на определении того факта, что приложение на данный момент запущено именно в эмуляторе, а не в реальной операционной системе. Стоит отметить, что эмулятор создает виртуальную копию процессора, компонентов компьютера и операционной системы (ОС) лишь в ограниченном объеме с усеченными возможностями, так как полное воссоздание всех возможностей того же процессора или системных API-функций невозможно по ряду причин: большие трудозатраты на подобную разработку, наличие недокументированных функций, большое падение производительности при работе подобного эмулятора. Таким образом, создатели вредоносных программ могут прибегать к следующим приемам, которые позволяют обнаружить факт выполнения в эмулируемой среде:

— Вызов недокументированной или редко используемой API-функции.

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

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

— Поиск в памяти определенных байт. Например, побайтовый поиск заголовка MZ в памяти после загрузки kernel32.dll при старте процесса. В ОС Vista 64 для kernel32.dll используется 64Кб выравнивание, и область между заголовком и первой секцией не будет отображена в адресное пространство процесса, и при попытке доступа к ней произойдет исключение. Если исключение не было зарегистрировано, то будет вызван стандартный обработчик исключений ОС, который завершит процесс.

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

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

Технический результат настоящего изобретения заключается в обеспечении возможности эмуляции вызовов системных функций.

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

Согласно одному из частных вариантов реализации условием требования эмуляции вызовов системных функций является быстрое завершение эмуляции исполняемого файла.

Согласно другому частному варианту реализации условием требования эмуляции вызовов системных функций является отсутствие ограничения на время эмуляции.

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

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

Согласно другому частному варианту реализации низкоуровневым вызовом является инструкция на языке ассемблера.

Согласно еще одному из частных вариантов реализации низкоуровневым вызовом является последовательный вызов всех связанных системных функций.

Согласно одному из частных вариантов реализации заканчивают эмуляцию вызова системной функции при переходе в режим ядра.

Краткое описание чертежей

Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:

Фиг.1 иллюстрирует пример работы классического эмулятора при обработке вызов API-функции.

Фиг.2 показывает пример выполнения API-функции в операционной среде Windows.

Фиг.3 иллюстрирует способ эмуляции вызовов API-функций в рамках настоящего изобретения.

Фиг.4 показывает систему, в рамках которой может быть реализовано настоящее изобретение.

Фиг.5 иллюстрирует способ реализации настоящего изобретения.

Фиг.6 представляет пример компьютерной системы общего назначения, на которой может быть реализовано настоящее изобретение.

Описание вариантов осуществления изобретения

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

Фиг.1 иллюстрирует пример работы классического эмулятора при обработке вызов API-функции. Когда при работе приложения в реальной ОС происходит вызов API-функции, ОС производит большое количество действий, что связано со сложной внутренней архитектурой ОС. Схематически вызов API-функции приводит к выполнению большого количества инструкций на процессоре, после чего приложению возвращается результат работы вызванной API-функции. При работе эмулятора вызов API-функции не приводит к такому же выполнению ряда инструкции, что и в реальной ОС, а вместо этого приложению возвращается сэмулированный результат работы API функции. Например, при попытке создать файл эмулятор вернет указатель на виртуальный файл. Однако несмотря на общий результат работы (например, возврат указателя на файл) результат работы вызванной API-функции может отличаться в ОС и эмуляторе, что связано с тем, что при вызове API-функции могут быть изменены, например, некоторые из регистров процессора, что не будет отражено при работе эмулятора. Данное расхождение может быть использовано для противодействия эмуляции и в первую очередь — вредоносными программами.

Фиг.2 показывает пример выполнения API-функции в операционной системе Windows. В качестве примера API-функции была выбрана WriteFile. На этапе 210 Windows приложение (например, Microsoft Word или Notepad) пытается записать данные в файл путем вызова соответствующей Win32 API функции WriteFile в Kernel32.dll. Затем на этапе 220 происходит вызов NtWriteFile в Ntdll.dll (т.е. происходит последовательный вызов всех связанных системных функций), что в свою очередь приводит к вызову системного прерывания на этапе 230 и поиску соответствующего обработчика (что делает функция KiSystemService в Ntoskrnl.dll) при вызове NtWriteFile. Отметим, что данный процесс происходит в режиме пользователя, а после вызова прерывания происходит переход в режим ядра. На этапе 240 происходит вызов NtWriteFile уже непосредственно в Ntoskrnl.dll и непосредственно выполнение записи в файл на этапе 250 (здесь также скрыты детали, связанные с работой драйвера файловой системы). Исходя из этого становится понятно, что при вызове даже одной API функции в современных ОС происходит большое количество операций (т.е. более низкоуровневых событий в рамках рассмотрения самой структуры ОС), в том числе и переход выполнения приложения из режима пользователя в режим ядра. При рассмотрении этих операций с точки зрения исполнения инструкций на языке ассемблера становится ясно, что корректно проэмулировать вызов API-функции очень тяжело ввиду необходимости учета состояния всех регистров процессора и состояния всех внутренних структур ОС.

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

Фиг.3 иллюстрирует способ эмуляции вызовов API-функций в рамках настоящего изобретения. На этапе 310 происходит классическая эмуляция приложения, как, например, в случае эмуляции приложения Notepad (приведен небольшой фрагмент кода приложения при его отладке в отладчике OllyDbg):

Такие инструкции, как MOV, PUSH, SUB, LEA и подобные будут эмулироваться как есть, т.е. путем эмуляции ассемблерных инструкций с помощью виртуального процессора в эмуляторе. Как только происходит вызов API функции (что определяется на этапе 320), такой как

то эмуляция подобного вызова будет происходить по машинным инструкциям (этап 330) с учетом всех вложенных вызовов, как представлено, например, на Фиг.2. При достижении перехода в режим ядра при выполнении API-функции, что будет проверено на этапе 340, эмуляция будет переведена в стандартный (обычный, классический) режим, т.е. дальнейшие вызовы не будут обработаны последовательно по каждой инструкции, а лишь будет возвращен результат вызова функции. После этого способ возвращается с этапа 350 на этап 310 для дальнейшей эмуляции.

Фиг.4 показывает систему, в рамках которой может быть реализовано настоящее изобретение. Допустим, на компьютере пользователя имеется неизвестный исполняемый файл 410, который следует проэмулировать для определения факта его возможной вредоносности. Следует уточнить, что под исполняемым файлом следует понимать не только исполняемые файлы, имеющие РЕ или ELF формат, но также и другие файлы, содержащие различный код, такие как файлы .class или .jar (для выполнения в виртуальной машине Java), различные файлы сценариев, такие как .vbs и многие другие. Сам файл 410 содержит инструкции 420, последовательная эмуляция которых воспроизводит выполнение файла 410. Отметим, что последовательная эмуляция подразумевает в том числе и выполнение всех переходов как условных, так и безусловных, а также вызов различных функций внутри исполняемого файла 410. При последовательной эмуляции каждая инструкция 420 попадает на вход модуля разбора инструкций 430 внутри эмулятора 405, при этом данный модуль определяет, является ли инструкция вызовом системной API-функции и в случае положительного ответа эмулятор 405 производит эмуляцию вызова данной функции (отображено как 450) в виде цепочки более низкоуровневых событий, таких какие показаны, например, на Фиг.2 (т.е. этапы 210-230 на Фиг.2 до перехода в режим ядра). В противном случае эмулятор 405 эмулирует ее исполнение в рамках классической эмуляции (отображено как 440), т.е. возвращает проэмулированный результат работы функции (т.е. без эмуляции всех этапов отмеченных на Фиг.2). В некоторых случаях инструкция вызова API-функции может быть проэмулирована, так же, как это бы сделано в случае классической эмуляции 440. Например, функция URLDownloadToFile в низкоуровневом представлении содержит сложную цепочку обращений к драйверу TCP/IP, и последовательная эмуляция подобной цепочки может быть нецелесообразна. В одном из вариантов реализации целесообразность использования эмуляции системных вызовов определяет модуль разбора инструкций 430, например, на основании известной информации о скорости проведения эмуляции тех или иных вызовов.

Фиг.5 иллюстрирует способ реализации настоящего изобретения. На этапе 510 происходит попытка эмуляции исполняемого файла 410 на компьютере пользователя. На этапе 520 проверяется, требуется ли выполнение эмуляции системных API-функций.

Требования для эмуляции системных функций:

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

— Требуется провести более глубокую эмуляцию исполняемого файла 410. Это происходит в том случае, если исполняемый файл 410 не встречался ранее, что означает отсутствие информации по неизвестному файлу со стороны антивирусного приложения, в рамках которого работает эмулятор (т.е. не классифицирован и не находится в базах антивирусного приложения как вредоносное или безопасное приложение).

— Классическим эмулятором обнаружены методы противодействия эмуляции, такие как: вызовы API-функций с заведомо неверными параметрами с последующей проверкой статуса (кода) ошибки, проверка волатильных регистров после вызова API-функций, сканирование содержимого системных модулей, попытки обнаружить в системе отладчик, а также вызовы стандартных методов обнаружения исполнения под виртуальной машиной (RedPill).

— Обнаружение применения приемов самораспаковки или самозащиты (пакеры и протекторы).

— Необходимость эмуляции потенциально вредоносного приложения в составе ОС пользователя со всеми присутствующими библиотеками и интерпретаторами (например, .NET или Java). Также предложенный способ эмуляции позволяет производить эмуляцию пакетных и управляющих файлов, таких как пакетный файл (batch file) с расширением .bat или .cmd, powershell-сценариев, reg-файлов для внесения данных в реестр и других типов файлов, запуск которых приводит к исполнению кода на компьютере пользователя.

— Время на эмуляцию не ограничено жесткими рамками, например может составлять десятки секунд или даже нескольких минут и более, что характерно при первом анализе приложения.

Выполнение хотя бы одного из подобных требований приводит к эмуляции системных вызовов 450 на этапе 530 для эмуляции API-функций по машинным инструкциям, как это показано на Фиг.4. В ином случае на этапе 540 происходит использование лишь классической эмуляции 440. Использование подобных требований позволяет более гибко подходить к процессу эмуляции в рамках антивирусного приложения, не вызывая недовольства пользователя, что связано с дополнительной нагрузкой из-за необходимости эмулировать API-функции по машинным инструкциям.

Фиг.6 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.

Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.

Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш-карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.

Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47 персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.

Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг.6. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.

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

ФОРМУЛА ИЗОБРЕТЕНИЯ

1. Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции, в котором:
а) получают исполняемый файл на вход эмулятора;
б) проверяют условия требования эмуляции вызовов системных функций;
в) при выполнении хотя бы одного вышеприведенного условия используют эмуляцию системных вызовов;
г) эмулируют выполнение исполняемого файла согласно последовательному выполнению инструкций;
д) при обнаружении вызова системной функции переключают процесс эмуляции на эмуляцию системных вызовов;
е) производят эмуляцию вызова системной функции в виде цепочки низкоуровневых вызовов.

2. Способ по п.1, в котором условием требования эмуляции вызовов системных функций является быстрое завершение эмуляции исполняемого файла.

3. Способ по п.1, в котором условием требования эмуляции вызовов системных функций является отсутствие ограничения на время эмуляции.

4. Способ по п.1, в котором условием требования эмуляции вызовов системных функций является отсутствие информации по неизвестному файла со стороны антивирусного приложения.

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

6. Способ по п.1, в котором низкоуровневым вызовом является инструкция на языке ассемблера.

7. Способ по п.1, в котором низкоуровневым вызовом является последовательный вызов всех связанных системных функций.

8. Способ по п.1, в котором заканчивают эмуляцию вызова системной функции при переходе в режим ядра.

Эмуляция — это… Что такое Эмуляция?

Эмуляция компьютера стандарта MSX на эмуляторе MESS

Эмуля́ция (англ. emulation) — воспроизведение программными или аппаратными средствами либо их комбинацией работы других программ или устройств. [1]

  • Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.
  • Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
  • Тестирование программ, написанных для различных систем.

Аппаратная и программно-аппаратная эмуляция

В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы. [2]

Программная эмуляция

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

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

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

Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно (или скрывается под грифом коммерческой тайны) и должно быть исследовано и определено с помощью обратной разработки.

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, ZX Spectrum, программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены. Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.

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

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

Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.

См. также

Примечания

Литература

  • А. Аганичев, Д. Панфилов, М. Плавич, О. Полянский. Программно-аппаратный комплекс для отладки МП систем на основе микроконтроллеров семейства MC68HC11 фирмы MOTOROLA
  • Шагурин И., Бродин В., Калинин Л., Толстов Ю., Петров С., Исенин И., Эйдельман С., Ванюлин В. Средства проектирования и отладки систем управления на базе МК фирмы Motorola.

Ссылки

Голосовые вызовы, отправка и прием SMS, геолокационные данные на эмуляторе

Статья проплачена кошками — всемирно известными производителями котят.

Если статья вам понравилась, то можете поддержать проект.

Входящие голосовые вызовы
SMS
Геолокация
Fingerprint (Отпечаток пальца)

В новой версии эмулятора, который появился в Android Studio 2.2, произошли серьёзные изменения. Многие возможности были перенесены в эмулятор, а раньше запускались в отдельном окне. И многие разработчики порой путаются и не могут найти инструменты, к которым привыкли.

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

Запустите эмулятор и на панели инструментов в самом низу нажмите на три горизонтальные точки. Откроется окно Extended controls. Слева будет выбор функционала для эмуляции: определение местоположения, звонки, датчики и т.д.

Входящие голосовые вызовы

Входящие голосовые вызовы можно осуществить следующим образом:

  • В разделе Phone у поля From введите номер телефона, с которого будет идти звонок, например, 2345678
  • Нажмите на кнопку Call Device
  • На эмуляторе отобразится входящий звонок. Ответьте на него через кнопки на эмуляторе
  • Для завершения звонка можете нажать кнопку End Call или нажать кнопку сброса на эмуляторе

Отправка SMS на телефон-эмулятор осуществляется по такому же принципу. Нужно ввести текст и нажать кнопку SEND MESSAGE.

Геолокация

Для настройки геолокационных данных используется группа Location. Вам нужно ввести нужные координаты и нажать кнопку SEND.

Кнопка LOAD GPX/KML позволяют загружать файлы GPX (формат для хранения и обмена данными GPS) и KML (язык разметки Keyhole) соответственно.

Большинство систем GPS используют формат GPX, а формат KML используется в интернете, в частности приложением Google Earth.

Fingerprint (Отпечаток пальца)

Эмулятор позволяет входить в телефон с помощью отпечатка пальца.

Для начала в эмуляторе войдите в Settings | Security и выберите пункт Fingerprint.

Читаем текст и нажимаем NEXT.

В следующем окне выберите пункт Fingerprint + PIN.

В следующем окне выберите пин-код, например, 2287 (этим цифрам соответствует слово CATS). Далее повторите пин-код.

В этом окне показывают, где находится сенсор отпечатка пальца. Нажимаем на кнопку Next.

Наконец, мы видим экран с приглашением положить палец на сенсор. Позовите кота и попросите положить лапу, незачем светить свои пальчики ЦРУ, ФБР, ФСБ и КГБ. Если лапа кота не сработала, то идём на крайние меры. Нажимаем в эмуляторе на три кнопки (More), выбираем раздел Fingerprint и нажимаем на кнопку Touch Sensor.

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

При желании можете добавить другой пальчик или лапу кота через кнопку Add another на экране устройства.

При последующих запусках внизу будет выводиться значок для входа по отпечатку пальца. Нажимаем на кнопку Touch Sensor из окна настроек эмулятора, чтобы снять блокировку.

С остальными настройками эмулятора разберётесь самостоятельно.

Реклама

Ответы@Mail.Ru: Что такое эмуляция?

Вообщето Эвуляция, если ты имеешь в виду залёт.

Это виртуальное моделирование реального физического процесса.Например,компьютерные гонки-это эмулятор…

Эмуля́ция (англ. software emulation) — имитация работы одной программы средствами другой. Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе) , отличной от той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения. [Источник? ] В отличие от симуляции, которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода. Используется при проектировании новых микропроцессоров и при тестировании программ написанных для различных систем. Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок. Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно и должно быть исследовано и определено с помощью обратной разработки. Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, программное обеспечение которых сильно зависит от программистских решений, основанных на недокументированных возможностях, изобретённых программистами игр и энтузиастами демосцены. В противоположность этому, на некоторых других платформах довольно мало использовался прямой доступ к оборудованию. В этом случае оказывается достаточным обеспечить некоторый уровень совместимости, обеспечивающий трансляцию системных вызовов эмулируемой системы в вызовы работающей системы. Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из: * эмулятора или симулятора центрального процессора * модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ * модуля или модулей эмуляции различных устройств ввода/вывода Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия общается непосредственно с модулем ЦП и модулем памяти.

Эмуляция — это… Что такое Эмуляция?

Эмуляция компьютера стандарта MSX на эмуляторе MESS

Эмуля́ция (англ. emulation) — воспроизведение программными или аппаратными средствами либо их комбинацией работы других программ или устройств. [1]

  • Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.
  • Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
  • Тестирование программ, написанных для различных систем.

Аппаратная и программно-аппаратная эмуляция

В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы. [2]

Программная эмуляция

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

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

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

Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно (или скрывается под грифом коммерческой тайны) и должно быть исследовано и определено с помощью обратной разработки.

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, ZX Spectrum, программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены. Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.

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

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

Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.

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

Ваш адрес email не будет опубликован.