RU2553056C2 - Система и способ сохранения состояния эмулятора и его последующего восстановления - Google Patents

Система и способ сохранения состояния эмулятора и его последующего восстановления Download PDF

Info

Publication number
RU2553056C2
RU2553056C2 RU2013147291/08A RU2013147291A RU2553056C2 RU 2553056 C2 RU2553056 C2 RU 2553056C2 RU 2013147291/08 A RU2013147291/08 A RU 2013147291/08A RU 2013147291 A RU2013147291 A RU 2013147291A RU 2553056 C2 RU2553056 C2 RU 2553056C2
Authority
RU
Russia
Prior art keywords
emulator
emulation
image
state
file
Prior art date
Application number
RU2013147291/08A
Other languages
English (en)
Other versions
RU2013147291A (ru
Inventor
Владислав Валерьевич Пинтийский
Сергей Юрьевич Белов
Original Assignee
Закрытое акционерное общество "Лаборатория Касперского"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Закрытое акционерное общество "Лаборатория Касперского" filed Critical Закрытое акционерное общество "Лаборатория Касперского"
Priority to RU2013147291/08A priority Critical patent/RU2553056C2/ru
Priority to US14/221,488 priority patent/US9111096B2/en
Priority to DE202014011116.2U priority patent/DE202014011116U1/de
Priority to EP20140163292 priority patent/EP2866167A1/en
Publication of RU2013147291A publication Critical patent/RU2013147291A/ru
Application granted granted Critical
Publication of RU2553056C2 publication Critical patent/RU2553056C2/ru
Priority to US14/748,418 priority patent/US9740864B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Abstract

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

Description

Область техники
Изобретение относится к антивирусным решениям, а более конкретно к способам сохранения состояния эмулятора и его последующего восстановления.
Уровень техники
Код современных программ, в том числе вредоносных, представляет собой сложный набор инструкций: переходов, вызовов, циклов и т.д. Стоит отметить, что сложность исполняемых файлов постоянно увеличивается, что связано с ростом популярности языков программирования высокого уровня, а также усложнением компьютерной техники и операционных систем. Это относится как к доверенным приложениям, так и к вредоносным. Вредоносные приложения могут совершать ряд характерных действий, таких как кража паролей и других конфиденциальных данных пользователя, включение компьютера в бот-сеть для проведения DDoS-атак или рассылки спама, блокирование корректного функционирования системы с целью вымогательства и другие отрицательные и нежелательные с точки зрения пользователя действия.
Одним из методов исследования потенциально вредоносной программы является использование эмулятора, который применяется в антивирусном приложении при анализе поведения приложения. Существуют различные способы эмуляции. Одним из них является программная имитация процессора, памяти и других устройств путем создания виртуальных копий регистров процессора, памяти и набора инструкций процессора. Таким образом, инструкции программы исполняются не на реальном процессоре, а на его виртуальной копии, а вызовы системных API-функций эмулируют и отправляют в ответ проэмулированный результат работы функции.
Стоит отметить, что процесс инициализации эмулятора может быть достаточно ресурсоемким. Инициализация эмулятора должна включать не только создание виртуальной копии необходимых аппаратных средств (процессор, оперативная память), но также и виртуальных копий ряда ключевых компонентов операционной системы (ОС), в рамках которой происходит эмуляция выполнения приложения. В качестве ключевых компонентов ОС можно привести, например, часть ядра операционной системы, отвечающей за необходимые механизмы ее работы, такие как обработка прерываний и исключений, драйверы необходимых устройств, управление памятью и т.д. Для корректного “воспроизведения” (эмуляции) работающей ОС необходимо повторить процесс ее загрузки, пусть и в достаточно упрощенном виде.
На Фиг.1 отображен процесс загрузки операционной системы Windows. На этапе 101 загружается Windows Boot Manager, который отвечает за поиск установленных ОС Windows и возможность выбора загрузки любой из найденных. Далее, на этапе 102, происходит загрузка базовых драйверов, которые отвечают, например, за возможность работы с разделом жесткого диска, на котором установлена выбранная ОС (т.е. загружается драйвер файловой системы). Далее с диска считывается и загружается в память часть ядра ОС на этапе 103, например Ntosrnl.exe и hal.dll, производится инициализация реестра, менеджера памяти, менеджера объектов и т.д. На этапе 104 происходит загрузка менеджера сессий (smss.exe), который отвечает за загрузку системных переменных, подсистемы Win32 и дальнейшую загрузку winlogon.exe на этапе 105. После того как пользователь успешно пройдет аутентификацию на этапе 106, произойдет загрузка приложений и служб, прописанных с ключом автозапуска, после чего ОС будет полностью готова к взаимодействию с пользователем, ожидая запуска приложений и ввода данных.
Для процесса эмуляции необязательно полностью эмулировать загрузку операционной системы. Например, этапы 101 и 102 можно убрать, оставив лишь этапы 103 и 104 в упрощенном виде. Т.е. достаточно будет проэмулировать самый необходимый для работы ОС функционал, который позволит провести эмуляцию приложения. Для Win32 приложений нужно будет проэмулировать запуск smss.exe с последующим запуском csrss.exe, что инициализирует Windows подсистему и позволит создавать процессы и потоки. Так как эмуляция потенциального вредоносного приложения требует создания более детальной работающей среды (например, эмуляции других запущенных процессов), то также потребуется проэмулировать запуск winlogon.exe с последующим “запуском” таких процессов как explorer.exe и services.ехе, при этом от последнего можно эмулировать “запуск” процессов svchost.exe. Под термином “запуск” в данном случае подразумевается воссоздание в эмуляторе тех же процессов, что протекают и при создании процессов в рамках реальной ОС, пусть и в сильно упрощенном виде. Подобный подход позволяет воссоздать реальную ОС в достаточной степени, чтобы можно было запустить практически любое приложение, предназначенное для работы в данной ОС. Для потенциально вредоносных приложений подобная детализация воссоздания окружения также необходима как для обхода возможных приемов для противодействия эмуляции (англ. anti-emulation tricks), которые могут включать как раз проверки наличия запущенных служб, установленных системных переменных и других элементов, присутствующих в реальной ОС, так и для возможности реализации вредоносного функционала, который может быть направлен на определенные приложения. В качестве примера можно привести процесс explorer.exe, который часто подвергается заражению, процессы веб-браузеров, для которых может быть использован соответствующий эксплойт и т.д.
Таким образом, проблема создания соответствующего окружения для эмуляции возможно вредоносного приложения требует воссоздания как можно более детального воссоздания реальной ОС и запущенных в ней приложений. Процесс инициализации подобного окружения может занимать достаточно много времени и ресурсов (запуск процесса эмуляции, загрузка с жесткого диска в память всех необходимых данных для инициализации таких виртуальных структур, как файловая система, реестр и т.д.), что сокращает время на собственно саму эмуляцию кода приложения.
В настоящий момент существуют подходы для сохранения состояния эмулируемой среды. Например, эмулятор QEMU поддерживает создание образов, в том числе и для исключения необходимости выполнять процесс загрузки ОС. Однако образ сохраняется на диск лишь по запросу пользователя, и не поддерживает какой-либо структуры сохранения ряда записанных образов. Данный подход полностью совпадает с режимом работы менеджера виртуальных машин. В заявке US 20060155525 рассматривается вариант создания образов состояния эмулируемой системы в файл при обнаружении особой инструкции (которая вставляется заранее пользователем). Стоит отметить, что в данной публикации идет речь о комбинировании программной эмуляции и симуляции некоторого связанного с программой аппаратного комплекса.
Однако в приведенных публикациях не рассматривается подходов для автоматического создания образов эмулируемой системы, а также состояния выполнения эмулируемого приложения, что позволило бы отследить все возможные ветвления выполнения программного кода. С точки зрения анализа вредоносных программ подобный подход позволил бы обойти приемы для противодействия эмуляции.
Для противодействия эмуляции программного кода создатели вредоносных программ используют различные уловки, которые могут базироваться на ограничениях, связанных с процессом эмуляции и реализацией эмулятора в антивирусных решениях. Эмулятор создает виртуальную копию процессора, компонентов компьютера и операционной системы (ОС) лишь в ограниченном объеме с усеченными возможностями, так как полное воссоздание всех возможностей того же процессора или системных API-функций невозможно по ряду причин: большие трудозатраты на подобную разработку, наличие недокументированных функций, большое падение производительности при работе подобного эмулятора. Таким образом, создатели вредоносных программ могут прибегать к следующим приемам, которые позволяют обнаружить факт выполнения в эмулируемой среде:
- Вызов недокументированной или редко используемой API-функции.
- Выполнение ряда инструкций центрального процессора с последующей проверкой, например, ряда установленных флагов. При недостаточно точной эмуляции команд процессора ряд флагов может иметь значения, отличные от тех, что были бы установлены при выполнении на процессоре.
- Проверка корректности выполнения API функции. Проверка может быть очень усложненной и включать анализ возвращаемых кодов ошибки при некорректном вызове или проверку установленных регистров процессора.
- Поиск в памяти определенных байт. Например, побайтовый поиск заголовка MZ в памяти после загрузки kemel32.dll при старте процесса. В ОС Vista 64 для kemel32.dll используется 64Кб выравнивание, и область между заголовком и первой секцией не будет отображена в адресное пространство процесса, и при попытке доступа к ней произойдет исключение. Если исключение не было зарегистрировано, то будет вызван стандартный обработчик исключений ОС, который завершит процесс.
Анализ предшествующего уровня техники и возможностей, которые появляются при комбинировании их в одной системе, позволяют получить новые результаты, а именно сокращение времени на эмуляцию файла путем загрузки необходимых образов состояния эмулятора, обход антиэмуляционных приемов при эмуляции файла путем загрузки необходимых образов состояния эмулятора для продолжения эмуляции в случае некорректного завершения эмуляции файла, загрузку необходимых образов состояния эмулятора для продолжения эмуляции в случае некорректного завершения эмуляции файла.
Раскрытие изобретения
Первый технический результат настоящего изобретения заключается в сокращении времени на эмуляцию файла путем загрузки необходимых образов состояния эмулятора.
Второй технический результат настоящего изобретения заключается в обходе антиэмуляционных приемов при эмуляции файла путем загрузки необходимых образов состояния эмулятора для продолжения эмуляции в случае некорректного завершения эмуляции файла.
Третий технический результат настоящего изобретения заключается в загрузке необходимых образов состояния эмулятора для продолжения эмуляции в случае некорректного завершения эмуляции файла.
Согласно одному из вариантов реализации, предлагается способ для эмуляции файлов, содержащий этапы на которых: получают файл на эмуляцию; проверяют, выполняется ли эмуляция в первый раз; определяют образ состояния эмулятора, который загружается в эмулятор для последующей эмуляции файла; производят эмуляцию файла; создают образы состояния эмулятора; проверяют некорректное завершение эмуляции файла; выбирают необходимый образ для продолжения эмуляции в случае некорректного завершения эмуляции файла; загружают выбранный образ для продолжения эмуляции файла.
В одном из частных вариантов реализации получают файл на эмуляцию по крайней мере в одном из следующих случаев: файл является неизвестным и требуется провести его эмуляцию для определения его возможной вредоносности; эмуляция необходима для определения всех возможных кодов ошибок; эмуляция необходима для исследования функционала приложения, когда необходимо определить какие используются системные вызовы, список необходимых сторонних библиотек.
В другом частном варианте реализации необходимым условием создания новых образов состояния эмулятора является, по меньшей мере, одно из следующих условий: ветвление в коде; применение антиэмуляционного приема; эмуляция определенного количества инструкций; периодическое создание образов через заданные промежутки времени.
В еще одном из частных вариантов реализации некорректное завершение эмуляции файла может быть, по меньшей мере, одним из: слишком быстрое завершение эмулируемого процесса; отсутствие необходимых библиотек; необработанное исключение.
В одном из частных вариантов реализации образы состояния эмулятора создаются в виде древовидной структуры, при этом переходы между образами строятся на основании условий созданий новых образов состояния эмулятора.
В другом частном варианте реализации загружают выбранный образ для продолжения эмуляции файла с изменениям состояния эмулятора.
В еще одном из частных вариантов реализации изменением состояния эмулятора может быть, по меньшей мере, одно из: переход в другую ветку кода при условном переходе; изменение статуса описателей ресурсов; откат сделанных ранее изменений; изменение значения выполненной функции.
Согласно одному из вариантов реализации, предлагается система для эмуляции файлов, содержащая средства: эмулятор, связанный со средство загрузки образов и средством создания образов, при этом эмулятор предназначен для получения файла, последующей эмуляции файла и проверки некорректного завершения эмуляции файла; средство загрузки образов, связанное с базой данных образов, при этом средство загрузки образов предназначено для определения и загрузки образа состояния эмулятора, который загружается в эмулятор для последующей эмуляции файла, в том числе и при некорректном завершении эмуляции файла; средство создания образов, связанное с базой данных образов, при этом средство создания образов предназначено для создания образов состояния эмулятора; база данных образов, предназначенная для хранения образов состояния эмулятора.
В одном из частных вариантов реализации эмулятор получает файл на эмуляцию по крайней мере в одном из следующих случаев: файл является неизвестным и требуется провести его эмуляцию для определения его возможной вредоносности; эмуляция необходима для определения всех возможных кодов ошибок; эмуляция необходима для исследования функционала приложения, когда необходимо определить какие используются системные вызовы, список необходимых сторонних библиотек.
В другом частном варианте реализации необходимым условием создания новых образов состояния эмулятора является по меньшей мере одно из следующих условий: ветвление в коде; применение антиэмуляционного приема; эмуляция определенного количества инструкций; периодическое создание образов через заданные промежутки времени.
В еще одном из частных вариантов реализации некорректное завершение эмуляции файла может быть по меньшей мере одним из: слишком быстрое завершение эмулируемого процесса; отсутствие необходимых библиотек; необработанное исключение.
В одном из частных вариантов реализации образы состояния эмулятора создаются в виде древовидной структуры, при этом переходы между образами строятся на основании условий созданий новых образов состояния эмулятора.
В другом частном варианте реализации загружают выбранный образ для продолжения эмуляции файла с изменениям состояния эмулятора.
В еще одном из частных вариантов реализации изменением состояния эмулятора может быть по меньшей мере одно из: переход в другую ветку кода при условном переходе; изменение статуса описателей ресурсов; откат сделанных ранее изменений; изменение значения выполненной функции.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг.1 отображает процесс загрузки операционной системы Windows.
Фиг.2 иллюстрирует способ работы настоящего изобретения.
Фиг.3 показывает древовидное представление хранения образов состояния эмулятора.
Фиг.4 иллюстрирует возможные образы состояния эмулятора в зависимости от загруженных процессов.
Фиг.5 отображает работу системы настоящего изобретения.
Фиг.6 показывает компьютерную систему общего назначения, на которой может быть реализовано настоящее изобретение.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.
Фиг.2 иллюстрирует способ работы настоящего изобретения. На этапе 201 происходит начало эмуляции файла. Вариантов, когда файл необходимо эмулировать, может быть несколько:
- Файл является неизвестным и требуется провести его эмуляцию для определения его возможной вредоносности;
- Эмуляция необходима для определения всех возможных кодов ошибок при выполнении эмуляции, например, инсталлятора приложения;
- Эмуляция необходима для исследования функционала приложения, когда необходимо определить какие используются системные вызовы, список необходимых сторонних библиотек и т.д.
На этапе 202 определяется, выполняется ли эмуляция в первый раз или нет. В том случае, если эмуляция происходит в первый раз, то на этапе 203 создается первоначальный образ состояния эмулятора, который включает минимально необходимый функционал ОС, описанный в рамках Фиг.1. Помимо инициализации функционала ОС, в эмулятор может быть загружен модуль для обнаружения вредоносного кода, состояние виртуальной файловой системы, реестра, дерево объектов. Различные образы состояния эмулятора могут включать в себя также загруженные в память процессы (например, процессы важных служб), открытые описатели ресурсов (например, файлов), процессы с потоками (например, эмулируемый исполняемый файл). Следовательно, образ представляет собой копию всех перечисленных объектов в памяти, хранить который предпочтительно в оперативной памяти для ускорения процедур сохранения и восстановления.
Если эмуляция производится уже не в первый раз (например, была произведена эмуляция другого файла ранее), то на этапе 204 происходит определение нужного образа состояния эмулятора, который загружается в эмулятор для последующей эмуляции файла на этапе 205. Определение нужного образа состояния эмулятора будет описано ниже.
При проведении эмуляции на этапе 206 определяется выполнение необходимых условий для создания новых образов состояния эмулятора. В качестве примеров подобных условий можно привести следующие события:
- Ветвления в коде (условные переходы).
- Определение с помощью сигнатуры применение возможного антиэмуляционного приема (например, это может быть вызов редко используемых API функций с последующей проверкой результата их исполнения).
- Эмуляция определенного количества инструкций.
- Периодическое создание образов через заранее заданные промежутки времени.
В дальнейшем на этапе 207 определяется, что завершилась ли эмуляция успешно или нет. Успешный результат на этапе 208 предполагает либо обнаружение вредоносного поведения при эмуляции исполняемого файла, либо завершение по истечению времени (или после выполнения определенного количества инструкций). Некорректное завершение процесса эмуляции предполагает слишком быстрое завершение эмулируемого процесса (возможное срабатывание одного из антиэмуляционных приемов), отсутствие необходимых библиотек, необработанное исключение, которое приводит к завершению процесса (это может быть связано с ошибками в программном коде). При некорректном завершении процесса эмуляции на этапе 209 происходит выбор необходимого образа для продолжения эмуляции (более подробно это раскрывается в рамках описания Фиг.3). На этапе 210 в эмулятор загружается необходимый образ и эмуляция заново продолжается на этапе 211, который переходит заново к этапу 206. Таким образом, подобный подход позволит корректно завершить эмуляцию даже тех исполняемых файлов, эмуляция которых при использовании стандартных методов эмуляции завершалась бы некорректно.
Фиг.3 показывает древовидное представление хранения образов состояния эмулятора. Подобная древовидная структура позволяет сохранять образы состояния эмулятора в зависимости от одного из условий:
- Загрузка в память образа исполняемого файла, который требуется проэмулировать. Откат к подобному образу позволяет начать заново эмуляцию исполняемого файла, по сути, “с чистого листа”.
- Загрузка в память необходимого процесса, например Internet Explorer. Использование данного образа позволит проводить эмуляцию возможных вредоносных файлов, которые требует для своего выполнения наличие запущенного процесса Internet Explorer (в адресное пространство которого возможно будет записан некоторый вредоносный код).
- Выполнение определенных действий при эмуляции кода исполняемого файла. Во время эмуляции могут происходить условные переходы, которые могут быть частью проверок для противодействия эмуляции (например, при неудачном выполнении определенных проверок эмулируемая программа просто завершит свое выполнение).
Рассмотрим, для примера, следующий вариант сохранения и загрузки образов состояния эмулятора. Например, образ №1 - это первоначальный образ Windows, который включает состояние системы сразу после загрузки. Условием №1 является загрузка в эмулятор исполняемого файла, который требуется проэмулировать на предмет наличия вредоносного кода. Таким образом, образ №2 отличается от образа №1 тем, что в память уже загружен эмулируемый процесс. Следовательно, условие создания образа определяет также определяет различие между образами (с учетом информации о количестве проэмулированных инструкций, вызванных функций, изменения описателей ресурсов и т.д.). В дальнейшем выполнение новых условий приводит к созданию новых образов. Например, ветвление в коде является условием №3 и приводит к созданию образа №4, который соответствует состоянию эмулятора до выполнения условного перехода в коде. Условием №4 может являться срабатывание антивирусной сигнатуры, которая указывает на возможное использование приемов антиэмуляции, что приведет к созданию образа №5. В дальнейшем, если на этапе 207 эмуляция исполняемого файла будет завершена некорректно, то обход по древовидной структуре сохраненных образов эмулятора позволит загрузить образ состояния эмулятора, который предшествовал некорректному завершению процесса эмуляции. При обходе такого дерева в поисках образа в первую очередь спускаются до того образа, в котором записано состояние эмулятора, предшествовавшее некорректному завершению процесса эмуляции. В случае если процесс эмуляции вновь завершается некорректно, то возможна загрузка изменения образа состояния эмулятора уровнем выше (т.е. еще более ранняя версия состояния эмулятора) вплоть до того состояния, когда в эмулятор был загружен эмулируемый файл. При этом если условия создания образов включали, например, условный переход, то при загрузке образа на соответствующем условии, переход будет осуществлен в другую ветку кода. Примером изменения состояния эмулятора могут быть:
- Переход в другую ветку кода при условном переходе.
- Изменение статуса описателей ресурсов (например, файлов). В таком случае возможно принудительно не закрывать открытые файлы или соединения.
- Откат сделанных ранее изменений. Примером может служить очистка буфера передачи данных или изменение ветки реестра.
- Изменение значения выполненной функции. Например, если при выполнении в результате эмуляции функции она возвращала значение FALSE, то можно принудительно изменить значение на TRUE.
Стоит отметить, что хранить образы состояния эмулятора целесообразнее всего в оперативной памяти для ускорения процедур сохранения и восстановления загруженных образов. Размер образа может варьироваться от нескольких десятков мегабайт (загруженная ОС) до нескольких сотен мегабайт или даже гигабайт в зависимости от загруженных процессов. Для экономии оперативной памяти часть образов можно хранить на диске или же использовать разницу (diff) между образами, которая может быть минимальной, если условия создания образов выполняются достаточно часто во время эмуляции.
Фиг.4 иллюстрирует возможные образы состояния эмулятора в зависимости от загруженных процессов. Например, в качестве образа №1 можно принять загруженную ОС, а последующие образы содержат различные загруженные процессы, например, процессы Java, .NET, Explorer, Outlook и т.д. Образы могут содержать и определенные наборы запущенных процессов, что может потребоваться для успешной эмуляции определенных файлов, имеющих ряд зависимостей. Например, для эмуляции неизвестного файла потребуется процесс виртуальной машины Java, в который будет загружен вредоносный код (эксплойт) с дальнейшим использованием уязвимости (возможно, неизвестной), при этом для дальнейшего выполнения вредоносного функционала могут требоваться сетевые службы Windows.
Фиг.5 отображает работу системы настоящего изобретения. При необходимости эмуляции неизвестного файла 501 используется эмулятор 503, который загружает необходимый образ с помощью средства 502 загрузки образов в эмулятор. Средство 502 определяет необходимый образ в базе данных образов 504 по критериям, описанным в рамках Фиг.3. В то же время эмулятор 503 может отправлять запрос на создание образа в средство 505 создания образов на основании одного из условий необходимости создания образов (также рассмотрено выше). В частном случае реализации, средство 505 хранит древовидную структуру образов состояния эмулятора, где переходы от одних узлов дерева к другим основаны на указанных условиях. Сама база данных 504 хранится в оперативной памяти компьютера, что является наиболее предпочтительным вариантом реализации.
Использование системы, приведенной на Фиг.5, позволяет решать ряд задач:
- Ускорять загрузку состояния эмулятора при эмуляции исполняемых файлов, так как загрузка образа в предпочтительном варианте реализации является операцией копирования в оперативной памяти;
- Определять возможные коды ошибок при последующем выполнении приложения (например, при запуске инсталлятора);
- Обходить возможные приемы антиэмуляции с целью выявления вредоносного функционала.
Фиг.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. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.

Claims (14)

1. Способ для эмуляции файлов, содержащий этапы, на которых:
а) получают файл на эмуляцию;
б) проверяют, выполняется ли эмуляция в первый раз;
в) определяют образ состояния эмулятора, включающий, по меньшей мере, образ эмулируемой системы, который загружается в эмулятор для последующей эмуляции файла;
г) производят эмуляцию файла;
д) создают образы состояния эмулятора, при этом каждый образ состояния эмулятора включает, по меньшей мере, образ эмулируемой системы;
е) проверяют некорректное завершение эмуляции файла;
ж) выбирают необходимый образ состояния эмулятора для продолжения эмуляции в случае некорректного завершения эмуляции файла;
з) загружают выбранный образ состояния эмулятора для продолжения эмуляции файла.
2. Способ по п. 1, в котором получают файл на эмуляцию по крайней мере в одном из следующих случаев:
- файл является неизвестным и требуется провести его эмуляцию для определения его возможной вредоносности;
- эмуляция необходима для определения всех возможных кодов ошибок;
- эмуляция необходима для исследования функционала приложения, когда необходимо определить, какие используются системные вызовы, список необходимых сторонних библиотек.
3. Способ по п. 1, в котором необходимым условием создания новых образов состояния эмулятора, при этом каждый образ состояния эмулятора включает, по меньшей мере, образ эмулируемой системы, является, по меньшей мере, одно из следующих условий:
- ветвление в коде;
- применение антиэмуляционного приема;
- эмуляция определенного количества инструкций;
- периодическое создание образов через заданные промежутки времени,
4. Способ по п. 1, в котором некорректное завершение эмуляции файла может быть, по меньшей мере, одним из:
- слишком быстрое завершение эмулируемого процесса;
- отсутствие необходимых библиотек;
- необработанное исключение.
5. Способ по п. 1, в котором образы состояния эмулятора создаются в виде древовидной структуры, при этом переходы между образами строятся на основании условий созданий новых образов состояния эмулятора, при этом каждый образ состояния эмулятора включает, по меньшей мере, образ эмулируемой системы.
6. Способ по п. 1, в котором загружают выбранный образ состояния эмулятора для продолжения эмуляции файла с изменением состояния эмулятора.
7. Способ по п. 6, в котором изменением состояния эмулятора может быть, по меньшей мере, одно из:
- переход в другую ветку кода при условном переходе;
- изменение статуса описателей ресурсов;
- откат сделанных ранее изменений;
- изменение значения выполненной функции.
8. Система для эмуляции файлов, содержащая средства:
а) эмулятор, связанный со средством загрузки образов и средством создания образов, при этом эмулятор предназначен для
получения файла, последующей эмуляции файла и проверки некорректного завершения эмуляции файла;
б) средство загрузки образов, связанное с базой данных образов, при этом средство загрузки образов предназначено для определения и загрузки образа состояния эмулятора, который загружается в эмулятор для последующей эмуляции файла, в том числе и при некорректном завершении эмуляции файла, при этом образ состояния эмулятора включает, по меньшей мере, образ эмулируемой системы;
в) средство создания образов, связанное с базой данных образов, при этом средство создания образов предназначено для создания образов состояния эмулятора, при этом образ состояния эмулятора включает, по меньшей мере, образ эмулируемой системы;
г) база данных образов, предназначенная для хранения образов состояния эмулятора, при этом образ состояния эмулятора включает, по меньшей мере, образ эмулируемой системы.
9. Система по п. 8, в которой эмулятор получает файл на эмуляцию по крайней мере в одном из следующих случаев:
- файл является неизвестным и требуется провести его эмуляцию для определения его возможной вредоносности;
- эмуляция необходима для определения всех возможных кодов ошибок;
- эмуляция необходима для исследования функционала приложения, когда необходимо определить, какие используются системные вызовы, список необходимых сторонних библиотек.
10. Система по п. 8, в которой необходимыми условиями создания новых образов состояния эмулятора, при этом каждый образ состояния эмулятора включает, по меньшей мере, образ эмулируемой системы, является по меньшей мере одно из следующих условий:
- ветвление в коде;
- применение антиэмуляционного приема;
- эмуляция определенного количества инструкций;
- периодическое создание образов через заданные промежутки времени.
11. Система по п. 8, в которой некорректное завершение эмуляции файла может быть по меньшей мере одним из:
- слишком быстрое завершение эмулируемого процесса;
- отсутствие необходимых библиотек;
- необработанное исключение.
12. Система по п. 8, в которой образы состояния эмулятора создаются в виде древовидной структуры, при этом переходы между образами строятся на основании условий созданий новых образов состояния эмулятора, при этом каждый образ состояния эмулятора включает, по меньшей мере, образ эмулируемой системы.
13. Система по п. 8, в которой загружают выбранный образ состояния эмулятора для продолжения эмуляции файла с изменением состояния эмулятора.
14. Система по п. 13, в которой изменением состояния эмулятора может быть по меньшей мере одно из:
- переход в другую ветку кода при условном переходе;
- изменение статуса описателей ресурсов;
- откат сделанных ранее изменений;
- изменение значения выполненной функции.
RU2013147291/08A 2013-10-24 2013-10-24 Система и способ сохранения состояния эмулятора и его последующего восстановления RU2553056C2 (ru)

Priority Applications (5)

Application Number Priority Date Filing Date Title
RU2013147291/08A RU2553056C2 (ru) 2013-10-24 2013-10-24 Система и способ сохранения состояния эмулятора и его последующего восстановления
US14/221,488 US9111096B2 (en) 2013-10-24 2014-03-21 System and method for preserving and subsequently restoring emulator state
DE202014011116.2U DE202014011116U1 (de) 2013-10-24 2014-04-03 System zum Bewahren und nachfolgenden Wiederherstellen eines Emulatorzustands
EP20140163292 EP2866167A1 (en) 2013-10-24 2014-04-03 System and method for preserving and subsequently restoring emulator state
US14/748,418 US9740864B2 (en) 2013-10-24 2015-06-24 System and method for emulation of files using multiple images of the emulator state

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2013147291/08A RU2553056C2 (ru) 2013-10-24 2013-10-24 Система и способ сохранения состояния эмулятора и его последующего восстановления

Publications (2)

Publication Number Publication Date
RU2013147291A RU2013147291A (ru) 2015-04-27
RU2553056C2 true RU2553056C2 (ru) 2015-06-10

Family

ID=52997074

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2013147291/08A RU2553056C2 (ru) 2013-10-24 2013-10-24 Система и способ сохранения состояния эмулятора и его последующего восстановления

Country Status (3)

Country Link
US (2) US9111096B2 (ru)
DE (1) DE202014011116U1 (ru)
RU (1) RU2553056C2 (ru)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2553056C2 (ru) * 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления
JP6791134B2 (ja) * 2015-06-16 2020-11-25 日本電気株式会社 分析システム、分析方法、分析装置及び、コンピュータ・プログラム
RU2634171C1 (ru) * 2016-12-12 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ выполнения кода интерпретатором
US10715526B2 (en) 2016-12-14 2020-07-14 Microsoft Technology Licensing, Llc Multiple cores with hierarchy of trust
US10416991B2 (en) * 2016-12-14 2019-09-17 Microsoft Technology Licensing, Llc Secure IoT device update
US10402273B2 (en) 2016-12-14 2019-09-03 Microsoft Technology Licensing, Llc IoT device update failure recovery
US9817675B1 (en) * 2017-01-31 2017-11-14 Hytrust, Inc. Methods and systems for attaching an encrypted data partition during the startup of an operating system
RU2659742C1 (ru) * 2017-08-17 2018-07-03 Акционерное общество "Лаборатория Касперского" Способ эмуляции исполнения файлов, содержащих инструкции, отличные от машинных
US10691800B2 (en) * 2017-09-29 2020-06-23 AO Kaspersky Lab System and method for detection of malicious code in the address space of processes
EP3926470B1 (en) 2020-06-19 2023-08-16 AO Kaspersky Lab Emulator and emulation method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU101235U1 (ru) * 2010-03-02 2011-01-10 Закрытое акционерное общество "Лаборатория Касперского" Система проверки на присутствие вредоносного программного обеспечения с изменяемыми настройками проверки

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4933956A (en) 1983-04-14 1990-06-12 Codex Corporation Simplified decoding of lattices and codes
US6067410A (en) 1996-02-09 2000-05-23 Symantec Corporation Emulation repair system
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US6338147B1 (en) * 1998-10-29 2002-01-08 International Business Machines Corporation Program products for performing checkpoint/restart of a parallel program
US6415436B1 (en) * 1998-12-11 2002-07-02 Hewlett-Packard Company Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
US6374207B1 (en) * 1999-02-10 2002-04-16 International Business Machines Corporation Methods, data structures, and computer program products for representing states of interaction in automatic host access and terminal emulation using scripts
US8805664B1 (en) * 2003-08-11 2014-08-12 The Mathworks, Inc. System and method for simulating branching behavior
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7403887B1 (en) * 2004-01-14 2008-07-22 Microsoft Corporation Emulated memory management
US20060155525A1 (en) * 2005-01-10 2006-07-13 Aguilar Maximino Jr System and method for improved software simulation using a plurality of simulator checkpoints
US7328145B2 (en) * 2005-04-05 2008-02-05 Cisco Technology, Inc. Method and system for emulation of an internetwork operating system device
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置
US7664626B1 (en) * 2006-03-24 2010-02-16 Symantec Corporation Ambiguous-state support in virtual machine emulators
US7962798B2 (en) * 2006-04-17 2011-06-14 The Trustees Of Columbia University In The City Of New York Methods, systems and media for software self-healing
US20080127114A1 (en) * 2006-11-28 2008-05-29 Amit Vasudevan Framework for stealth dynamic coarse and fine-grained malware analysis
US20080320594A1 (en) 2007-03-19 2008-12-25 Xuxian Jiang Malware Detector
US8011010B2 (en) 2007-04-17 2011-08-30 Microsoft Corporation Using antimalware technologies to perform offline scanning of virtual machine images
US8296119B2 (en) * 2007-11-05 2012-10-23 Cadence Design Systems, Inc. Saving and restarting discrete event simulations
US8370932B2 (en) * 2008-09-23 2013-02-05 Webroot Inc. Method and apparatus for detecting malware in network traffic
US9177144B2 (en) * 2008-10-30 2015-11-03 Mcafee, Inc. Structural recognition of malicious code patterns
US7673201B1 (en) * 2009-03-12 2010-03-02 Xilinx, Inc. Recovering a prior state of a circuit design within a programmable integrated circuit
US7603713B1 (en) 2009-03-30 2009-10-13 Kaspersky Lab, Zao Method for accelerating hardware emulator used for malware detection and analysis
US20110041179A1 (en) 2009-08-11 2011-02-17 F-Secure Oyj Malware detection
US8635395B2 (en) * 2009-09-14 2014-01-21 Vmware, Inc. Method of suspending and resuming virtual machines
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
US20110219449A1 (en) * 2010-03-04 2011-09-08 St Neitzel Michael Malware detection method, system and computer program product
US8898509B2 (en) * 2010-05-18 2014-11-25 Vmware, Inc. Policy-based checkpointing fault tolerance across remote virtual machines
US8832836B2 (en) 2010-12-30 2014-09-09 Verisign, Inc. Systems and methods for malware detection and scanning
US8418099B2 (en) 2011-03-08 2013-04-09 Oracle International Corporation Performance counters for integrated circuits
US20120246630A1 (en) * 2011-03-23 2012-09-27 Secure By Design System and Method for Automating Installation and Updating of Third Party Software
US9665266B2 (en) 2011-10-27 2017-05-30 Blackberry Limited Setting reminders from an instant messaging application
US9015025B2 (en) 2011-10-31 2015-04-21 International Business Machines Corporation Verifying processor-sparing functionality in a simulation environment
US9514507B2 (en) * 2011-11-29 2016-12-06 Citrix Systems, Inc. Methods and systems for maintaining state in a virtual machine when disconnected from graphics hardware
JP5991211B2 (ja) * 2012-05-25 2016-09-14 富士通株式会社 シミュレーション方法、およびシミュレーションプログラム
RU2514141C1 (ru) 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
RU2553056C2 (ru) * 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU101235U1 (ru) * 2010-03-02 2011-01-10 Закрытое акционерное общество "Лаборатория Касперского" Система проверки на присутствие вредоносного программного обеспечения с изменяемыми настройками проверки

Also Published As

Publication number Publication date
US20150294112A1 (en) 2015-10-15
RU2013147291A (ru) 2015-04-27
US20150121531A1 (en) 2015-04-30
US9740864B2 (en) 2017-08-22
DE202014011116U1 (de) 2017-12-07
US9111096B2 (en) 2015-08-18

Similar Documents

Publication Publication Date Title
RU2553056C2 (ru) Система и способ сохранения состояния эмулятора и его последующего восстановления
RU2637997C1 (ru) Система и способ обнаружения вредоносного кода в файле
RU2589862C1 (ru) Способ обнаружения вредоносного кода в оперативной памяти
RU2514141C1 (ru) Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
JP5978365B2 (ja) 仮想環境においてネットワークアクセス制御を行うシステムおよび方法
RU2653985C2 (ru) Способ и система обнаружения вредоносного программного обеспечения путем контроля исполнения программного обеспечения запущенного по сценарию
RU2691187C1 (ru) Система и способы аудита виртуальной машины
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
US9117079B1 (en) Multiple application versions in a single virtual machine
US9178900B1 (en) Detection of advanced persistent threat having evasion technology
EP2704004B1 (en) Computing device having a dll injection function, and dll injection method
JP2018041438A5 (ru)
RU2665911C2 (ru) Система и способ анализа файла на вредоносность в виртуальной машине
US8910155B1 (en) Methods and systems for injecting endpoint management agents into virtual machines
US9111089B1 (en) Systems and methods for safely executing programs
RU2514142C1 (ru) Способ повышения эффективности работы аппаратного ускорения эмуляции приложений
RU2724790C1 (ru) Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
RU2586576C1 (ru) Способ выполнения обращения к процедурам загрузочного драйвера
Vokorokos et al. Application security through sandbox virtualization
RU2649794C1 (ru) Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла
EP3926470B1 (en) Emulator and emulation method
RU2592383C1 (ru) Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти
RU2757409C1 (ru) Эмулятор и способ эмуляции
RU2679783C2 (ru) Способ создания сценария популярных событий активации
EP2866167A1 (en) System and method for preserving and subsequently restoring emulator state