эвристический способ анализа кода

Классы МПК:G06F21/00 Устройства защиты компьютеров или компьютерных систем от несанкционированной деятельности
Автор(ы):
Патентообладатель(и):АВГ ТЕКНОЛОДЖИЗ СЗ, С.Р.О. (CZ)
Приоритеты:
подача заявки:
2009-08-28
публикация патента:

Изобретение относится к области идентификации и анализу данных, передаваемых через сеть связи, а более конкретно к идентификации, обнаружению и анализу наносящего вред или злоумышленного программного обеспечения или данных. Технический результат заключается в повышении точности обнаружения вредоносных программ и сокращении временных затрат для запуска программы в безопасном окружении. Технический результат достигается за счет способа, который включает в себя анализ программы, содержащей последовательность программных инструкций, определение того, удовлетворяет или нет каждая инструкция в последовательности какой-либо группе критериев подозрительности, назначение количественного показателя на уровне инструкций каждой инструкции, которая удовлетворяет любому из критериев подозрительности, суммирование количественных показателей на уровне инструкций для каждой инструкции, чтобы давать в результате количественный показатель на уровне программы, определение того, превышает или нет количественный показатель на уровне программы пороговое значение, и, если количественный показатель на уровне программы превышает пороговое значение, создание сообщения, указывающего результат обнаружения вредоносных программ. 3 н. и 14 з.п. ф-лы, 4 ил. эвристический способ анализа кода, патент № 2526716

эвристический способ анализа кода, патент № 2526716 эвристический способ анализа кода, патент № 2526716 эвристический способ анализа кода, патент № 2526716 эвристический способ анализа кода, патент № 2526716

Формула изобретения

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

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

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

определяют, посредством упомянутого процессора, удовлетворяет ли каждая инструкция в последовательности какому-либо критерию из группы критериев подозрительности;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

анализируют, посредством упомянутого процессора, каждую программную инструкцию в упомянутой последовательности,

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

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

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

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

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

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

10. Способ по п.9, в котором критерии подозрительности содержат определение, приводит ли инструкция к преобразованию данных.

11. Способ по п.9, в котором критерии подозрительности содержат определение, принадлежит ли инструкция группе инструкций, которые совместно не приводят к преобразованию данных после того, как группа инструкций выполняет операцию.

12. Способ по п.9, в котором критерии подозрительности содержат определение, приводит ли инструкция к переходу к другой инструкции.

13. Способ по п.9, в котором критерии подозрительности содержат определение, имеют ли по меньшей мере две последовательные инструкции идентичный смысл.

14. Способ по п.9, в котором критерии подозрительности содержат определение, устанавливает ли инструкция флаг, который не используется какой-либо другой инструкцией.

15. Способ по п.9, в котором критерии подозрительности содержат определение, приводит ли инструкция к значимому циклическому сдвигу данных.

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

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

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

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

определение, приводит ли инструкция к преобразованию данных,

определение, приводит ли инструкция к переходу к другой инструкции, и

определение, имеют ли по меньшей мере две последовательные инструкции идентичный смысл;

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

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

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

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

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

Описание изобретения к патенту

ПЕРЕКРЕСТНАЯ ССЫЛКА РОДСТВЕННЫЕ ЗАЯВКИ

Данная заявка притязает на приоритет заявки на патент (США) № 12/548747, поданной 27 августа 2009 года, которая притязает на приоритет предварительной заявки (США) № 61/092602, поданной 28 августа 2008 года.

C-E. НЕПРИМЕНИМО

УРОВЕНЬ ТЕХНИКИ

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

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

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

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

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

Эвристический анализ может предоставлять несколько преимуществ. Он работает независимо от того, анализировалась или нет анализируемая программа ранее. Он также может распознавать новые вирусы и программы-"трояны". Тем не менее, также имеются некоторые недостатки. Они включают в себя следующее:

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

2) Необходимость большого количества времени. Очень много времени отнимает то, чтобы запускать программу в безопасном окружении, в котором можно быть уверенным, что вред не будет нанесен.

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

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

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

Фиг.1 иллюстрирует примерный код, связанный с технически чистой программой;

Фиг.2 иллюстрирует примерный код, связанный со злоумышленной программой;

Фиг.3 иллюстрирует примерный процесс обнаружения вредоносных программ;

Фиг.4 иллюстрирует примерное вычислительное устройство для реализации процесса, описанного на фиг.3.

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

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

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

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

Фиг.1 иллюстрирует то, как может выглядеть примерная последовательность программных инструкций, создаваемых в официальном инструментальном средстве, в этом примере, Microsoft Visual C++ 6.0. Код, показанный на фиг.1A, является известной и безопасной программой WGET.EXE. Код WGET.EXE является технологически чистым и не имеет бесполезных или нелогичных операций.

В отличие от технически чистого кода, показанного на фиг.1, фиг.2 иллюстрирует полную противоположность, пример злоумышленной троянской программы-червя. Инструкции содержащиеся в троянской программе-черве, которые не имеют абсолютно никакого смысла в рамках данного контекста, т.е. их единственное предназначение состоит в том, чтобы блокировать анализ кода, и, следовательно, обнаружение кода как вредоносных программ отображается в другой штриховке (например, строки 1314555A и 1314555D).

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

Фиг.3 иллюстрирует примерный процесс 300 для эвристического анализа и обнаружения вредоносных программ. Первоначально, процесс загружает каждую последовательность программных инструкций, анализирует 302 одну из программных инструкций, включенных в программу. В зависимости от процесса или программного обеспечения для анализа либо операционного окружения программного обеспечения для анализа, каждая инструкция последовательности может загружаться по отдельности, или модуль, включающий в себя несколько инструкций, может загружаться сразу для анализа 302. Аналогично, одна инструкция может анализироваться за один раз или, на основе доступных ресурсов, несколько инструкций могут анализироваться одновременно. В целях простоты, в примерном процессе 300 одна инструкция анализируется за один раз.

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

1) Выполняет или нет фактически анализируемая инструкция некоторое действие. Например, если содержимое 32-битового регистра циклически сдвигается на 32 бита, данные должны оставаться неизменными. Система балльной оценки отмечает этот факт и "налагает" на такую инструкцию соответствующее число штрафов. Штрафом может быть отрицательный количественный показатель или им может быть назначенная система числовой балльной оценки, в которой общие количественные показатели, которые превышают заранее определенный уровень, предположительно указывают наличие вредоносных программ.

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

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

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

5) Задан или нет некоторый конкретный флаг, который дополнительно не используется, или он установлен независимо еще раз. Например, если сравнение выполняется, и затем другое сравнение выполняется, результат второго сравнения перезаписывает первый результат. Эта инструкция также штрафуется.

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

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

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

Если анализ определяет 306, что инструкция не нарушает конкретный критерий, или если инструкция нарушила критерий, и количественный показатель на уровне инструкций обновлен 308, процесс может определять 310 то, имеются или нет дополнительные критерии подозрительности, с которыми следует сравнивать 304 инструкцию. Если имеются дополнительные критерии, инструкция дополнительно сравнивается 304 и анализируется, возможно, приводя к еще одному обновлению 308 количественного показателя на уровне инструкций. Наоборот, если нет дополнительных критериев, с которыми следует сравнивать 304 инструкцию, общий количественный показатель на уровне инструкций может быть определен 312 для анализируемой инструкции.

Определение 314 может выполняться относительно того, имеются или нет дополнительные инструкции для анализа 302. Если имеются дополнительные инструкции в последовательности инструкций, процесс возвращается, чтобы анализировать 302 и сравнивать 304 дополнительные инструкции с критериями подозрительности. После того, как все инструкции проанализированы 302, сравнены 304, и все количественные показатели на уровне инструкций определены 312, общий количественный показатель для программы может быть суммирован 316. Это суммирование 316 может быть просто прибавлением каждого из количественных показателей на уровне инструкций или может включать в себя различные множители на основе числа отдельных критериев, которые нарушает программа. На основе этой суммы 316, программа определяется 318 либо как безопасная, либо как злоумышленная. Это определение 318 может быть основано на сравнении с похожей программой, кодированной посредством официального инструментального средства, к примеру, с кодом, проиллюстрированным на фиг.1. Это определение 318 также может быть основано исключительно на анализе количественного показателя программы и приемлемого порогового значения, установленного посредством анализирующей программы для идентификации вредоносных программ, т.е. если количественный показатель превышает определенное значение, программа идентифицируется как злоумышленная. После идентификации, может создаваться сообщение, указывающее результаты определения 318, и, в зависимости от приложения, дополнительный анализ программы может выполняться.

Фиг.4 иллюстрирует блок-схему примерных внутренних аппаратных средств, которые могут использоваться для того, чтобы содержать или реализовывать программные инструкции, такие как процесс обнаружения вредоносных программ, описанный на фиг.3. Шина 400 может выступать в качестве главной информационной магистрали, соединяющей другие проиллюстрированные компоненты аппаратных средств. CPU 405 может быть центральным процессором системы, выполняющим вычисления и логические операции, требуемые для того, чтобы выполнять программу. Постоянное запоминающее устройство (ROM) 410 и оперативное запоминающее устройство (RAM) 415 могут составлять примерные запоминающие устройства.

Контроллер 420 может взаимодействовать с одним или более необязательных запоминающих устройств 425 для системной шины 400. Эти запоминающие устройства 425 могут включать в себя, например, внешний или внутренний накопитель на DVD, накопитель на CD-ROM, жесткий диск, флэш-память, USB-флэш-память и т.п. Как указано ранее, эти различные накопители и контроллеры являются необязательными устройствами.

Программные инструкции могут сохраняться в ROM 410 и/или RAM 415. Необязательно, программные инструкции могут сохраняться на материальном машиночитаемом носителе, таком как компакт-диск, цифровой диск, флэш-память, карта памяти, USB-флэш-память, носитель хранения данных на оптических дисках, такой как диск Blu-Rayэвристический способ анализа кода, патент № 2526716 и/или другой носитель записи.

Необязательный интерфейс 430 дисплея может разрешать отображение информации из шины 400 на дисплее 435 в аудио-, видео-, графическом или буквенно-цифровом формате. Связь с внешними устройствами может осуществляться с использованием различных портов 440 связи. Примерный порт 440 связи может соединяться с сетью связи, такой как Интернет или сеть intranet.

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

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

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

Класс G06F21/00 Устройства защиты компьютеров или компьютерных систем от несанкционированной деятельности

способ защищенной связи в сети, устройство связи, сеть и компьютерная программа для этого -  патент 2528078 (10.09.2014)
способ обезвреживания вредоносных программ, блокирующих работу пк, с использованием отдельного устройства для активации пользователем процедуры противодействия вредоносному программному обеспечению -  патент 2527738 (10.09.2014)
способ разрушения интегральных схем памяти носителей информации -  патент 2527241 (27.08.2014)
способ многоканального приема и передачи информации по безопасности мореплавания -  патент 2527189 (27.08.2014)
навигационная система -  патент 2526740 (27.08.2014)
способ обеспечения безопасности информационных потоков в защищенных информационных системах с мандатным и ролевым управлением доступом -  патент 2525481 (20.08.2014)
управление аутентификацией пользователя -  патент 2524868 (10.08.2014)
интегральная микросхема, аппарат для обработки информации, способ управления модулем программного обеспечения, система обработки информации, способ обработки информации и программа -  патент 2524862 (10.08.2014)
устройство защиты от несанкционированного доступа к информации -  патент 2524859 (10.08.2014)
способ и устройство для получения ключа безопасности в ретрансляционной системе -  патент 2523954 (27.07.2014)
Наверх