Обход антивирусов
И все бы было у нас хорошо, если бы антивирусы ни ругались на инфицированный файл. А они ругаются, причем матом, что портит нам весь бизнес и создает угрозу отрыва хвоста и детородного органа вместе с ним:
Рисунок 11 реакция антивирусов на бациллу
Вернемся к адресу 1006571h, в котором происходит передача управления на бациллу и посмотрим, что тут можно предпринять:
100656a ! ff1594100001 call dword ptr [KERNEL32.dll:GetModuleHandleA]
1006570 ! 50 push eax
1006571 ! e88a9dffff call 1000300h
1006576 ! 894598 mov [ebp-68h], eax
1006579 ! 50 push eax
100657a ! ff1568110001 call dword ptr [MSVCRT.dll:exit]
Листинг 4 окрестности точки в которой происходит перехват управления
Очевидно, антивирус отслеживает команду CALL, эмулируя ее выполнение. А как на счет передачи управления через ret? Интересно, сможет ли он с ним справиться? Давайте заменим CALL 1000300h на PUSH 1000300h/RET. Это ведь несложно. Правда, возникает одна проблема, — "чистый" CALL на байт короче и этого самого байта нам как раз не хватает! К счастью, следом за CALL'ом расположена команда MOV [EBP-68h], EAX, копирующая код возврата в локальную переменную, а кому он сейчас нужен? Поэтому мы можем смело оттяпать от нее один байт и перекрыть оставшиеся два байта операциями NOP. (Как вариант, можно перенести часть Start-Up кода внутрь бациллы, но в нашем случае это излишне).
Подводим курсор к 1006571h, жмем <Ctrl-A> и пишем PUSH 1000300h/RET/NOP/NOP. К сожалению, HTE позволяет ассемблировать только одну команду за раз, поэтому жать <Ctrl?A> приходится многократно. Еще необходимо в теле бациллы заменить JMP 100299Eh/RET на CALL 100299Eh/JMP 1006579h (мы ведь заменили CALL на эквивалент JMP'а, поэтому, для достижения гармонии необходимо проделать обратную ему операцию).
Сохраняем изменения по <F2>, выходим и… Бацилла по прежнему работает как миленькая, но антивирус уже не ругается. Обиделся, наверное. Или уснул.
Рисунок 12
Вообще-то, это не самый надежный антивирусный прием, зато самый простой! Остальные можно найти в статье "техника выживания в мутной воде или как обуть антивирус", опубликованной в таком-то номере хакера.