Возврат управления жертвеЕсли вирус не «перезаписывающий», то он должен обеспечить нормальную работу зараженной им программы, чтобы пользователь ничего не заподозрил. Именно фрагменты вируса, отвечающие за возврат управления «жертве», необходимо в первую очередь изучать вирусологу, для того чтобы разработать алгоритм «исцеления» зараженной программы. Ведь они сами по себе уже содержат алгоритм «исцеления». Поскольку COM-программа не имеет никакой внутренней структуры, то вирусу вполне достаточно вернуть в памяти все перемещенные фрагменты в их первоначальные позиции, восстановить исходные значения регистров и передать управление на адрес 100h. Вот несколько примеров того, как это делают вирусы, заражающие «стандартным» способом.

Вирус IronMaiden.636: При возврате управления «жертве» вирусы далеко не всегда восстанавливают исходное содержимое регистров общего назначения. Большинство зараженных программ на это не обращают внимания, но некоторые могут работать некорректно. Среди вирусописателей «удовлетворительным» решением считается простое обнуление этих регистров перед возвратом в оригинальную программу. С другой стороны, некоторые «хитрые» вирусы сами иногда активно используют «стандартные» значения регистров для своих целей. Если программа окажется поочередно заражена «хитрым» и «ленивым» вирусами, то корректно работать она не будет.

Собственно передача управления коду «жертвы» может быть оформлена различными способами: с применением команд «JMP» внутрисегментного и межсегментного переходов, команд «RET» возврата из «ближних» и «дальних» процедур и даже команды «IRET» возврата из обработчика прерывания. Рассмотрим поучительный пример.

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

Возврат управления жертве
Возврат управления жертве
Возврат управления жертве
Возврат управления жертве