Главная » Статьи » Веб » Вирусология |
Это очень обсуждаемая тема на сцене. Многие VXеры защищают свой код, чтобы сделать жизнь AVеров намного труднее. Конечно, мы говорим об антиотладочных процедурах. Есть много техник, которые мы все знаем... но было бы не плохо привести парочку из них здесь... не правда ли? У этих методов есть много возможных функций. Они очень конфигурабельны. Вы можете сделать свои собственные процедуры для вашего вируса. Я думаю, что стоит поместить по крайней мере одну из этих процедур в ваш полиморфный движок (в таблицу длинных процедур, как в вирусе Zohra Wintermut'а), чтобы одурачить AVеров, которые пытаются расшифровать наш код. Очень полезная вещь - это деактивация клавиатуры. Когда мы деактивируем клавиатуру, отлаживающий код не может его больше трейсить (F7 в TD). Если пользователь запускает программу на полную скорость... нет проблем. Только int 3 (брикпоинт) сделает остальное. Это очень простая вещь, которая работает очень хорошо! Давайте взглянем на код: bye_keyb: Это хороший метод. Подумайте, что вы можете сделать... деактивирование клавиатуры каждый раз, когда наш выполняется наш вирус даст следующее: юзер не сможет нажать ^C, поэтому все, что вам нужно сделать, будет сделано. Действительно полезная и простая вещь. Другой метод - это поиграться со стеком. Многие деббугеры спотыкаются об эту простую и старую вещь. Код? Держите: do_shit_stack: Просто, а? Вы можете также сделать NOT вместо NEG. Будет тот же результат. tons_of_shit: Что делает NEG? Он увеличивает значение регистра на 1, потом применяет NOT к результату. Hо это очень старый трюк... вы можете добавить его, но будет лучше поискать другие, так как это не пройдет со старыми отладчиками вроде Soft-Ice. Hо если вы собираетесь сделать полиморфный движок, вы можете добавить простую процедуру вроде этой и AVP будет сосать, пытаясь расшифровать ваш код. Хехе... Порождение Касперского сосет! Гхрм... Я забыл кое о чем... TBCLEAN говорит: "Достигнут краш стека" :) Ок... продолжаем... Другой метод заключается в переполнении стека: overflower: Конечно... есть еще. Другой классический трюк заключается в перехвате int 1 и/или int 3. У вас есть много возможностей, чтобы сделать это. Хорошо, мы можем предложить вам еще. change_int1_and_int3_using_dos: Эта процедура может быть названа сторожевой резидентной собакой. Мы рекомендуем вам использовать нижеследующий метод. Перехват прямым манипулированием: int1: Если вы не хотите повесить компьютер, просто замените 0FEEBh на 0CF90h (noр и iret [в перевернутом порядке, разумеется]). Очень классная идея - это сделать так, чтобы int 3 указывал на int 21, а затем использовать его вместо int 21. Это хорошо для двух вещей: натянуть отладчики и оптимизировать ваш код... как это поможет оптимизировать ваш код? Опкод int 21 pавен CD 21 (занимает два байта), а int 3 - только CC... Помните, что int 3 - это брикпоинт для отладчиков, поэтому каждый раз, когда вы будете вызывать int 3, отладчик будет останавливаться :). Вот сам код: getint21: Мы также делаем сравнения со стеком, чтобы знать, не отлаживают ли нас. Вот несколько примеров: stack_compares: Помните запрещать прерывания (cli) и разрешать их снова (sti), если необходимо. Да, есть еще много других методов для защиты своего кода. Они, конечно, очень стары, но эй! они работают! Давайте взглянем на следующий... Манипуляци с префетчингом очень известны. Я очень люблю этот метод. Давайте взглянем на следующий код: prefetch: Вы также можете сделать еще больше различных вещей с префетчингом. Вы можете перейти к процедуре или поместить hlt (тоже зависон)... prefetch_fun: Этот код прервет выполнение вашей программы. Довольно круто. А теперь процедура специально для SoftIce (лучший отладчик также одурачен). По крайней мере так говорят многие люди. Вот сам код: soft_ice_fun: Другой трюк состоит в том, чтобы перехватить int 8 и поместить туда сравнение переменной в нашем резидентном код, потому что многие дебуггеры деактивируют все прерывания, кроме int 8. Данное прерывание запускается 18.2 раз в секунду. Я рекомендую сохранить старый обработчик прерывания, прежде чем перехватывать его. Вам нужен код? Вот он: save_old_int8_handler: ; Вы помните журнал 40-hex? Запомните урок Demogorgon'а: "Hезащищенный код - это публичное достояние". Эй! Будьте внимательны, если вам нужно дельта-смещение (т.е. вирусы времени выполнения) и добавьте его... ок? | |
Просмотров: 317 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |