Способ эмуляции исполнения файлов, содержащих инструкции, отличные от машинных Российский патент 2018 года по МПК G06F9/455 

Описание патента на изобретение RU2659742C1

Область техники

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

Уровень техники

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

При эмуляции исполнения файлов (например, исполняемых РЕ-файлов) важно формирование максимально полного журнала вызовов функций. Полнота такого журнала влияет, в частности, на качество обнаружения вредоносных файлов (например, уровень обнаружения, от англ. detection rate) при эмуляции их исполнения. При использовании в исполняемом файле типов данных или функций из динамических библиотек эмулятор выполняет ряд шагов загрузчика операционной системы (ОС), например для исполняемых файлов для ОС Windows эмулятор вносит изменения в секцию IAT (Import Address Table, от англ. таблица импортов) образа исполняемого файла, связанную с исправлением адресов функций, которые должны вызываться во время исполнения файла (соответственно, и при эмуляции исполнения тоже). Эмулятор сохраняет информацию, внесенную в IAT, о соответствии между адресами функций и их именами. Таким образом, при вызове некоторой функции во время эмуляции исполнения файла эмулятор определяет, что была вызвана некоторая библиотечная функция и изменяет журнал вызовов функций соответствующим образом.

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

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

Раскрытие изобретения

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

Технический результат настоящего изобретения заключается в осуществлении заявленного назначения.

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

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

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

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

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

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

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

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

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

В еще одном варианте реализации способа файл разделен на части фиксированного размера.

В другом варианте реализации способа размер части файла равняется 4 килобайтам.

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

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

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

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

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

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

Фиг. 1 иллюстрирует структурную схему системы эмуляции исполнения файлов.

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

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

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

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

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

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

Введем ряд определений и понятий, которые будут использоваться при описании вариантов осуществления изобретения.

Эмуляция - имитация функционирования одного устройства посредством другого устройства или устройств вычислительной машины, при которой имитирующее устройство воспринимает те же данные, выполняет ту же программу и достигает того же результата, что и имитируемое (ГОСТ 15971-90).

Эмуляция исполнения файла - имитация исполнения файла на одном устройстве посредством другого устройства или устройств вычислительной машины.

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

Образ файла - представление файла в рамках процесса эмуляции его исполнения, а именно набор данных, описывающих файл по меньшей мере с полнотой, необходимой для его исполнения (а также и эмуляции исполнения). При эмуляции исполнения файла средство эмуляции эмулирует исполнение инструкций образа этого файла. Инструкции файла могут быть формализованы в разном виде: как в виде машинных инструкций, таки и в виде промежуточного кода (инструкции MSIL или P-Code - иногда упоминаются как Р-код) или сценария (скрипта), такие инструкции являются машинными, инструкциями промежуточного кода и инструкциями сценариев соответственно.

Под средствами системы эмуляции исполнения файлов в настоящем изобретении понимаются реальные устройства, системы, компоненты, группы компонентов, реализованные с использованием аппаратных средств, таких как интегральные микросхемы (англ. application-specific integrated circuit, ASIC) или программируемые вентильные матрицы (англ. field-programmable gate array, FPGA) или, например, в виде комбинации программных и аппаратных средств, таких как микропроцессорная система и набор программных инструкций, а также на нейроморфных чипах (англ. neurosynaptic chips) Функциональность указанных средств системы может быть реализована исключительно аппаратными средствами, а также в виде комбинации, где часть функциональности средств системы реализована программными средствами, а часть аппаратными. В некоторых вариантах реализации часть средств, или все средства, могут быть исполнены на процессоре компьютера общего назначения (например, который изображен на Фиг. 3). При этом компоненты системы могут быть реализованы в рамках как одного вычислительного устройства, так и разнесены между несколькими, связанными между собой вычислительными устройствами.

На Фиг. 1 изображен пример системы эмуляции исполнения файлов, упомянутая система содержит средства и модули, которые могут быть использованы для реализации способа эмуляции исполнения файлов. Система эмуляции исполнения файлов содержит средство эмуляции 120, средство анализа 121, журнал эмуляции 130 и базу данных известных наборов инструкций 125. Средство эмуляции 120 связано со средством анализа 121 и журналом эмуляции 130. Средство анализа 121 связано с базой данных известных наборов инструкций 125. В одном из вариантов реализации средство анализа 121 входит в состав средства эмуляции 120.

Средство эмуляции 120 предназначено для эмуляции исполнения файла 110. В общем случае файлом 110 является файл, который содержит инструкции. В одном из вариантов реализации таким файлом является исполняемый файл формата РЕ (англ. portable executable), а инструкции, которые содержатся в файле, являются машинными инструкциями, которые могут быть исполнены процессором семейства х86, х86-64 или любым другим процессором, способным исполнять инструкции для процессоров указанных семейств. В еще одном варианте реализации файл 110 может содержать инструкции других видов, а также инструкции разного вида (например, машинные инструкции и инструкции промежуточного кода или скрипты, которые также иногда называют сценариями). Во время эмуляции исполнения файла 110 средством эмуляции 120 формируется журнал эмуляции 130, в который добавляются записи о том, эмуляция исполнения каких известных наборов инструкций (например, инструкций каких-либо WinAPI функций) была осуществлена. Такие записи могут быть добавлены в журнал эмуляции 130 как до начала эмуляции исполнения соответствующего набора инструкций, так и после эмуляции исполнения.

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

Для осуществления эмуляции исполнения (как было отмечено раньше, имитации исполнения файла 110 на одном устройстве, например, на электронном вычислительном устройстве, посредством другого устройства -средства эмуляции 120) файла 110 средство эмуляции 120 формирует образ файла 110. Образ файла является представлением файла, которое используется средством эмуляции 120 во время эмуляции исполнения файла 110.

В одном из вариантов реализации изобретения образом файла 110 является набор данных (который может быть представлен в виде одной или нескольких известных из уровня техники структур данных), содержащих информацию, необходимую для эмуляции его исполнения. Информация, необходимая для эмуляции исполнения файла 110, включает в себя служебную информацию, а также инструкции файла 110 (инструкции кода программы, содержащейся в файле 110). Примером служебной информации является информация о точке входа (например ее RVA) и другие данные из заголовка файла 110, содержимое таблицы импорта (IAT, import address table), информация о расположении секций файла 110, и пр. В одном из вариантов реализации изобретения служебной информацией также является набор инструкций (ограниченный либо количеством инструкций, например 100, или суммарным объемом в байтах, например равным размеру части файла 110), начинающийся с точки входа (англ. entry point). В одном из вариантов реализации для формирования образа файла 110 средство эмуляции 120 имитирует функции загрузчика операционной системы (ОС) при создании процесса в ОС. В таком случае формируемый образ файла 110 является представлением файла 110, аналогичным представлению в адресном пространстве процесса, который был бы создан из этого файла 110 средствами ОС.

Для формирования образа файла 110 средство эмуляции 120 считывает служебную информацию из файла 110. Формирование образа файла 110 также включает этап считывания из файла 110 и добавления в образ файла 110 инструкций файла 110. Считывание из файла 110 инструкций и добавление их в образ файла 110 осуществляется частями фиксированного размера 105. В одном из вариантов реализации размер части 105 выбирается таким образом, чтобы считать все инструкции файла 110 за один раз. В еще одном варианте реализации инструкции файла 110 считываются по частям 105 несколько раз по мере необходимости. В одном из вариантов реализации необходимость считывания очередной части 105 файла 110 появляется при обращении средства эмуляции 120 во время эмуляции исполнения инструкций (из образа файла 110 или образа другого файла) к инструкциям или данным, отсутствующим в образе файла 110 (то есть тем инструкциям, которые еще не были считаны из файла 110), например в результате выполнения инструкции условного перехода. В одном из вариантов реализации размер такой части 105 - 4 КБ. В еще одном варианте реализации изобретения в качестве размера такой части 105 принимается размер кластера на устройстве хранения данных, на котором хранится файла 110. Стоит отметить, что эмуляция исполнения инструкций из образа файла (уже присутствующих в образе) 110 возможна и при отсутствии в образе файла 110 еще не считанных инструкций (инструкций, находящихся в еще не считанных частях файла 110). В одном из вариантов реализации изобретения первой (и, возможно, единственной) частью файла 110, которая содержит инструкции файла 110 и считывается из файла 110, является часть файла 110, содержащую инструкцию, на которую указывает точка входа файла (англ. entry point).

После считывания части файла 110 средством эмуляции 120 средство анализа 121 осуществляет обнаружение в считанной части файла 110 известных наборов инструкций. Для поиска известных наборов инструкций средство анализа 121 использует сигнатуры (по меньшей мере одну), которые хранятся в базе данных известных функций 125. Соответственно, в одном из вариантов реализации каждому известному набору инструкций соответствует по меньшей мере одна сигнатура. В одном из вариантов реализации изобретения база данных 125 входит в состав средства анализа 121. Сигнатура может иметь вид последовательности байт, хеш-суммы или битовой/байтовой или любой другой маски и указывать на начало некоторого известного набора инструкций. В еще одном случае реализации сигнатура может быть любого из известных из уровня техники вида, в том числе и эвристического правила, применение которого к набору инструкций (или части инструкций) файла 110 позволяет обнаружить известный набор инструкций. Средство анализа 121 использует сигнатуры из базы данных известных наборов функций 125, с помощью которых оно обнаруживает начало известных наборов инструкций. Примерами известных наборов инструкций могут быть:

- подпрограммы статических библиотек;

- набор инструкции файла интерпретатора (например, библиотеки интерпретатора), предназначенных для обработки (интерпретации) инструкций сценариев или инструкций промежуточного кода;

- набор инструкций, затрудняющий эмуляцию исполнения файла (например, набор инструкций, выполнение которого осуществляет проверку реализацию некоторых WinAPI функций средством эмуляции 120 и завершает эмуляцию исполнения файла 110, если такие функции не реализованы, или увеличивает время эмуляции исполнения файла 110) - анти-эмуляционный набор инструкций.

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

Сигнатура известного набора инструкций может также содержать идентификатор, например символьное имя (например, «string_comparison») или контрольную сумму, который добавляется в запись об эмуляции исполнения известного набора инструкций, которая формируется во время эмуляции средством эмуляции 120 и передается впоследствии в журнал эмуляции 130.

После обнаружения известных наборов инструкций средством анализа 121 в считанной части файла 110, средство анализа 121 устанавливает в соответствующем образе файла 110 точки останова в начале известных наборов инструкций в образе файла 110. Точки останова устанавливаются в местах образа файла 110, которые добавлены в упомянутый образ путем считывания упомянутой части файла 110. Точки останова (англ. break point) необходимы средству эмуляции 120 для определения момента формирования записи об эмуляции исполнения известного набора инструкций и добавления этой записи в журнал эмуляции 130.

Средство эмуляции 120 осуществляет эмуляцию исполнения инструкций из образа файла 110. Как было упомянуто выше, в процессе эмуляции имитируется исполнение инструкций, в частности имитируется исполнение инструкций на реальном процессоре (физическом процессоре). В рамках эмуляции средство 120 формирует журнал эмуляции 130.

В одном из вариантов реализации средство 120 добавляет в журнал эмуляции 130 записи о вызове подпрограмм и инструкций (иными словами, исполняемого кода), которые содержатся в динамических библиотеках (например, тех, которые загружаются в адресное пространство процесса, запущенного из файла 110, при исполнении файла 110 на реальном электронном вычислительном устройстве). В одном из вариантов реализации такие записи добавляются в журнал эмуляции 130 при эмуляции исполнения инструкции вызова подпрограммы (например, на языке ассемблера это инструкция call), где в качестве адреса, по которому должны располагаться инструкции подпрограммы, указан адрес одной из записей IAT. Соответственно, в журнал эмуляции 130 добавляется запись о эмуляции известного набора инструкций - подпрограммы, на которую ссылается запись из IAT. В одном из вариантов реализации в такую запись дополнительно включается идентификатор известного набора инструкций, например символьное имя, такое как fwrite, GetProcAddress или другие.

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

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

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

В одном из вариантов реализации альтернативный набор инструкций, который соответствует некоторому известному набору инструкций, является оптимизированным набором инструкций: результат эмуляции исполнения (например, изменения состояния имитируемого устройства - ОЗУ, ПЗУ или значения регистров процессора) такого набора инструкций будет таким же, как и при эмуляции исполнения известного набора инструкций, но эмуляция исполнения такого альтернативного набора инструкций займет меньшее время или потребует меньшее количество оперативной памяти или регистров процессора. Эмуляция исполнения такого набора инструкций вместо известного набора инструкций позволит ускорить процесс эмуляции исполнения файла 110 и сократить время, в течение которого осуществляется эмуляция исполнения файла 110.

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

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

В еще одном варианте реализации средство эмуляции 120 дополнительно может формировать образы других файлов (выполняя все те же шаги, применимые к файлу 110). В одном из вариантов реализации изобретения такими файлами являются файлы, необходимые для эмуляции исполнения инструкций файла 110 - например, файлы динамических библиотек, которые могут быть использованы при исполнении (а, соответственно, и при эмуляции исполнения) инструкций файла 110, в том числе и файлы библиотек интерпретаторов инструкций файла 110, если файл 110 содержит не только машинные инструкции, но и инструкции другого вида (например, инструкции в виде скрипта, такой файл будем называть файлом, содержащим отличные от машинных инструкции). При этом инструкции таких файлов библиотек (а, соответственно и отдельные наборы инструкций) интерпретаторов используются для интерпретации инструкций, отличных от машинных. Средство эмуляции 120 осуществляет эмуляцию исполнения инструкций из образов других файлов, если была осуществлена передача управления (эмуляция передачи управления) от инструкции из образа файла 110 к инструкции в образе другого файла (например, путем вызова подпрограммы, инструкции которой находятся в образе другого файла, скажем, путем эмуляции исполнения инструкции call или jmp). Стоит отметить, что, формально, передача управления будет осуществлена только после того, как образ другого файла будет сформирован. В одном из вариантов реализации процесс эмуляции исполнения инструкций из образа файла 110 включает в себя эмуляцию исполнения инструкций из образа другого файла, соответственно при эмуляции исполнения инструкций из образа другого файла в журнал эмуляции 130 также добавляются записи о эмуляции известных наборов инструкций, которые содержатся в образе другого файла.

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

В одном из вариантов реализации изобретения файл, необходимый для эмуляции исполнения инструкций файла 110, - файл библиотеки интерпретатора инструкций файла 110. Примером файла такой библиотеки может быть файл msvbvm60.dll. В качестве примера можно привести следующий известный набор инструкций (дополненный кодом на языке ассемблера и именами некоторых адресов памяти) этого файла msvbvm60.dll из инструкций для реализации (иными словами, предназначенный для обработки - или интерпретации - отличных от машинных инструкций) подпрограммы промежуточного Р-кода, а именно LitStr:

Причем для такого известного набора инструкций в базе данных 125 будет храниться его идентификатор «push <constant string>», что означает, что при исполнении (а, следовательно, и при эмуляции исполнения) в стек будет помещен указатель на строку. При эмуляции исполнения такого набора инструкций средство эмуляции 120 добавит в журнал эмуляции 130 соответствующую запись с указанием идентификатора известного набора инструкций. Стоит отметить, что при эмуляции исполнения некоторого известного набора инструкций средство эмуляции 120 может добавлять в записи, которые включаются в журнал эмуляции, и другую информацию о ходе эмуляции: содержимое имитируемых регистров, аргументы вызываемых подпрограмм и т.п. При помощи вышеописанного способа решается техническая проблема - формирование журнала эмуляции для файлов, которые содержат инструкции в виде, отличном от вида машинных инструкций (иными словами, отличные от машинных инструкции), например инструкции в виде скриптов или в виде промежуточного кода. При этом такой способ эмуляции позволяет достичь технический результат в виде эмуляции исполнения файла, который содержит инструкции в виде, отличном от вида машинных инструкций, путем эмуляции исполнения файлов библиотек интерпретатора.

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

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

Фиг. 2а иллюстрирует вариант реализации способа эмуляции исполнения файла. На этапе 201 средство эмуляции формирует образ файла 110. Этот этап также включает в себя считывание части 105 файла 110. Далее, на этапе 202, средство анализа 121 обнаруживает по меньшей мере один известный набор инструкций в считанной средством эмуляции 120 части 105 файла 110. Обнаружение осуществляется при помощи сигнатур из базы данных известных наборов инструкций 125. На этапе 203 средство анализа 121 производит установку точек останова в сформированном образе файла 110 в местах (позициях), соответствующих началам всех обнаруженных известных наборов инструкций из считанной части 105 файла 110. После этого, на этапе 204, средство эмуляции 120 осуществляет эмуляцию исполнения инструкций из образа файла 110, при этом добавляя в журнал эмуляции 130 соответствующие записи об эмуляции исполнения известных наборов инструкций. Если на этапе 204 в процессе эмуляции исполнения инструкций из образа файла 110 возникает необходимость считать очередную часть 105 файла 110, средство эмуляции 120 считывает на этапе 205 очередную часть 105 файла 110, после чего повторяются этапы 202-205 (205 при необходимости). Средство эмуляции может остановить (завершить) процесс эмуляции исполнения файла 110 на этапе 206 (остановка может произойти в момент выполнения любого из этапов 202-205, переход указан пунктиром), например при истечении установленного времени эмуляции.

Фиг. 2б иллюстрирует еще один вариант реализации способа эмуляции исполнения файла. На этапе 221 средство эмуляции формирует образ файла 110. Этот этап также включает в себя считывание части 105 файла 110. Далее, на этапе 222, средство анализа 121 обнаруживает по меньшей мере один известный набор инструкций в считанной средством эмуляции 120 части 105 файла 110. Обнаружение осуществляется при помощи сигнатур из базы данных известных наборов инструкций 125. На этапе 223 средство анализа 121 производит установку точек останова в сформированном образе файла 110 в местах, соответствующих началам всех обнаруженных известных наборов инструкций из считанной части 105 файла 110. После этого, на этапе 224, средство эмуляции 120 осуществляет эмуляцию исполнения инструкций из образа файла 110, при этом добавляя в журнал эмуляции 130 соответствующие записи об эмуляции исполнения известных наборов инструкций. Если на этапе 224 в процессе эмуляции исполнения инструкций из образа файла 110 возникает необходимость считать очередную часть 105 файла 110, средство эмуляции 120 считывает на этапе 225 очередную часть 105 файла 110, после чего повторяются этапы 222-225 (225 при необходимости).

Если в процессе эмуляции исполнения инструкций из образа файла 110 появилась необходимость осуществить эмуляцию исполнения инструкции из образа другого файла, средство эмуляции 120 осуществляет формирование образа этого другого файла на этапе 228. Этап формирования образа другого файла 228 аналогичен этапу 221. После этого в отношении другого файла выполняются этапы 222-225. При этом при эмуляции исполнения инструкций из образа другого файла может также возникнуть необходимость эмуляции исполнения инструкции из образа еще одного файла. В таком случае этапы 228, 222-225 повторяются по аналогии с вышеописанным сценарием. Средство эмуляции может остановить (завершить) процесс эмуляции исполнения файла 110 на этапе 226 (остановка может произойти в момент выполнения любого из этапов 222-225, переход указан пунктиром), например при истечении установленного времени эмуляции.

В одном из вариантов реализации необходимость эмуляции исполнения инструкций из другого файла, а именно из образа другого файла, а, соответственно, и необходимость формирования образа другого файла, возникает, когда в файле 110, а соответственно и в образе этого файла 110, содержатся отличные от машинных инструкции, и появляется необходимость эмуляции исполнения инструкции из образа другого файла, который является файлом (библиотекой) интерпретатора, и эмуляция исполнения инструкций из такого образа файла необходима для интерпретации отличных от машинных инструкций в образе файла 110. Например в образе файла 110 присутствует CIL-код, а при эмуляции исполнения инструкций образа файла 110 средству эмуляции 120 необходимо осуществить эмуляцию вызова функции _coreexemain, возникает необходимость эмуляции исполнения инструкций другого образа файла, в частности образа файла MSCoreEE.dll, вследствие чего осуществляется передача управления из образа файла 110 среде исполнения .NET (образу файла MSCoreEE.dll). При возникновении такой необходимости средство эмуляции 120 формирует образ файла интерпретатора, в частности файла MSCoreEE.dll, и начинает эмуляцию исполнения инструкций из образа этого файла, при этом при эмуляции исполнения инструкций функции _coreexemain из образа файла MSCoreEE.dll будет осуществлена эмуляция инструкций, которые предназначены для интерпретации (обработки) CIL-кода из образа файла 110. И в одном из вариантов реализации изобретения известным набором инструкций является набор инструкций файла (библиотеки) интерпретатора (MSCoreEE.dll), а соответственно и инструкций образа такого файла, предназначенный для обработки (интерпретации) отличных от машинных инструкций (CIL-код), содержащихся в образе файла 110.

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

Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 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, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.

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

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

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

название год авторы номер документа
Способ эмуляции исполнения файлов 2017
  • Лискин Александр Викторович
  • Крылов Владимир Владимирович
RU2659734C1
Эмулятор и способ эмуляции 2020
  • Пинтийский Владислав Валерьевич
  • Аникин Денис Вячеславович
  • Кирсанов Дмитрий Александрович
  • Трофименко Сергей Владимирович
RU2757409C1
Способ обнаружения вредоносных исполняемых файлов, содержащих интерпретатор, посредством комбинирования эмуляторов 2015
  • Закоржевский Вячеслав Владимирович
  • Виноградов Дмитрий Валерьевич
  • Пинтийский Владислав Валерьевич
  • Кирсанов Дмитрий Александрович
RU2622627C2
СПОСОБ ЭМУЛЯЦИИ ВЫЗОВОВ СИСТЕМНЫХ ФУНКЦИЙ ДЛЯ ОБХОДА СРЕДСТВ ПРОТИВОДЕЙСТВИЯ ЭМУЛЯЦИИ 2012
  • Белов Сергей Юрьевич
RU2514141C1
СИСТЕМА И СПОСОБ ФОРМИРОВАНИЯ ЗАПИСЕЙ ДЛЯ ОБНАРУЖЕНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 2012
  • Головкин Максим Юрьевич
RU2491615C1
СИСТЕМА И СПОСОБ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ СИСТЕМНЫХ ОШИБОК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 2012
  • Антух Александр Эдуардович
  • Маланов Алексей Владимирович
RU2521265C2
Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла 2017
  • Пинтийский Владислав Валерьевич
  • Аникин Денис Вячеславович
  • Кобычев Денис Юрьевич
  • Головкин Максим Юрьевич
  • Бутузов Виталий Владимирович
  • Карасовский Дмитрий Валериевич
  • Кирсанов Дмитрий Александрович
RU2649794C1
Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине 2018
  • Монастырский Алексей Владимирович
  • Павлющик Михаил Александрович
  • Пинтийский Владислав Валерьевич
  • Аникин Денис Вячеславович
  • Кирсанов Дмитрий Александрович
RU2724790C1
СИСТЕМА И СПОСОБ СРАВНЕНИЯ ФАЙЛОВ НА ОСНОВЕ ШАБЛОНОВ ФУНКЦИОНАЛЬНОСТИ 2009
  • Василенко Роман Сергеевич
RU2427890C2
Система и способ анализа файла на вредоносность в виртуальной машине 2017
  • Пинтийский Владислав Валерьевич
  • Аникин Денис Вячеславович
  • Кобычев Денис Юрьевич
  • Головкин Максим Юрьевич
  • Бутузов Виталий Владимирович
  • Карасовский Дмитрий Валериевич
  • Кирсанов Дмитрий Александрович
RU2665911C2

Иллюстрации к изобретению RU 2 659 742 C1

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

Изобретение относится к области эмуляции исполнения файлов. Техническим результатом является эмуляция исполнения файлов, содержащих инструкции, отличные от машинных. Раскрыт способ эмуляции исполнения файла, содержащего отличные от машинных инструкции, реализуемый электронным вычислительным устройством, в котором: a) формируют образ файла при помощи средства эмуляции путем считывания части файла, при этом файл содержит отличные от машинных инструкции; b) эмулируют при помощи средства эмуляции исполнение инструкций из образа файла; c) формируют при помощи средства эмуляции образ другого файла, если была осуществлена передача управления от инструкции из образа файла к инструкции в другом файле, путем считывания части другого файла, при этом формирование образа другого файла осуществляется путем считывания части другого файла; d) обнаруживают при помощи средства анализа в считанной части другого файла по меньшей мере один известный набор инструкций, при этом известным набором инструкций является набор инструкций, предназначенный для обработки отличных от машинных инструкций, содержащихся в файле, образ которого был сформирован на этапе а; e) устанавливают при помощи средства анализа точки останова в начале по меньшей мере одного обнаруженного известного набора инструкций в образе другого файла; f) эмулируют при помощи средства эмуляции исполнение инструкций из образа другого файла, при этом при достижении средством эмуляции точки останова в журнал эмуляции добавляется запись о эмуляции исполнения известного набора инструкций, в начале которого установлена упомянутая точка останова. 13 з.п. ф-лы, 4 ил.

Формула изобретения RU 2 659 742 C1

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

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

b) эмулируют при помощи средства эмуляции исполнение инструкций из образа файла;

c) формируют при помощи средства эмуляции образ другого файла, если была осуществлена передача управления от инструкции из образа файла к инструкции в другом файле, путем считывания части другого файла, при этом формирование образа другого файла осуществляется путем считывания части другого файла;

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

e) устанавливают при помощи средства анализа точки останова в начале по меньшей мере одного обнаруженного известного набора инструкций в образе другого файла;

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

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

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

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

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

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

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

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

9. Способ по п. 1, в котором файл разделен на части фиксированного размера.

10. Способ по п. 9, в котором размер части файла равняется 4 килобайтам.

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

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

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

14. Способ по п. 13, в котором альтернативным набором инструкций является оптимизированный набор инструкций, соответствующий упомянутому набору инструкций.

Документы, цитированные в отчете о поиске Патент 2018 года RU2659742C1

US 7779472 B1, 17.08.2010
US 9355246 B1, 31.05.2016
US 8151352 B1, 03.04.2012
СИСТЕМА И СПОСОБ ОБНАРУЖЕНИЯ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 2010
  • Зайцев Олег Владимирович
RU2430411C1

RU 2 659 742 C1

Авторы

Лискин Александр Викторович

Крылов Владимир Владимирович

Даты

2018-07-03Публикация

2017-08-17Подача