Консультация № 61216
04.11.2006, 00:03
0.00 руб.
0 2 2
Добрый день. Вопрос деликатный. Как мне написать программу чтобы она вставляла какойто код в другой ексешник. Вроде внедрения вируса, но С МИРНЫМЫ ЦЕЛЯМИ! Пожалуйста, помогите!

Обсуждение

Неизвестный
04.11.2006, 07:02
общий
это ответ
Здравствуйте, Dector@!

Самый распространенный способ заражения ЕХЕ-файлов такой: в конец файла дописывается тело вируса, а заголовок корректируется (с сохране- нием оригинального) так, чтобы при запуске инфицированного файла управление получал вирус. После окончания работы вирус берет из сохраненного заголовка оригинальный адрес запуска программы, прибав- ляет к его сегментной компоненте значение регистра DS или ES (полученное при старте вируса) и передает управление на полученный адрес.

Следующий способ - внедрение вируса в начало файла со сдвигом кода программы. Механизм заражения такой: тело инфицируемой программы считывается в память, на ее место записывается вирусный код, а после него - код инфицируемой программы. Таким образом, код программы как бы "сдвигается" в файле на длину кода вируса. При запуске инфицированного файла вирус заражает еще один или несколько файлов. После этого он считывает в память код программы, записывает его в специально созданный на диске временный файл с расширением исполняемого файла (СОМ или ЕХЕ), и затем исполняет этот файл. Когда программа закончила работу, временный файл удаляется.

Также очень хорошая статья на ету тему здесь: http://hi-tech.nsys.by/23/#2
В ней все вопросы рассмотрены более подробно
Неизвестный
07.11.2006, 07:25
общий
это ответ
Здравствуйте, Dector@!

Просто делай так

Var f: text; Mem: TMemoryStream;
Buf: Array [1..1024] of byte;

const FName:=‘Test.exe‘;
...
Mem:=Tmemorystream.Create;
Mem.LoadFromFile(FName);
assignFile(f, Fname);
rewrite(f, 1);
repeat
rd:=mem.read(buf, sizeOf(buf));
blockwrite(f, buf, rd);
until rd<1

// с помощью blockwrite можно записать данные хоть в начало (перед repeat) или после экзешного файла, если после, то экзешник будет работать как ни в чем не бывало
Форма ответа