Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2009, 22:25   #1
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Вопрос Программа для удаления AutoRun вирусов

Здраствуйте.
У меня к вам вопрос.
Я пишу программу для борьбы с AutoRun вирусами.
Компилятор ошибок не выдает, но программа не удаляет вирус с зараженной флешки. Если например на диске D создать такой файл:
Код:
[AutoRun]
Shell\open\command = Virus.exe
Shell\open\defaut = 1
, то программа удалит и AutoRun.inf, и Virus.exe.
Вот код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl, ExtCtrls, IniFiles, Menus, Registry;

procedure DelVir(d:string);

type
  TForm1 = class(TForm)
    TrayIcon1: TTrayIcon;
    Timer1: TTimer;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Inf:TIniFile;

implementation

uses Unit2;

{$R *.dfm}

Procedure DelVir(d:string);
var
  f:string;
begin
  Inf:=TIniFile.Create(d+'autorun.inf');
  f:=Inf.ReadString('AutoRun','Open','no');
  if f<>'no' then DeleteFile(d+f);
  f:=Inf.ReadString('AutoRun','Shell\Open\Command','no');
  if f<>'no' then DeleteFile(d+f);
  f:=Inf.ReadString('AutoRun','Shell\Explore\Command','no');
  if f<>'no' then DeleteFile(d+f);
  f:=Inf.ReadString('AutoRun','Shell\AutoPlay\Command','no');
  if f<>'no' then DeleteFile(d+f);
  f:=Inf.ReadString('AutoRun','Shell\Explorer\Command','no');
  if f<>'no' then DeleteFile(d+f);
  Inf.Free;
  DeleteFile(d+'autorun.inf');
  ShowMessage('Вирус удален');
end;

procedure TForm1.FormCreate(Sender: TObject);
var Reg:TRegistry;
begin
reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.Access:=KEY_ALL_ACCESS;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run\', False);
Reg.WriteString('AntiAutoRun',Paramstr(0));
Reg.CloseKey;
Reg.Free;
Application.ShowMainForm:=false;
//Timer1.Interval:=400;
//sleep(405);
Timer1.Interval:=2800;//0;
end;

procedure TForm1.N1Click(Sender: TObject);
begin
Form1.Close;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
Form2.ShowModal;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  d:string;
  t:uint;
  b:byte;
begin
  for b := ord('C') to ord('Z') do
  begin
    d:=chr(b)+':\';
    t:=GetDriveType(pchar(d));
    case t of
      DRIVE_REMOTE,DRIVE_CDROM,DRIVE_RAMDISK,1,0:;
      DRIVE_REMOVABLE,DRIVE_FIXED:begin
       if FileExists(d+'autorun.inf') then
       begin
         timer1.Enabled:=false;
         if messageDLG('На диске '+copy(d,1,1)+' найден вирус.'+#10+#13+'Удалить?',mtConfirmation,mbYesNo, 0)=mrYes then
           DelVir(d);
         timer1.Enabled:=True;
       end;
      end;
    end;
  end;
end;
end.
Очень благодарен всем кто поможет.

Вот архив с проэктом:
Вложения
Тип файла: zip Anti.zip (231.1 Кб, 25 просмотров)
pomoshnic вне форума Ответить с цитированием
Старый 01.04.2009, 04:57   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

часто у вирусов стоит атрибут только для чтения или системный, тогда delefile не будет работать, тебе перед удалением нужно поменять атрибут
setfilesattributes(pchar('filename' ), FaArchive); // вроде бы так...
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать программу для удаления каталога с файлами ig@r Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 18.08.2009 13:20
DOS команда для удаления всех файлов, имена которых содержат цифры Samopal Операционные системы общие вопросы 1 23.12.2008 21:12
Поиск вирусов... :) Altera Свободное общение 4 23.03.2008 13:19
Нужна программа для удаления содержимого папки DNK1980 Фриланс 6 11.02.2008 16:52