Истории о вирусах

Например:


call CreateFileA

После компиляции этот вызов выглядит так:

db 9Ah .инструкция call

dd 7777 ;смещение в таблице переходов

Код в таблице переходов похож на такой:

jmp far [offset into import table]

Смещение в таблице импортируемых имен содержит адрес диспетчера

для данной функции API. Этот адрес можно получить с помощью

GetProcAddress API. Диспетчер функций выглядит так:

push function value

call Module Entrypoint

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

модуля. Поэтому можно заменить вызовы KERNEL32.DLL в его стан-

дартной точке на вызовы непосредственно функций. Просто сохраняем

в стеке значение функции и вызываем точку входа в модуль.

Модуль KERNEL32 располагается в памяти статически - именно так

и предполагалось. Но конкретное место его расположения в разных вер-

сиях Windows 95 отличается. Это было проверено. Оказалось, что одна

функция (получение времени/даты) отличается номером. Для компен-

сации этих различий добавлена проверка двух различных мест на нали-

чие KERNEL32. Но если KERNEL32 все-таки не найден, вирус возвра-

щает управление программе-носителю.



Содержание раздела