RU2553056C2 - Система и способ сохранения состояния эмулятора и его последующего восстановления - Google Patents
Система и способ сохранения состояния эмулятора и его последующего восстановления Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test 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, в которой изменением состояния эмулятора может быть по меньшей мере одно из:
- переход в другую ветку кода при условном переходе;
- изменение статуса описателей ресурсов;
- откат сделанных ранее изменений;
- изменение значения выполненной функции.
- переход в другую ветку кода при условном переходе;
- изменение статуса описателей ресурсов;
- откат сделанных ранее изменений;
- изменение значения выполненной функции.
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU101235U1 (ru) * | 2010-03-02 | 2011-01-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система проверки на присутствие вредоносного программного обеспечения с изменяемыми настройками проверки |
Family Cites Families (37)
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 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ сохранения состояния эмулятора и его последующего восстановления |
-
2013
- 2013-10-24 RU RU2013147291/08A patent/RU2553056C2/ru active
-
2014
- 2014-03-21 US US14/221,488 patent/US9111096B2/en active Active
- 2014-04-03 DE DE202014011116.2U patent/DE202014011116U1/de not_active Expired - Lifetime
-
2015
- 2015-06-24 US US14/748,418 patent/US9740864B2/en active Active
Patent Citations (1)
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 |