Способ эмуляции исполнения файлов
Иллюстрации
Показать всеИзобретение относится к области компьютерной техники. Техническим результатом является эмуляция исполнения файлов. Раскрыт способ эмуляции исполнения файла, реализуемый электронным вычислительным устройством, в котором: a. формируют образ файла при помощи средства эмуляции путем считывания части файла; b. обнаруживают при помощи средства анализа в считанной части файла по меньшей мере один известный набор инструкций; c. устанавливают при помощи средства анализа точки останова в начале по меньшей мере одного обнаруженного известного набора инструкций в образе файла; d. эмулируют при помощи средства эмуляции исполнение инструкций из образа файла, при этом при достижении средством эмуляции точки останова в журнал эмуляции добавляется запись о эмуляции исполнения известного набора инструкций, в начале которого установлена упомянутая точка останова. 11 з.п. ф-лы, 4 ил.
Реферат
Область техники
Изобретение относится к области эмуляции исполнения файлов, а именно к способам эмуляции исполнения файлов.
Уровень техники
В настоящий момент существует большое разнообразие средств для разработки исполняемых файлов. Часто при разработке программного обеспечения, в частности при создании исполняемых файлов, используются интегрированные среды разработки, ИСР (англ. IDE - Integrated Development Environment). Такие среды разработки могут содержать библиотеки -программные модули, которые содержат в том числи наборы функций и типов данных, которые могут быть использованы разработчиком при создании исполняемых файлов с помощью упомянутой среды разработки. Для использования таких библиотек применяется либо статическое, либо динамическое связывание (соответственно, библиотека считается либо статической, либо динамической). При статическом связывании исполняемый код (инструкции) библиотеки добавляется непосредственно в создаваемый исполняемый файл на этапе компоновки. При динамическом же связывании исполняемый код библиотеки загружается в адресное пространство процесса, созданного из созданного исполняемого файла, код которого использует указанную динамическую библиотеку, во время исполнения процесса.
При эмуляции исполнения файлов (например, исполняемых РЕ-файлов) важно формирование максимально полного журнала вызовов функций. Полнота такого журнала влияет, в частности, на качество обнаружения вредоносных файлов (например, уровень обнаружения, от англ. detection rate) при эмуляции их исполнения. При использовании в исполняемом файле типов данных или функций из динамических библиотек эмулятор выполняет ряд шагов загрузчика операционной системы (ОС), например для исполняемых файлов для ОС Windows эмулятор вносит изменения в секцию IAT (Import Address Table, от англ. таблица импортов) образа исполняемого файла, связанную с исправлением адресов функций, которые должны вызываться во время исполнения файла (соответственно, и при эмуляции исполнения тоже). Эмулятор сохраняет информацию, внесенную в IAT, о соответствии между адресами функций и их именами. Таким образом, при вызове некоторой функции во время эмуляции исполнения файла эмулятор определяет, что была вызвана некоторая библиотечная функция и изменяет журнал вызовов функций соответствующим образом.
При эмуляции же исполнения файлов, которые используют функции, описанные в статической библиотеке, никакой информации о таких функциях в IAT не хранится, в связи с чем возникает проблема журналирования (записи в журнал вызовов функций) библиотечных функций из статических библиотек, так как в момент эмуляции исполнения файла эмулятор не обладает информацией о том, где в адресном пространстве образа файла находится код той или иной библиотечной функции.
В уровне техники известны подходы к эмуляции исполнения файлов, один из которых, например, описан в публикации US 5574927 A. Данный способ осуществляет эмулирование исполнения инструкций, предназначенных для некоторого процессора, на RISC процессоре, и выполняется при помощи синтаксического анализа набора инструкций из файла, исполнение которого эмулируется, и последующей трансляции этих инструкций в RISC инструкции. Однако упомянутый подход не позволит оптимизировать процесс эмуляции исполнения такого файла, например ускорить этот процесс, а также не решит описанную выше проблему журналирования библиотечных функций из статических библиотек.
Раскрытие изобретения
Настоящее изобретение предназначено для эмуляции исполнения файлов.
Технический результат настоящего изобретения заключается в осуществлении заявленного назначения.
Дополнительный технический результат настоящего изобретения заключается в уменьшении времени, в течение которого эмулируется исполнение файла, которое достигается за счет эмуляции исполнения альтернативного набора инструкций средством эмуляции вместо инструкций из известного набора инструкций, при этом альтернативным набором инструкций является оптимизированный набор инструкций, соответствующий упомянутому набору инструкций.
Способ эмуляции исполнения файла, реализуемый электронным вычислительным устройством, в котором: формируют образ файла при помощи средства эмуляции путем считывания части файла; обнаруживают при помощи средства анализа в считанной части файла по меньшей мере один известный набор инструкций; устанавливают при помощи средства анализа точки останова в начале по меньшей мере одного обнаруженного известного набора инструкций в образе файла; эмулируют при помощи средства эмуляции исполнение инструкций из образа файла, при этом при достижении средством эмуляции точки останова в журнал эмуляции добавляется запись о эмуляции исполнения известного набора инструкций, в начале которого установлена упомянутая точка останова.
В одном из вариантов реализации способа обнаружение известного набора инструкций осуществляется с использованием по меньшей мере одной сигнатуры известного набора инструкций.
В еще одном из вариантов реализации способа на этапе эмулирования при необходимости считывают при помощи средства эмуляции очередную часть файла для обновления образа файла и повторяют шаги предыдущие шаги.
В другом варианте реализации способа необходимость считывания очередной части файла появляется при обращении средства эмуляции во время эмуляции исполнения инструкций к инструкциям или данным, отсутствующим в образе файла.
В еще одном из вариантов реализации способа процесс эмуляции останавливается по меньшей мере при следующих условиях: истечение установленного времени эмуляции, эмуляция исполнения инструкции для вызова прерывания или функции завершения исполнения.
В другом варианте реализации способа файл разделен на части фиксированного размера.
В еще одном из вариантов реализации способа размер части файла равняется 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, переход указан пунктиром), например при истечении установленного времени эмуляции.
Фиг. 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. Пользователь имеет возможность вводить команды и инф