Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

CBT_HOOK !   Найти похожие ветки 

 
psa247 ©   (2006-02-12 17:50) [0]

Здравствуйте ! Почему CBT_HOOK не действует на окно сервиса ?


 
kaZaNoVa ©   (2006-02-13 00:34) [1]

как понять не действует?


 
psa247 ©   (2006-02-13 11:17) [2]


> kaZaNoVa ©   (13.02.06 00:34) [1]

В смысле не выполняет своего предназначения. Заметил, что при включенной опции Data Execute Protection моя dll c CBT_Hook-oм не действует на окна служб. Вот и думаю, что же делать теперь ?!


 
kaZaNoVa ©   (2006-02-13 11:27) [3]

psa247 ©   (13.02.06 11:17) [2]
при включенной опции Data Execute Protection


отключить эту бяку и всё))


 
Игорь Шевченко ©   (2006-02-13 12:04) [4]

А сервис взаимодействует с рабочим столом ?


 
psa247 ©   (2006-02-13 12:19) [5]


> kaZaNoVa ©   (13.02.06 11:27) [3]

Думается, что это не выход. Метод должен быть универсальным только для WinXP.

> Игорь Шевченко ©   (13.02.06 12:04) [4]

Чужой сервис. Взаимодействует.


 
Игорь Шевченко ©   (2006-02-13 12:35) [6]

psa247 ©   (13.02.06 12:19) [5]


> Чужой сервис. Взаимодействует.


Тогда ищи ошибку в хуке. DEP кроме того, что запрещает выполнение команд на странице с некорректной для выполнения защитой, еще и проверяет массу других условий, например, обработчики исключений.


 
Digitman ©   (2006-02-13 13:00) [7]


> не действует


Чтобы он "действовал" необходимо выполнение не менее одного (главного) условия : образ dll, в которой реализована логика этого глоб.хука, д.б. загружен в ВАП процесса (сервис-процесс - не исключение)

Ты проверил выполнение этого условия ?


 
psa247 ©   (2006-02-13 14:36) [8]


> Digitman ©   (13.02.06 13:00) [7]

Проверял, в списке используемых модулей - ее нет.


> Игорь Шевченко ©   (13.02.06 12:35) [6]


> запрещает выполнение команд на странице с некорректной для
> выполнения защитой
Объясните "на пальцах", пожалуйста


 
Игорь Шевченко ©   (2006-02-13 14:37) [9]

psa247 ©   (13.02.06 14:36) [8]


> Объясните "на пальцах", пожалуйста


Марк Руссинович объясняет, на http://www.sysinternals.com

Код хука будет выложен или мы дальше будем телепаторы напрягать ?


 
psa247 ©   (2006-02-13 14:50) [10]

Просьба ко всем нелюбителям, которые не любят, когда какое-то "наглое окно" выпрыгивает, когда они что-то делают.

Не надо высказываться по данному поводу. Уже не одна тема была затронута, я, практически, их все читал.



library OnTopWindow;

uses Windows;

const MMFName : PChar = "Data_MMF";

type
 PGlobalDLLData = ^TGlobalDLLData;
 TGlobalDLLData = packed record
   SysHook : HHook;                
    OurWnd : HWND;                // дескриптор МОЕГО окна
 end;

var MMFHandle : THandle;
  GlobalData : PGlobalDLLData;

// Эта функция будет вызываться всякий раз, когда в системе появится интересующее нас
// событие, т.е. активация и передача фокуса какому-либо окну
function CBTProc(code : integer; wParam : longint; lParam : longint): longint; stdcall;
var OurWnd : HWND;
   SysHook : HHook;
begin
  SysHook:= GlobalData^.SysHook;        
  OurWnd:= GlobalData^.OurWnd;          
  if code < 0 then begin
    Result:= CallNextHookEx(SysHook,code,wParam,lParam); // Передаем далее по цепочке
    exit;
    end;
  Result:= 0;
  // Возвращаем "0" - позволяем провести событие
  // Возвращаем "1" - запрещаем событие
  if(code=HCBT_ACTIVATE)and(OurWnd<>Cardinal(wParam))then begin
    if(GetParent(wParam)=OurWnd)then begin
      BringWindowToTop(wParam);
      SetForegroundWindow(wParam);
      exit;
      end;
    BringWindowToTop(OurWND);
    SetForegroundWindow(OurWnd);
    Result:= 1;
    end;
{   // Возвращаем "0" - позволяем провести событие
  // Возвращаем "1" - запрещаем событие
  if(code=HCBT_SETFOCUS)and(OurWnd<>Cardinal(wParam))then begin
    if(GetParent(wParam)=OurWnd)then begin
      BringWindowToTop(wParam);
      SetForegroundWindow(wParam);
      SetFocus(wParam);
      exit;
      end;
    BringWindowToTop(OurWND);
    SetForegroundWindow(OurWnd);
    SetFocus(OurWnd);
    Result:= 1;
    end;}
end;

procedure Hook(switch : Boolean; OurWHandle : HWND)export; stdcall;
begin
  if switch then begin
   GlobalData^.SysHook:= SetWindowsHookEx(WH_CBT, @CBTProc, HInstance, 0);
   GlobalData^.OurWnd:= OurWHandle;    
   end
else UnHookWindowsHookEx(GlobalData^.SysHook);
end;

procedure OpenGlobalData;
begin
  MMFHandle:= CreateFileMapping(INVALID_HANDLE_VALUE,nil,PAGE_READWRITE,0,SizeOf(TGlobalDLLDat a),MMFName);
  if MMFHandle = 0 then exit;
  GlobalData:= MapViewOfFile(MMFHandle,FILE_MAP_ALL_ACCESS,0,0,SizeOf(TGlobalDLLData));
end;

procedure CloseGlobalData;
begin
  CloseHandle(MMFHandle);
end;

procedure DLLEntryPoint(dwReason: Integer);
begin
  case dwReason of
    DLL_PROCESS_ATTACH : OpenGlobalData;
    DLL_PROCESS_DETACH : CloseGlobalData;
    end;
end;

exports Hook name "Hook";

begin
  DLLProc:= @DLLEntryPoint;
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.



С уважением.


 
Digitman ©   (2006-02-13 14:52) [11]


> psa247 ©   (13.02.06 14:36) [8]
>
> > Digitman ©   (13.02.06 13:00) [7]
>
> Проверял, в списке используемых модулей - ее нет


Поэтому и "не действует".


 
psa247 ©   (2006-02-13 15:05) [12]


> Digitman ©   (13.02.06 14:52) [11]

А как "зарядить" ее туда ? В чем может быть ошибка ? На машинах, где DEP не включен - все работает на "ура".


 
kaZaNoVa ©   (2006-02-13 15:09) [13]

psa247 ©   (13.02.06 15:05) [12]
а что мешает временно отключать (программно) DEP  на время работы приложения?))

а так, вообще не ясно, всё должно работать, воможно DEP  как-то "защищает" от внедрений хуков системные сервисы .. (недокументированно может)


 
kaZaNoVa ©   (2006-02-13 15:10) [14]

psa247 ©   (13.02.06 15:05) [12]
а "зарядить" - можно CreateRemoteThread попробовать .. тока опять таки нет уверенности, что с включенной DEP будет работать ...


 
psa247 ©   (2006-02-13 15:17) [15]


> kaZaNoVa ©   (13.02.06 15:09) [13]
> а что мешает временно отключать (программно) DEP  на время
> работы приложения?))


Нарушение безопасности системы. Лучше пусть будет.


> а так, вообще не ясно, всё должно работать, воможно DEP
>  как-то "защищает" от внедрений хуков системные сервисы
> .. (недокументированно может)


Тоже так думаю.


> а "зарядить" - можно CreateRemoteThread попробовать .. тока
> опять таки нет уверенности, что с включенной DEP будет работать
> ...


По голове не погладят за это :)


 
kaZaNoVa ©   (2006-02-13 15:21) [16]

psa247 ©   (13.02.06 15:17) [15]
По голове не погладят за это :)


почему? вполне документированный способ внедрения .. если нужен пример-есть ...


 
psa247 ©   (2006-02-13 15:28) [17]


> kaZaNoVa ©   (13.02.06 15:21) [16]


С антивирусниками и фаерволами как ?
Анти Spy-Ware ?

Пример нужен. Попробую.


 
kaZaNoVa ©   (2006-02-13 15:31) [18]

program loader;
uses
 Windows,SysUtils,Tlhelp32;

function SetDebugPriv: Boolean;
var
Token: THandle;
tkp: TTokenPrivileges;
begin
Result := false;
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token) then
begin
 if LookupPrivilegeValue(nil, PChar("SeDebugPrivilege"), tkp.Privileges[0].Luid) then
 begin
   tkp.PrivilegeCount := 1;
   tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
   Result := AdjustTokenPrivileges(Token, false, tkp, 0, PTokenPrivileges(nil)^, PDWord(nil)^);
 end;
end;
end;

function Start(ProcessID: Cardinal; DllFileName: string): Boolean;
var
hProcess, hTh: THandle;
BytesWritten, ThreadID, DllNameLen: Cardinal;
LoadLibraryProc, MemPtr: Pointer;
ExitCode: DWord;
begin
Result := false;

SetDebugPriv();

hProcess := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or PROCESS_VM_WRITE,true, ProcessID);

if hProcess <> 0 then
begin
 DllNameLen := Length(DllFileName) + 1;
 
 MemPtr := VirtualAllocEx(hProcess, nil, DllNameLen, MEM_COMMIT, PAGE_READWRITE);

 if MemPtr <> nil then
 begin
   if WriteProcessMemory(hProcess, MemPtr, PChar(DllFileName), DllNameLen, BytesWritten) then
   begin
     LoadLibraryProc := GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");

     hTh := CreateRemoteThread(hProcess, nil, 0, LoadLibraryProc, MemPtr, 0, ThreadID);

     if hTh <> 0 then
     begin
       if (WaitForSingleObject(hTh, INFINITE) = WAIT_OBJECT_0) and
         GetExitCodeThread(hTh, ExitCode) then
         Result := ExitCode <> 0;

       CloseHandle(hTh);
     end;
   end;

   VirtualFreeEx(hProcess, MemPtr, 0, MEM_RELEASE);
 end;

 CloseHandle(hProcess);
end;

end;

var
ProcessID: Cardinal;
DllName,ppp: string;
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
ProcessID:=0;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);

ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
 begin
ppp:=FProcessEntry32.szExeFile;
if (pos("CSRSS",UpperCase(ppp))>0) then  ProcessID:=FProcessEntry32.th32ProcessID;
ContinueLoop := Process32Next(FSnapshotHandle,  FProcessEntry32);
 end;
CloseHandle(FSnapshotHandle);

DllName:="A:\test.dll";

if ProcessID <> 0 then Start(ProcessID, DllName);

end.


 
kaZaNoVa ©   (2006-02-13 15:32) [19]

psa247 ©   (13.02.06 15:28) [17]
С антивирусниками и фаерволами как ?
Анти Spy-Ware ?


могут быть проблемы .. но не со всеми ..)))

решение- убивать их))


 
psa247 ©   (2006-02-13 15:51) [20]


> kaZaNoVa ©   (13.02.06 15:32) [19]


Спасибо, отпишусь как попробую.


 
Игорь Шевченко ©   (2006-02-13 15:55) [21]

kaZaNoVa ©   (13.02.06 15:32) [19]


> решение- убивать их))


Ошибочное решение. Проше убить автора подобных советов. Из рогатки или плюсометом.

psa247 ©   (13.02.06 14:50) [10]

1) Неплохо бы проверять, что GlobalData имеет значение, отличное от нуля.
2) Неплохо бы проверять значение, возвращаемое функцией SetWindowsHookEx


 
kaZaNoVa ©   (2006-02-13 16:04) [22]

Игорь Шевченко ©   (13.02.06 15:55) [21]
> решение- убивать их))

Ошибочное решение.


возможно в общем случае и ошибочно, но большинство "серьёзного"  програмного обеспечения при установке требует/просит закрывать антивирусы, чтобы не было проблем.  думаю не зря ...

а еще можно попробовать составить список сервисов, в которые не грузится и какой-нить из них (если возможно) запустить попробовать от имени юзера .. может это даст ключ к разгадке ...  или хотя бы просто интересную информацию ..


 
Игорь Шевченко ©   (2006-02-13 16:10) [23]

kaZaNoVa ©   (13.02.06 16:04) [22]


> но большинство "серьёзного"  програмного обеспечения при
> установке требует/просит закрывать антивирусы


примеры большинства серьезного программного обеспечения в студию.


 
kaZaNoVa ©   (2006-02-13 16:38) [24]

Игорь Шевченко ©   (13.02.06 16:10) [23]
примеры большинства серьезного программного обеспечения в студию


например:  

Welcome to the 1st Page 2000 Setup program. This
program will install 1st Page 2000 on your computer.

It is strongly recommended that you exit all Windows programs beFore running this Setup program.


больше пока не нашел, но помню на многих инталляторах пишут такое ..


 
Игорь Шевченко ©   (2006-02-13 17:05) [25]

kaZaNoVa ©   (13.02.06 16:38) [24]

Сравни


> is strongly recommended that you exit all Windows programs


и


> большинство "серьёзного"  програмного обеспечения при
> установке требует/просит закрывать антивирусы, чтобы не
> было проблем


Подумай или поищи ответ в интернете, зачем приложения просят, чтобы при установке не работали другие программы.


 
Bobby   (2006-02-14 12:43) [26]

Microsoft Visual Studio .NET 2002 не устанавливается при активном DWeb.
Установка обламывается в самом конце. В FAQ-е , проблем, прилагаемых к инсталяции, как одна из возможных причин, определяется наличие антивируса.


 
Игорь Шевченко ©   (2006-02-14 12:59) [27]

Bobby   (14.02.06 12:43) [26]

Ну что я могу сказать ? Только то, что VS 2005 устанавливается при активном AVG ?

Детский сад, штаны на лямках.


 
Bobby   (2006-02-14 13:18) [28]

Ну и что с того? Речь идет о принципе. Бывает разное сочетание обстоятельств...


 
Игорь Шевченко ©   (2006-02-14 13:34) [29]

Bobby   (14.02.06 13:18) [28]

Так принцип или стечение обстоятельств ?

В любом случае, совет всегда сносить антивирус на основании того, что какая-то программа при нем активном не устанавливается есть совет а) ламерский б) вредный.


 
Германн ©   (2006-02-14 14:42) [30]


> Игорь Шевченко ©   (14.02.06 13:34) [29]
>
> Bobby   (14.02.06 13:18) [28]
>
> Так принцип или стечение обстоятельств ?
>
> В любом случае, совет всегда сносить антивирус на основании
> того, что какая-то программа при нем активном не устанавливается
> есть совет а) ламерский б) вредный.


Бывают и исключения. Если "какая-то программа" тоже антивирус. :)))


 
Rouse_ ©   (2006-02-14 22:54) [31]


> Игорь Шевченко ©   (14.02.06 12:59) [27]
> Bobby   (14.02.06 12:43) [26]
>
> Ну что я могу сказать ? Только то, что VS 2005 устанавливается
> при активном AVG ?
>
> Детский сад, штаны на лямках.

Это не детский сад, такая проблема может быть. Вот пример - инсталятор копирует на диск большой файл, больше 100 метров. Стоит ДрВеб. При попытке доступа к файлу через IStorage автоматом запускается сканирования данного файла (сам он при этом блокируется) и через несколько секунд, стандартная функция открытия стораджа не дождавшись окончания проверки возращает - доступ запрещен. Пришлось даже в мануалах писать, что перед инсталяцией отключите мониторинг. На Касперском не проверял, под нортоном такой проблемы нет, а вот под любимым Доктором Вебом, к сожалению есть...


 
Rouse_ ©   (2006-02-14 23:02) [32]

Впринципе у меня даже есть предположение подобного поведения Веба на этом файле. Формат его сходен с использующимся в документах Майкрософт Офиса... по всей видимости пытается найти там макровирусы :)) А так как внутренняя структура достаточно обьемна (обычное открытие занимает около 20-30 сек) и происходит конфликтс. :)


 
kaZaNoVa ©   (2006-02-14 23:13) [33]

Rouse_ ©   (14.02.06 22:54) [31]
инсталятор копирует на диск большой файл

аналогично у меня когда-то была задача скопировать большое количество EXE-файлов, при включенном мониторе Касперского работало фантастически медленно(


 
Игорь Шевченко ©   (2006-02-14 23:46) [34]

Rouse_ ©   (14.02.06 22:54) [31]

Смени антивирус. Не путай причину со следствием и не делай глобальных
выводов.


> стандартная функция открытия стораджа не дождавшись окончания
> проверки возращает - доступ запрещен


А можно ссылку на документацию, где указан таймаут ?


 
Германн ©   (2006-02-15 02:53) [35]


> Игорь Шевченко ©   (14.02.06 23:46) [34]
>
> Rouse_ ©   (14.02.06 22:54) [31]
>
> Смени антивирус. Не путай причину со следствием и не делай
> глобальных
> выводов.


Радикально! Но ничем не обоснованно глобально.
Менять антивирус под "конкретную ситуацию"???

" и не делай глобальных выводов." Это Ваши слова!


 
Bobby   (2006-02-15 09:44) [36]

> Игорь Шевченко ©   (14.02.06 13:34) [29]
>
> Bobby   (14.02.06 13:18) [28]
>
> Так принцип или стечение обстоятельств ?
>
> В любом случае, совет всегда сносить антивирус на основании
> того, что какая-то программа при нем активном не устанавливается
> есть совет а) ламерский б) вредный.


А ведь и правда : ну его нафиг этот Visual Studio! Главное что бы антивирус работал.
При этом, к тому же , не станешь :
a) ламером
б) врединой


 
Rouse_ ©   (2006-02-15 10:45) [37]


> Смени антивирус.

От те здрасте, это как?
Т.е. "Уважаемые пользователи - для использования нашго продука настоятельно рекомендуем вам сменить антивирус". Так чтоли?
Уж проще выйти на самого веба и с ними попробовать решить проблему, что собственно мы сейчас и будем делать...

> А можно ссылку на документацию, где указан таймаут ?
А нет никакого таймаута - он просто пытается открыть, чуть задумывается и вываливается с запрещением доступа...


 
Игорь Шевченко ©   (2006-02-15 11:24) [38]

Rouse_ ©   (15.02.06 10:45) [37]


> Т.е. "Уважаемые пользователи - для использования нашго продука
> настоятельно рекомендуем вам сменить антивирус". Так чтоли?
>  


Нет, почему же, можно продукт сменить. Альтернатива.


> А нет никакого таймаута - он просто пытается открыть, чуть
> задумывается и вываливается с запрещением доступа...


Первый вопрос - а что, антивирус всегда полностью сканирует файл при любом открытии ?

Второй вопрос - А зачем....?


 
Rouse_ ©   (2006-02-15 12:09) [39]


> Первый вопрос - а что, антивирус всегда полностью сканирует
> файл при любом открытии ?

Веб сканирует...

> А зачем....?

хз :) У касперского AFAIK это решено контрольной суммой в дополнительном NTFS потоке...


 
Игорь Шевченко ©   (2006-02-15 12:14) [40]

Rouse_ ©   (15.02.06 12:09) [39]

Это же какие тормоза, пардон. А если у меня файл базы данных на пару десятков гигабайт ? Может, у него из сканирования можно исключать файлы ?

Сдается мне, что-то ты не договариваешь...


 
Rouse_ ©   (2006-02-15 15:28) [41]

да нет - говорю как есть :)


 
Игорь Шевченко ©   (2006-02-15 15:58) [42]

Так как быть с файлами немеряного размера ? Оно их тоже будет сканировать каждый раз при открытии ?


 
Rouse_ ©   (2006-02-16 09:18) [43]

Проверять не на чем, но по логике вещей да... Но IMHO только в том случае если они могут нести в себе исполняемый или интерпретируемый код, как это видно из Compaund File...


 
Игорь Шевченко ©   (2006-02-16 10:48) [44]

Rouse_ ©   (16.02.06 09:18) [43]


> Проверять не на чем, но по логике вещей да


Выкинь такой антивирус в корзину. Моя искренняя рекомендация. Или все-таки, может в документации что-то написано на эту тему ? :)


 
Rouse_ ©   (2006-02-16 11:13) [45]

В документации написано что можно переключить в настройках с проверки всех файлов на проверку по формату... Естественно нашего расширения там нет... именно это мы и пишем в нашей инструкции, либо отключить мониторинг либо переключить на сканирование по формату, но представь когда пользователь Старая Бабулька - Сметчица (не секрет что во многи конторах о сисадминах слышали - что есть такой зверек, но не более ;) )... И как ей обьяснить последовательность действий? У нас тут в службе тех поддержки телефоны разрываются, очень часто девченки проводят банальный курс первичных навыков владения компом пользователю по телефону. Предложишь отказаться от таких пользователей? :)))


 
Игорь Шевченко ©   (2006-02-16 11:21) [46]

Rouse_ ©   (16.02.06 11:13) [45]

Я все-таки не понимаю. Вот есть у меня файл, куда данные пишутся и читаются. Файл большой, что туда пишется - известно моей программе и Аллаху. С какой стати антивирус его сканирует при каждом открытии ?


 
Deka ©   (2006-02-16 11:48) [47]

Обычно антивирусам можно "объяснить" какие файлы надо игнорировать и не проверять их. Например поставить в список исключения сканирования *.dbf - вот и нет тормозов с файлами баз данных. Кстати может быть и у веба есть такой списочек?


 
Rouse_ ©   (2006-02-16 11:51) [48]


> С какой стати антивирус его сканирует при каждом открытии ?

Все вопросы к разработчикам антивируса... :)
Если производиться перехват доступа к файлу но список проверенных файлов не храниться (с просчетом КС к примеру), то такой подход вполне уместен :)
ЗЫ: ИМХО мы свалились в глобальный оффтоп :)


 
Игорь Шевченко ©   (2006-02-16 12:10) [49]

Rouse_ ©   (16.02.06 11:51) [48]

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


 
kaZaNoVa ©   (2006-02-16 13:00) [50]

любой "нормальный" антивирус, имхо, проверяет файл, если его открыли для записи ..  это и есть зло .. некоторые вообще всегда проверяют все файлы, даже если с него просто иконку взять надо .. (проводник Windows)


 
Игорь Шевченко ©   (2006-02-16 13:09) [51]

kaZaNoVa ©   (16.02.06 13:00) [50]


> любой "нормальный" антивирус, имхо, проверяет файл, если
> его открыли для записи


Ты ошибаешься. Зачем проверять любой файл ?


 
kaZaNoVa ©   (2006-02-16 14:16) [52]

Игорь Шевченко ©   (16.02.06 13:09) [51]

> Зачем проверять любой файл

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

так как вначале он всё-же анализирует - то можно, имхо, считать, что любой антивирус с настройками "проферять файлы по формату" - проверяет все файлы.


 
Игорь Шевченко ©   (2006-02-16 14:23) [53]

kaZaNoVa ©   (16.02.06 14:16) [52]


> возможно и ошибаюсь, но обычно антивирус обязательно считает
> часть файла, чтобы распознать формат


У тебя, прости, откуда такие сведения ?

Кроме того, на свете очень много файлов, чей формат распознать не под силу ни одному антивирусу.


> а в это время доступа к файлу то еще нет ..


Как ты понимаешь, системный сервис NtOpenFile, который и перехватывает собственно, антивирус, сам читает какие-то данные, относящиеся к файлу, и доступа в это время к файлу тоже "-то еще нет", однако никого подобная задержка не беспокоит.


 
kaZaNoVa ©   (2006-02-16 14:59) [54]

Игорь Шевченко ©   (16.02.06 14:23) [53]
У тебя, прости, откуда такие сведения ?

из наблюдений за его работой.

формат файла часто можно узнать, прочитав начало файла ...  (PE-заголовок там или еще что-нить характерное)


> Кроме того, на свете очень много файлов, чей формат
> распознать не под силу ни одному антивирусу.

конечно, и соответсвенно он ин и не проверяет ...

наблюдения, которые мне дают отснования делать подобные выводы- например если на дискете есть зараженный вирусом EXE-файл- то при открытии такой дискеты из проводника (считывание иконок) антивирус находит зараженный файл и ругается ...

далее, если зараженный файл просто по XOR"ить то конечно уже не находить ничего, а если exe- файл просто переименовать - то находит ..

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

если я в чем-то ошибаюсь, заранее прошу извинить меня, сам никогда антивирусы не писал


 
Игорь Шевченко ©   (2006-02-16 15:43) [55]


> если я в чем-то ошибаюсь, заранее прошу извинить меня, сам
> никогда антивирусы не писал


Ошибаешься.


> например если на дискете есть зараженный вирусом EXE-файл-
>  то при открытии такой дискеты из проводника (считывание
> иконок) антивирус находит зараженный файл и ругается ...
>


Разумно, это он и должен делать. Файл открывается проводником, читается.

Но речь, если ты помнишь, шла не об этом, а о том, что антивирус надо выбрасывать, по твоему утверждению.


> далее, если зараженный файл просто по XOR"ить то конечно
> уже не находить ничего


но в этом случае он перестает быть зараженным.


> в любом случае антивирус для своего анализа считывает часть
> файла, пусть и небольшую, но это затрата системных ресурсов,
>  


Любой чтение файла есть затрата системных ресурсов. Абсолютно любое. В данном случае файл читается проводником, что тоже является затратой системных ресурсов, так как в процессе извлечения иконки системой выполняется масса увлекательных действий.


> и каждый сам в праве выбирать, риск и быстродействие, либо
> задержки и некоторый уровень защиты


Безусловно. Но на этом форуме выбор будет направлен в сторону увеличения уровня защиты, в отличие от других форумов.


 
kaZaNoVa ©   (2006-02-16 16:05) [56]

Игорь Шевченко ©   (16.02.06 15:43) [55]

> Ошибаешься.

ясно, признаю свою неправоту.


> Но речь, если ты помнишь, шла не об этом, а о том, что
> антивирус надо выбрасывать, по твоему утверждению

думаю всё-же не стоит :)



Страницы: 1 2 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.64 MB
Время: 0.013 c
6-1137681624
Volf_555
2006-01-19 17:40
2006.05.07
Как из кода html выделить только текст?


2-1145374069
Lk
2006-04-18 19:27
2006.05.07
Работа с файлами


2-1145289625
ilifant
2006-04-17 20:00
2006.05.07
Запуск приложения один раз


2-1144849520
ANB
2006-04-12 17:45
2006.05.07
Как правильно зарегить плагин к 1С ?


2-1145540171
cardexc
2006-04-20 17:36
2006.05.07
БД, ошибка добавления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский