Изменение собственного кода Изменение собственного кода является очень сильным
инструментом для борьбы с антивирусами и отладчиками. Изменение кода
может происходить либо в уже запущенной программе,что является
противодействием для отладчиков, либо в файле на диске, что сбивает с
толку антивирусы. Известным приемом является так называемый "трюк с
конвейером". Процессоры считывают команды из памяти не по одной, а
блоками по нескольку штук. При выполнении команды перехода происходит
обновление блока. Например, посмотрим на такой код :jmp $+2 mov word ptr OFFS,9090h OFFS: mov AL,FFh
В
AL будет помещено FFh, несмотря на то что эти инструкции, казалось бы
заменяются на 9090h, то есть NOP;NOP. С появлением Pentium'а это не
прокатывает. Известно, что конвейер в процессоре Pentium все-таки есть,
но трюк не срабатывает. Гораздо шире применяется модификация файла программы.
Придумано много различных способов шифрации. Это и перестановка местами
частей вируса, и элементарное A:=A+B, A:=A xor B и т.д., и добавление
ничего не значащих комманд (мусора), и "раскидывание" свое кода пятнами
по файлу и т.п. Выбор достаточно велик, особенно если учесть, что все
эти методы можно комбинировать.
|