Эмуляция вызова в телефоне что это – Здравствуйте! что такое эмуляция вызова на нокиа аша 206 и как её отключить? случайно нажалось куда-то
Что значит эмуляция вызова. Что такое эмуляция? Программа эмуляции. Эмуляция вызова
Цели
- Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.
- Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
- Тестирование программ, написанных для различных систем.
Аппаратная и программно-аппаратная эмуляция
В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы .
Программная эмуляция
Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе), отличной, или в некоторых случаях идентичной той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения. В отличие от симуляции , которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода.
При использовании языков высокого уровня, иногда в целях сохранения быстродействия исполняемой программы, вместо эмуляции делают портирование программ в новую среду. В этом случае производится переписывание заново аппаратно-зависимых участков кода.
Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок .
Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64 , ZX Spectrum , программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены . Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.
В противоположность этому, на некоторых других платформах довольно мало использовался прямой доступ к оборудованию. В этом случае оказывается достаточным обеспечить некоторый уровень совместимости, обеспечивающий трансляцию системных вызовов эмулируемой системы в вызовы работающей системы.
Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:
- эмулятора или симулятора центрального процессора ;
- модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ ;
- модуля или модулей эмуляции различных устройств ввода-выв
rzdoro.ru
Что такое эмуляция? Программа эмуляции. Эмуляция вызова
Эмуляция — это копия оригинальной системы, которая может функционировать на другом компьютере или оборудовании. Самый простой пример, это эмуляция дисков с помощью известной программы 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.
Заключение
Вот мы с вами и рассмотрели практически все, что хоть как-то касается эмуляции. Вы могли бы заметить, что вещь это достаточно полезная. Даже если ваша работа и не требует использования имитации или симуляции электронных систем, рано или поздно это может вам очень даже пригодиться.
Теперь вы уже немного знаете о том, как работает эмуляция вызова, что это такое и как пользоваться. Главное – это разобраться в принципе действия. Не забывайте о том, что прежде чем создать образ диска или что-то в этом роде, нужно проверить компьютер на вирусы, ведь вредоносное ПО может полностью испортить образ. Записав образ, не выбрасывайте диск, ведь он вам может еще понадобиться.
В принципе, это все, что можно сказать по данной теме. Что такое эмуляция и для чего она нужна, вам должно быть понятно. Если вы собираетесь воспользоваться полученной информацией, то начинайте с простых программ, желательно — на русском языке.
fb.ru
способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции — патент РФ 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, в котором заканчивают эмуляцию вызова системной функции при переходе в режим ядра.
www.freepatent.ru
Эмуляция — это… Что такое Эмуляция?
Эмуляция компьютера стандарта MSX на эмуляторе MESSЭмуля́ция (англ. emulation) — воспроизведение программными или аппаратными средствами либо их комбинацией работы других программ или устройств.[1]
Цели
- Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.
- Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
- Тестирование программ, написанных для различных систем.
Аппаратная и программно-аппаратная эмуляция
В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы.[2]
Программная эмуляция
Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе), отличной, или в некоторых случаях идентичной той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения. В отличие от симуляции, которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода.
При использовании языков высокого уровня, иногда в целях сохранения быстродействия исполняемой программы, вместо эмуляции делают портирование программ в новую среду. В этом случае производится переписывание заново аппаратно-зависимых участков кода.
Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок.
Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно (или скрывается под грифом коммерческой тайны) и должно быть исследовано и определено с помощью обратной разработки.
Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, ZX Spectrum, программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены. Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.
В противоположность этому, на некоторых других платформах довольно мало использовался прямой доступ к оборудованию. В этом случае оказывается достаточным обеспечить некоторый уровень совместимости, обеспечивающий трансляцию системных вызовов эмулируемой системы в вызовы работающей системы.
Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:
Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.
См. также
Примечания
Литература
- А. Аганичев, Д. Панфилов, М. Плавич, О. Полянский. Программно-аппаратный комплекс для отладки МП систем на основе микроконтроллеров семейства MC68HC11 фирмы MOTOROLA
- Шагурин И., Бродин В., Калинин Л., Толстов Ю., Петров С., Исенин И., Эйдельман С., Ванюлин В. Средства проектирования и отладки систем управления на базе МК фирмы Motorola.
Ссылки
dal.academic.ru
Голосовые вызовы, отправка и прием SMS, геолокационные данные на эмуляторе
Статья проплачена кошками — всемирно известными производителями котят.
Если статья вам понравилась, то можете поддержать проект.
Входящие голосовые вызовы
SMS
Геолокация
Fingerprint (Отпечаток пальца)
В новой версии эмулятора, который появился в Android Studio 2.2, произошли серьёзные изменения. Многие возможности были перенесены в эмулятор, а раньше запускались в отдельном окне. И многие разработчики порой путаются и не могут найти инструменты, к которым привыкли.
С помощью эмулятора разработчик может осуществлять голосовые вызовы, отправку и прием коротких сообщений, а также получать координаты для геолокации на эмуляторе. Важно понимать, что это всего лишь эмуляция. Никакие данные не передаются.
Запустите эмулятор и на панели инструментов в самом низу нажмите на три горизонтальные точки. Откроется окно Extended controls. Слева будет выбор функционала для эмуляции: определение местоположения, звонки, датчики и т.д.
Входящие голосовые вызовы
Входящие голосовые вызовы можно осуществить следующим образом:
- В разделе Phone у поля From введите номер телефона, с которого будет идти звонок, например, 2345678
- Нажмите на кнопку Call Device
- На эмуляторе отобразится входящий звонок. Ответьте на него через кнопки на эмуляторе
- Для завершения звонка можете нажать кнопку End Call или нажать кнопку сброса на эмуляторе
SMS
Отправка 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 из окна настроек эмулятора, чтобы снять блокировку.
С остальными настройками эмулятора разберётесь самостоятельно.
Реклама
developer.alexanderklimov.ru
Ответы@Mail.Ru: Что такое эмуляция?
Вообщето Эвуляция, если ты имеешь в виду залёт.
Это виртуальное моделирование реального физического процесса.Например,компьютерные гонки-это эмулятор…
Эмуля́ция (англ. software emulation) — имитация работы одной программы средствами другой. Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе) , отличной от той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения. [Источник? ] В отличие от симуляции, которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода. Используется при проектировании новых микропроцессоров и при тестировании программ написанных для различных систем. Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок. Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно и должно быть исследовано и определено с помощью обратной разработки. Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, программное обеспечение которых сильно зависит от программистских решений, основанных на недокументированных возможностях, изобретённых программистами игр и энтузиастами демосцены. В противоположность этому, на некоторых других платформах довольно мало использовался прямой доступ к оборудованию. В этом случае оказывается достаточным обеспечить некоторый уровень совместимости, обеспечивающий трансляцию системных вызовов эмулируемой системы в вызовы работающей системы. Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из: * эмулятора или симулятора центрального процессора * модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ * модуля или модулей эмуляции различных устройств ввода/вывода Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия общается непосредственно с модулем ЦП и модулем памяти.
Вот тебя прет…
touch.otvet.mail.ru
Эмуляция — это… Что такое Эмуляция?
Эмуляция компьютера стандарта MSX на эмуляторе MESSЭмуля́ция (англ. emulation) — воспроизведение программными или аппаратными средствами либо их комбинацией работы других программ или устройств.[1]
Цели
- Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.
- Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
- Тестирование программ, написанных для различных систем.
Аппаратная и программно-аппаратная эмуляция
В случае программно-аппаратного комплекса эмулятором является специальное электронное устройство, выполненное в виде платы.[2]
Программная эмуляция
Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе), отличной, или в некоторых случаях идентичной той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения. В отличие от симуляции, которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода.
При использовании языков высокого уровня, иногда в целях сохранения быстродействия исполняемой программы, вместо эмуляции делают портирование программ в новую среду. В этом случае производится переписывание заново аппаратно-зависимых участков кода.
Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок.
Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно (или скрывается под грифом коммерческой тайны) и должно быть исследовано и определено с помощью обратной разработки.
Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, ZX Spectrum, программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены. Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.
В противоположность этому, на некоторых других платформах довольно мало использовался прямой доступ к оборудованию. В этом случае оказывается достаточным обеспечить некоторый уровень совместимости, обеспечивающий трансляцию системных вызовов эмулируемой системы в вызовы работающей системы.
Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:
Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.
См. также
Примечания
Литература
- А. Аганичев, Д. Панфилов, М. Плавич, О. Полянский. Программно-аппаратный комплекс для отладки МП систем на основе микроконтроллеров семейства MC68HC11 фирмы MOTOROLA
- Шагурин И., Бродин В., Калинин Л., Толстов Ю., Петров С., Исенин И., Эйдельман С., Ванюлин В. Средства проектирования и отладки систем управления на базе МК фирмы Motorola.
Ссылки
dik.academic.ru