Пример реализации сигнатурного искателя

Пример реализации сигнатурного искателя

Previous pageReturn to chapter overviewNext page

// Добавление сообщения в протокол

Procedure AddAlarm(AFileName, AMsg : string);

begin

AddtoLog('>>>>> '+AFileName+' подозрение на '+AMsg);

end;

 

// Сканирование файла

Procedure ScanFile(AFileName : string);

begin

SetStatusBarText(AFileName);

LoadFileToBuffer(AFileName);

if SearchSign('2E 61 64 2D 77 2D 61 2D 72 2D 65 2E 63 6F',-20000, 0) >= 0 then

 AddAlarm(AFileName, 'Adware.Look2me');

FreeBuffer;

end;

 

// Сканирование папки (с рекурсивным обходом)

Procedure ScanDir(ADirName : string; AScanSubDir : boolean);

var

FS : TFileSearch;

begin

ADirName := NormalDir(ADirName);

FS := TFileSearch.Create(nil);

FS.FindFirst(ADirName + '*.*');

while FS.Found do begin

if FS.IsDir then begin

  if AScanSubDir and (FS.FileName <> '.') and (FS.FileName <> '..') then

   ScanDir(ADirName + FS.FileName, AScanSubDir)

end else

  ScanFile(ADirName + FS.FileName);

 FS.FindNext;

end;

FS.Free;

end;

 

begin

ScanDir('c:\', true);

end.