- Сообщения
- 7,334
- Реакции
- 4,771
На данный момент в логе AVZ не умеет зачищать в реестре следы видные по секции Модули расширения системы печати (мониторы печати, провайдеры). Пример такой записи виден в логе:
В результате удаления файла, в последующих логах эта запись будет видна снова. Решение представлявшееся ранее, было таким.
Мы решили автоматизировать процесс нахождения этих строк и удаления в один этап. Для этого был написан такой скрипт. Прежде чем его давать, посмотрите какие значения будут у файла esp***.tmp где *** - это различная цифробуквенная комбинация. Подставьте её вместо звёздочек.
Также скрипт можно давать в теле с основным карантином и удалением различных вирусных файлов. Ниже приводится пример, как нужно разместить данный скрипт в теле с карантином и удалением файлов. Не забывайте о том что значение esp*** в различных случаях, будет разным и используйте только то, что видно в анализируемых вами логах.
В результате удаления файла, в последующих логах эта запись будет видна снова. Решение представлявшееся ранее, было таким.
Мы решили автоматизировать процесс нахождения этих строк и удаления в один этап. Для этого был написан такой скрипт. Прежде чем его давать, посмотрите какие значения будут у файла 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.
Код:
[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.