Как вирусы обращаются к системным сервисамВопрос доступа к системным сервисам является ключевым для вирусов, функционирующих в среде 32-разрядных версий Windows. Выше, в разделах, посвященных импорту и экспорту, были рассмотрены сложные схемы взаимодействия программ с динамическими библиотеками, содержащими необходимые для функционирования программ функции. На этапе формирования загрузочного модуля компоновщик оснащает «нормальную» программу служебными заголовками и настроечными таблицами, содержащими информацию о требуемых программой внешних функциях, а затем загрузчик операционной системы, пользуясь этими заголовками и таблицами, обеспечивает программу необходимыми ресурсами — адресами внешних функций. Компьютерный вирус же является чистым программным кодом, не содержит никаких заголовков и таблиц, поэтому проблему доступа к системным сервисам ему приходится решать полностью самостоятельно. Наиболее примитивные вирусы ориентированы на конкретные версии операционных систем, для которых расположение в адресном пространстве библиотеки «KERNEL32.DLL» и функций внутри нее является жестко фиксированным. Например, автор вируса Win9X. Boza был осведомлен о двух возможных вариантах общей точки входа в «KERNEL32.DLL» для различных бета-версий «Chicago», имел данные о характерных для этой точки цепочках байтов, определил даже адреса переходников к необходимым системным сервисам, но почему-то не знал линейных адресов самих функций и что к ним можно обращаться напрямую. В результате он сочинил для обращения к системным сервисам следующий очень наивный код:

Еще интересные статьи :