Способ перевызова оригинальной функции после ее перехвата с сохранением стека параметров



Способ перевызова оригинальной функции после ее перехвата с сохранением стека параметров
Способ перевызова оригинальной функции после ее перехвата с сохранением стека параметров
Способ перевызова оригинальной функции после ее перехвата с сохранением стека параметров
Способ перевызова оригинальной функции после ее перехвата с сохранением стека параметров
Способ перевызова оригинальной функции после ее перехвата с сохранением стека параметров
Способ перевызова оригинальной функции после ее перехвата с сохранением стека параметров

 


Владельцы патента RU 2546588:

Закрытое акционерное общество "Лаборатория Касперского" (RU)

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

 

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

Изобретение относится к антивирусным решениям, а более конкретно - к способам перехвата функций, вызываемых из запущенного приложения.

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

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

Современные браузеры предназначены уже не только для отображения статичных веб-страниц, как в случае первого браузера NCSA Mosaic, но для предоставления полноценного интерфейса между пользователем и современным веб-сайтом. Современные браузеры поддерживают такие веб-стандарты и технологии, как CSS3, HTML5, Java, Javascript, RSS и другие. Богатый набор технологий позволяет отобразить в браузере самые различные интерактивные элементы, позволяя улучшить восприятие информации пользователем, однако этот же фактор порождает серьезные недостатки в информационной безопасности.

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

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

Другой подход заключается в перехвате функций самого приложения (в данном случае браузера), которые вызываются при выполнении, например, сценария на веб-странице (т.е. подход направлен на перехват работы, например, того же интерпретатора Javascript для браузера). Такой подход требует анализа кода приложения, например, с помощью дизассемблирования в том случае, если отсутствует документация по функциям приложения или библиотеки, что характерно для проприетарного программного обеспечения. Обнаружив необходимые функции, можно встроить в них перехватчики, которые будут передавать необходимые параметры (с которыми была вызвана оригинальная функция) для анализа антивирусному приложению. Результатом подобного перехватчика может быть следующее:

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

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

- параметры не были распознаны корректно.

Поясним, что означает, что параметры, с которыми была вызвана оригинальная функция, не были распознаны корректно. Обратимся к Фиг.1, на которой отображен стек, в котором сохраняются параметры при вызове функций во время выполнения приложения. При вызове функции на стеке сохраняются все необходимые параметры (на Фиг.1 отмечено как стековые кадры (фреймы) 100a, 100b) и адреса возврата (A, B…), однако в функции-перехватчике точно указать, какие параметры были переданы при вызове оригинальной функции (вызываемой с неизвестным числом параметров), можно будет лишь при ручной отладке приложения, что не позволит применять подобный подход при автоматическом анализе вызываемых функций. Например, если в область памяти 100b был записан ряд переменных (при этом они могут иметь различные типы: строки, целые числа, числа с плавающей запятой), то лишь с помощью ручного анализа можно будет корректно распознать все параметры. Современные языки сценариев (такие как Javascript) не используют строгой типизации переменных, т.е. при вызове различных функций (например, document.write или document.eval) может быть передано различное количество параметров различных типов, что лишь усугубляет проблему анализа передаваемых параметров функций. После этого можно будет создать анализатор вызываемых параметров для конкретной функции в приложении, однако при обновлении приложения может снова потребоваться ручной анализ, что повышает ресурсоемкость данного подхода. Например, в патенте US 7500230 описывается метод статического анализа программного кода, в частности производится перевод низкоуровневых операций со стеком в более высокоуровневые путем определения количества передаваемых параметров и их типов.

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

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

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

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

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

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

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

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

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

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

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

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

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

Фиг.4 отображает способ работы настоящего изобретения.

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

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

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

Фиг.2a иллюстрирует приложение 200, в частности браузер, которое имеет ряд функций, вызываемых при его исполнении. В случае браузера многие функции будут вызываться при исполнении сценариев, таких как Javascript или VBScript. Для проверки выполнения возможно вредоносных сценариев требуется осуществить перехват данных функций, например функций foo2(param1, param2, param3,…) и foo3(param1, param2, param3,…). Стоит отметить, что приведенное в данном описании и на чертежах количество вызываемых параметров может быть различным в зависимости от контекста вызова (т.е. функция foo2 может быть вызвана как с одним параметром, так и с тремя и более).

Фиг.2b показывает пример работы приложения, при работе которого осуществляется перехват выполнения части его функций. Перехватчики 210 перехватывают вызовы функций foo2(param1, param2, param3,…) и foo3(param1, param2, param3,…). Перехват вызова функции может быть реализован с помощью следующих подходов:

- прямая модификация исполняемого кода функции;

- перехват (hooking) с помощью разбора таблицы импортов с целью замены адреса вызываемой функции на адрес собственной функции;

- создание хуков (hooks) на определенные события (events) при выполнении приложения;

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

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

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

Фиг.3 иллюстрирует возврат стека приложения в изначальном виде при вызове перехваченной функции. Для того чтобы корректно передать управление перехваченной функции, требуется сохранить стек в том же виде, в котором он был при ее изначальном вызове. С этой целью в стеке по адресу, следующему за текущим указателем стека (регистр esp) (на Фиг.3 отмечено как 300), записывается адрес возврата предыдущей (т.е. оригинальной функции до перехвата) функции. Для разных платформ это могут быть следующие команды на языке ассемблера:

x64 - jmp

x86 - ret

Фиг.4 отображает способ работы настоящего изобретения. На этапе 410 происходит перехват оригинальной функции приложения 200 с помощью перехватчика 210. На этапе 420 выполняется анализ параметров вызова функции с помощью анализатора 220 на предмет наличия вредоносного функционала. Если после проверки на этапе 430 подобный функционал был обнаружен, то на этапе 440 приложение будет остановлено еще до выполнения оригинальной функции, в ином случае на этапе 450 происходит подготовка стека, как это проиллюстрировано на Фиг.3, после чего на этапе 460 происходит перевызов оригинальной функции.

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

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

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

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



 

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

Изобретение относится к пользовательским интерфейсам прикладных программ. .

Изобретение относится к области вычислительной техники, а именно к микропроцессорам и микроконтроллерам. .

Изобретение относится к микропроцессорным системам, в частности к расширению набора команд с использованием 3-байтовых значений кода операции перехода в поле кода операции.

Изобретение относится к способу контроля выполнения компьютерных программ в соответствии с их назначением. .

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

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

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

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

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

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

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

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

Изобретение относится к способу и системе для восстановления управления доменом. Технический результат заключается в обеспечение надежного восстановления поврежденного домена.

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

Изобретение относится к области управления доступом для предоставления платных программ мультимедиа. Технический результат - обеспечение защиты от автоматической работы хакерских серверов за счет выполнения теста КАПЧА. Способ приема контента мультимедиа, скремблированного с использованием управляющих слов, содержит этапы, на которых: принимают посредством процессора системы безопасности сообщения ЕСМ, содержащие по меньшей мере одну криптограмму CW∗ управляющего слова CW; дешифруют криптограмму CW∗ посредством процессора системы безопасности; дескремблируют скремблированный контент мультимедиа посредством дешифрованного управляющего слова CW; выполняют тест КАПЧА, причем правильный ответ на указанный тест КАПЧА содержится в памяти процессора системы безопасности; получают процессором системы безопасности ответ на указанный тест КАПЧА и сравнивают в процессоре системы безопасности полученный ответ с правильным ответом, содержащимся в памяти процессора; ограничивают дескремблирование криптограмм CW* при отсутствии ответа на указанный тест КАПЧА, соответствующего правильному ответу. 4 н. и 8 з.п. ф-лы, 5 ил.

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

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

Изобретение относится к области мультимедиа и связи и, в частности, к программируемому мультимедиа контроллеру для домашней автоматизации или коммерческих применений, который обеспечивает регулирование и управление широким спектром аудио, видео, телекоммуникационных устройств и других устройств. Техническим результатом является уменьшение требований к ресурсам программируемого мультимедиа контроллера, а также к сети, которая связывает контроллер и устройства. Предложена система управления программируемым мультимедиа контроллером в системе домашней автоматизации, включающая программируемый мультимедиа контроллер, в котором гибкий доступ пользователя обеспечивается за счет сочетания профилей пользователей и имен пользователей/паролей. Конфигурация для любого данного устройства, которое может образовывать часть системы или взаимодействовать с системой, может совместно использоваться множеством аналогичных устройств. Общая конфигурация устройств сохраняется в ведущем устройстве и может использоваться другими устройствами того же типа, что и ведущее устройство. 2 н. и 5 з.п. ф-лы, 5 ил.
Наверх