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

Цели

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

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

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

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

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

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

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

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как 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. Количества вызовов функции после создания обработчика
(Этот список полностью соответствует аргументам, передающимся в обработчик)

addCallListener = function(func, callback){ var callNumber = 0; return function(){ var args = .slice.call(arguments); var result; try { result = func.apply(this, arguments); callNumber++; } catch (e) { callback(e, args, this, callNumber); throw e; } callback(result, args, this, callNumber); return result; } }

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

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

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

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

Несколько примеров
Для запуска примеров необходимо наличие открытой консоли (в хроме вызывается по Ctrl+Shift+i).

Спасибо товарищам с форума 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 (ошибка, если есть)
Кроме этого, функция addCallListener теперь является частью объекта конструктора Function, во избежание попадания в window или process.

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


Так что же такое эмулятор и для чего он нам нужен? Бывают ситуации, когда мы загружаем сотни программ или тем оформления для своего телефона, но хотим из них выбрать именно те, которые будут наиболее приятны нам. Именно в таких случаях для проверки приложений (тем оформления) эмулятор телефонов 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). Как это делается, можно прочитать в статье

Всю жизнь пользовалась простенькими телефонами, и отдавала предпочтение только марке Nokia. Но жизнь не стоит на месте, однажды мне захотелось телефон с камерой и выходом в интернет - ведь это так удобно! В магазине сотовой связи модельный ряд кнопочных Nokia был не велик, но на вариант 301 Dual взгляд упал сразу. Люблю, чтобы было простенько, но со вкусом, без лишних раздражающих деталей. Этот телефон в плане внешнего вида удовлетворил меня на 100%. Попросила показать поближе - всё понравилось. Покупка обошлась мне в четыре тысячи. Дополнительно приобрела кожаный чехол.

О телефоне у меня осталось двоякое впечатление. Первое время, пока привыкала, всё казалось шикарным. Не так давно я поменяла свою старенькую Оку на Renault Logan - так вот, сравнение было аналогичным. Мне очень понравилось то, что в телефоне всё продумано до мелочей. Стильный и удобный. То, что надо. Но со временем, конечно, выявились и минусы, но обо всём по порядку.

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

Интернет.... Это отдельный разговор. Достаточно примитивный. Если вы ищете телефон, который позволит вам с комфортом общаться в социальных сетях, забыв о компьютере - проходите мимо. С этого телефона только обновления просматривать. Пока страницы грузятся - все ногти сгрызёшь. А к постоянным глюкам я уже привыкла: действия очень часто уходят в никуда. Это касается и отправки сообщений, комментариев, и загрузки страниц (с первого раза, как правило, всё получается "в холостую"). Сообщения, прежде, чем отправить, я всегда копирую: если действие не пройдёт, весь текст коту под хвост. Бывает, и по сто раз одно и то же отправляется. А насчёт лайков отдельная история. Вот вы, когда просматриваете ленту, ставите лайки на то, что вам понравилось и листаете дальше, так? Тут всё сложно. Первый лайк, как правило, ставится, а второй отправляет вашу новостную ленту в самое начало. И так регулярно! В последнее время всё чаще подумываю о покупке нового телефона, сенсорного на базе андроид, так как эти все несовершенства меня стали порядком раздражать: отнимает много времени и нервов.

А ещё телефон часто глючит, чего от Нокии, я, честно сказать, не ожидала. Ни с того ни с сего белеет экран и вся система перезагружается заново. Не нравится то, что на солнышке не видно букв, когда набираешь текст, не нравится камера... Явно не 3.2! Максимум на 2 Мп тянет. Да и работает телефон как то слегка заторможено, хотя при этом у меня память практически пустая (загружена всего одна песня на звонок). В плане опций телефон вроде и умненький, но внутри очень много не понятных мне названий. Например, "Эмуляция вызова" - что это?

В общем, я разочарована. Ожидала лучшего. Дизайн мне нравится, всё остальное так себе. Со временем куплю другой. Оцениваю телефон на средние три балла, но к покупке рекомендую: соотношение "цена-качество" вполне адекватны.

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

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

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

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

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

addCallListener = function(func, callback){ var callNumber = 0; return function(){ var args = .slice.call(arguments); var result; try { result = func.apply(this, arguments); callNumber++; } catch (e) { callback(e, args, this, callNumber); throw e; } callback(result, args, this, callNumber); return result; } }

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

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

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

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

Несколько примеров
Для запуска примеров необходимо наличие открытой консоли (в хроме вызывается по Ctrl+Shift+i).

Спасибо товарищам с форума 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 (ошибка, если есть)
Кроме этого, функция addCallListener теперь является частью объекта конструктора Function, во избежание попадания в window или process.

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

Обзор