コード例 #1
0
ファイル: main.cpp プロジェクト: hackshields/antivirus
BOOL
Initialize()
{
	BOOL	Res = TRUE;
	//CKl_Reg Reg;
	
	/*
	if ( KL_SUCCESS == Reg.OpenKey(L"\\registry\\machine\\system\\CurrentControlSet\\Services\\VxD\\KL1") )
	{
	wchar_t	Buffer[100];	
	ULONG	Size = sizeof ( Buffer );
	ULONG	Type = REG_SZ;
	wchar_t	Name[100];
	ULONG   NameSize = sizeof ( Name );
	
	  Reg.CreateSubKey(L"SubKey");
	  Reg.EnumValues(2, (PWCHAR)Name, &NameSize );
	  Reg.QueryValue(L"TraceFile", &Type, Buffer, &Size );
	  Reg.CloseKey();
	  }
	*/
	// NdisInitializeWrapper(&WrapperHandle, NULL, NULL, NULL );
	
	//if ( isWinME() )
	
	{
		isWin98 = TRUE;
	}	
	
	
	AllocateSpinLock( &g_PCP_Lock );
	
	Res = HookNdis();
	
	return Res;
}
コード例 #2
0
ファイル: HookNdis.c プロジェクト: geemion/HookNdis
NTSTATUS
DriverEntry (
	PDRIVER_OBJECT DriverObject,
	PUNICODE_STRING RegistryString
	)
/*++

Routine Description:

	Diver entry point. Initializes global variables and complete hook operation.


Arguments:

	DriverObject - A pointer to this driver, provided by system.

	RegistryString - A pointer to register path used by this driver, provided by system.


Return Value:

	Returns corresponding NTSTATUS to indicate success or failure.


Author:

	xiaonie

	2012/07/12


--*/
{
	NTSTATUS status;
	DbgPrint("NDIS Hook ------ start!\r\n");

	// check os version
	if (OS_VERSION_XP != GetOsVersion()) {
		DbgPrint("Only XP supported!\r\n");
		return STATUS_UNSUCCESSFUL;
	}

	// setup unload routine for this driver
	DriverObject->DriverUnload = OnUnload;

	// init global viaribles.
	KeInitializeSpinLock(&g_lock);
	InitializeListHead(&g_linkListHead);

	NdisAllocatePacketPool(&status,&g_PacketPool, 0x1000, PROTOCOL_RESERVED_SIZE_IN_PACKET);
	if (status != NDIS_STATUS_SUCCESS/* || g_PacketPool == NULL*/) {
		DbgPrint("alloc packet pool failed!\r\n");
		return status;
	}

	NdisAllocateBufferPool(&status, &g_BufferPool, 0x10);
	if(status != NDIS_STATUS_SUCCESS/* || g_BufferPool == NULL*/) {
		DbgPrint("alloc buffer pool failed!\r\n");
		NdisFreePacketPool(g_PacketPool);
		return status;
	}

	// hook nids routines
	status = HookNdis();

	if (!NT_SUCCESS(status)) {
		DbgPrint("HookNdis failed!\r\n");
		NdisFreeBufferPool(g_BufferPool);
		NdisFreePacketPool(g_PacketPool);
	}
	return status;
}