Зачистка следов из секции [Модули расширения системы печати]

Статус
В этой теме нельзя размещать новые ответы.

Drongo

Ассоциация VN/VIP
VIP
Сообщения
7,345
Реакции
4,793
На данный момент в логе AVZ не умеет зачищать в реестре следы видные по секции Модули расширения системы печати (мониторы печати, провайдеры). Пример такой записи виден в логе:

fc9aafa97672.png

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

Мы решили автоматизировать процесс нахождения этих строк и удаления в один этап. Для этого был написан такой скрипт. Прежде чем его давать, посмотрите какие значения будут у файла esp***.tmp где *** - это различная цифробуквенная комбинация. Подставьте её вместо звёздочек.
Код:
var ListRegSearch : TStringList;
  i : Integer;
  FileName, RegKeyName : string;
begin
  ClearLog;
  FileName := 'c:\avz00.log';
  RegSearch('HKLM', '', 'esp****.tmp'); // Указываем строку поиска esp*** - где *** буквы\цифры
  SaveLog(FileName);
  ClearLog;
  ListRegSearch := TStringList.Create;
  ListRegSearch.LoadFromFile(FileName);
  AddToLog('Найдено записей: ' + IntToStr(ListRegSearch.Count));
  for i := 0 to ListRegSearch.Count - 1 do
   begin
    RegKeyName := ListRegSearch.Strings[i];
    if Pos('\esp', RegKeyName) > 0 then
      begin
        Delete(RegKeyName, 1, Pos('\\', RegKeyName) + 1);
        Delete(RegKeyName, Pos(' Name=', RegKeyName), Length(RegKeyName));
        RegKeyDel('HKLM', RegKeyName);
        AddToLog('Удален ключ реестра HKLM\' + RegKeyName);
      end;
   end;
ListRegSearch.Free;
SaveLog('c:\avz01.log');
end.
Также скрипт можно давать в теле с основным карантином и удалением различных вирусных файлов. Ниже приводится пример, как нужно разместить данный скрипт в теле с карантином и удалением файлов. Не забывайте о том что значение esp*** в различных случаях, будет разным и используйте только то, что видно в анализируемых вами логах.
Код:
[COLOR="blue"]var ListRegSearch : TStringList;
  i : Integer;
  FileName, RegKeyName : string;[/COLOR]
begin
SearchRootkit(true, true);
SetAVZGuardStatus(True);
QuarantineFile('\\?\globalroot\systemroot\system32\rgkkew1.exe','');
QuarantineFile('c:\progra~1\mycent~1\infobar\mycent~1.dll','');
QuarantineFile('C:\DOCUME~1\MSK20\LOCALS~1\Temp\esp34AB.tmp','');
QuarantineFile('C:\DOCUME~1\MSK20\LOCALS~1\Temp\espEB99.tmp','');
DeleteFile('\\?\globalroot\systemroot\system32\rgkkew1.exe');
DeleteFile('c:\progra~1\mycent~1\infobar\mycent~1.dll');
DeleteFile('C:\DOCUME~1\MSK20\LOCALS~1\Temp\esp34AB.tmp');
DeleteFile('C:\DOCUME~1\MSK20\LOCALS~1\Temp\espEB99.tmp');
DelBHO('{FFFC57DB-1DE3-4303-B24D-CEE6DCDD3D86}');
DelBHO('{92780B25-18CC-41C8-B9BE-3C9C571A8263}');
RegKeyStrParamWrite('HKLM', 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon', 'UserInit', GetEnvironmentVariable('WinDir')+'\system32\userinit.exe,');
[COLOR="blue"] ClearLog; // Тут мы очищаем вывод лога и с чистой совестью ищем esp34AB.tmp
FileName:= GetAVZDirectory + 'avz.log';
RegSearch('HKLM', '', 'esp34AB'); // Указываем строку поиска esp*** - где *** буквы\цифры
RegSearch('HKLM', '', 'espEB99'); // В этом примере у нас два разных файла, а значит нужно искать два разных значения.
SaveLog(FileName);
ListRegSearch := TStringList.Create;
ListRegSearch.LoadFromFile(FileName);
DeleteFile(FileName);
for i := 0 to ListRegSearch.Count - 1 do
  begin
   RegKeyName := ListRegSearch.Strings[i];
   if Pos('\esp', RegKeyName) > 0 then
     begin
       Delete(RegKeyName, 1, Pos('\\', RegKeyName) + 1);
       Delete(RegKeyName, Pos(' Name=', RegKeyName), Length(RegKeyName));
       RegKeyDel('HKLM', RegKeyName);
     end;
  end;
ListRegSearch.Free;[/COLOR]
BC_ImportAll;
ExecuteSysClean;
BC_Activate;
ExecuteRepair(20);
RebootWindows(true);
end.
Отдельное спасибо Serega_ и thyrex :good2:​
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу