PDA

Просмотр полной версии : Вывод сигнатур из базы в функцию SearchSign AVZ



dsk88
03.04.2015, 17:45
Не получается вывести сигнатуры из базы в функцию SearchSign. Бьюсь уже второй день. Может быть использую не ту процедуру класса TStringList? Базовые процедуры Delphi не работают.


var
SignBase : TStringList;
MalwareCnt : integer;
DelMalwareCnt : integer;
DeleteMalware : boolean;
ASign : string;
Procedure ScanFile(fname : string);

begin
SetStatusBarText(fname);
LoadFileToBuffer(fname);
SignBase := TStringList.Create;
ASign := SignBase.LoadFromFile('my_sign_base.txt');
if (SearchSign (ASign, 0, 0) >= 0) then begin
AddToLog('Найден вредоносный файл = '+fname);
inc(MalwareCnt);
if DeleteMalware then begin
DeleteFile(fname);
inc(DelMalwareCnt);
FreeBuffer;
SignBase.Free;
end;
end;
end;

Procedure ScanDir(dirname : string; scansubdir : boolean);
var
FS : TFileSearch;
begin
dirname := NormalDir(dirname);
FS := TFileSearch.Create(nil);
FS.FindFirst(dirname + '*.*');
while FS.Found do begin
if (FS.FileName <> '.') and (FS.FileName <> '..') then
if FS.IsDir and scansubdir then
ScanDir(dirname + FS.FileName, scansubdir)
else
ScanFile(dirname + FS.FileName);
FS.FindNext;
end;
FS.Free;
end;

begin
ActivateWatchDog(15*60);
SetupAVZ('UseQuarantine=Y');
DeleteMalware := false;
MalwareCnt := 0; DelMalwareCnt := 0;
SignBase := TStringList.Create;
SignBase.LoadFromFile('my_sign_base.txt');
AddToLog('База загружена, количество сигнатур = '+inttostr(SignBase.Count));
SearchRootkit(true, true);
AddToLog('Руткит запущен');
SearchKeylogger;
ScanDir('c:\', true);
AddToLog('Эвристическая проверка процессов, служб/драйверов, автозапуска, открытых портов и файла hosts. Ведение отчета redoct.htm.');
AddToLog('Идет проверка дисков.');
if DelMalwareCnt > 0 then begin
SaveLog('scan_result.txt');
SetAVZGuardStatus(true);
BC_ImportALL;
BC_Activate;
ExecuteSysClean;
RebootWindows(true);
end;
end.

Использовал пример скрипта с сайта AVZ, немного изменил.