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

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

?? dispatch.c

?? VC實現的系統HOOK,可以對系統的中斷情況查詢。
?? C
字號:
/*
InterruptHook
Copyright (C) 2003  Alexander M.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

#include <ntddk.h>
#include "dispatch.h"
#include "init.h"
#include "hook.h"
#include "iocontrol.h"
#include "handler.h"
#include "debug.h"

NTSTATUS
IoReadWrite( 
		IN	PDEVICE_OBJECT		pDeviceObject, 
		IN	PIRP				pIrp )
{
	NTSTATUS				iStatus = STATUS_SUCCESS;
	PIO_STACK_LOCATION		pStack;
	ULONG					iTransfered = 0;

	pStack = IoGetCurrentIrpStackLocation( pIrp );
	
	pIrp->IoStatus.Status		= iStatus;
	pIrp->IoStatus.Information	= iTransfered;
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	return iStatus;
}

NTSTATUS
IoDeviceControl( 
		IN	PDEVICE_OBJECT		pDeviceObject, 
		IN	PIRP				pIrp )
{
	NTSTATUS				iStatus = STATUS_SUCCESS;
	PIO_STACK_LOCATION		pStack;
	ULONG					iTransfered = 0;
	IDT						Idt;
	INT_VECTOR				Vec;

	pStack = IoGetCurrentIrpStackLocation( pIrp );
	
	switch( pStack->Parameters.DeviceIoControl.IoControlCode )
	{
		case IOCTL_HOOK_INT:
			if( pStack->Parameters.DeviceIoControl.InputBufferLength != sizeof(UCHAR) )
			{
				iStatus = STATUS_INVALID_PARAMETER;
				iTransfered = sizeof(UCHAR);
				break;
			}

			DPRINT( "IoDeviceControl: Hooking Int 0x%.2X\n", *(UCHAR *)pIrp->AssociatedIrp.SystemBuffer );

			LoadIDT( &Idt );
			LoadINTVector( 
				&Idt, 
				*(UCHAR *)pIrp->AssociatedIrp.SystemBuffer, 
				&Vec );
			DWORD_TO_VEC_OFFSET( Vec, InternalHandlers[*(UCHAR *)pIrp->AssociatedIrp.SystemBuffer] );
			SaveINTVector( 
				&Idt, 
				*(UCHAR *)pIrp->AssociatedIrp.SystemBuffer, 
				&Vec );
			
			DPRINT( "IoDeviceControl: Hooking successful\n" );
			break;

		case IOCTL_UNHOOK_INT:
			if( pStack->Parameters.DeviceIoControl.InputBufferLength != sizeof(UCHAR) )
			{
				iStatus = STATUS_INVALID_PARAMETER;
				iTransfered = sizeof(UCHAR);
				break;
			}

			DPRINT( "IoDeviceControl: Unhooking Int 0x%.2X\n", *(UCHAR *)pIrp->AssociatedIrp.SystemBuffer );
			
			LoadIDT( &Idt );
			LoadINTVector( 
				&Idt, 
				*(UCHAR *)pIrp->AssociatedIrp.SystemBuffer, 
				&Vec );
			Vec.wHighOffset = OriginalHandlers[*(UCHAR *)pIrp->AssociatedIrp.SystemBuffer].wHighOffset;
			Vec.wLowOffset = OriginalHandlers[*(UCHAR *)pIrp->AssociatedIrp.SystemBuffer].wLowOffset;
			SaveINTVector( 
				&Idt, 
				*(UCHAR *)pIrp->AssociatedIrp.SystemBuffer, 
				&Vec );
			
			DPRINT( "IoDeviceControl: Unhooking successful\n" );
			break;

		case IOCTL_HOOK_ALL_INT:
			if( StartTime.QuadPart != 0 )
				break;

			DPRINT( "IoDeviceControl: Hooking all interrupts\n" );
			HookAllInterrupts();
			DPRINT( "IoDeviceControl: Hooking successful\n" );
			break;

		case IOCTL_DUMP_IDT:
			if( pStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(INT_VECTOR) * 256 )
			{
				iStatus = STATUS_BUFFER_TOO_SMALL;
				iTransfered = sizeof(INT_VECTOR) * 256;
				break;
			}

			memcpy( (void *)pIrp->AssociatedIrp.SystemBuffer, (const void *)&OriginalHandlers, sizeof(INT_VECTOR) * 256 );
			iTransfered = sizeof(INT_VECTOR) * 256;
			break;

		case IOCTL_GET_INT_COUNTS:
			if( pStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(__int64) * 256 )
			{
				iStatus = STATUS_BUFFER_TOO_SMALL;
				iTransfered = sizeof(__int64) * 256;
				break;
			}

			DPRINT( "IoDeviceControl: Retrieving interrupt counts\n" );

			__asm{ PUSHFD };
			__asm{ CLI };
			memcpy( (void *)pIrp->AssociatedIrp.SystemBuffer, (const void *)&InterruptCounts, sizeof(__int64) * 256 );
			__asm{ POPFD };
			iTransfered = sizeof(__int64) * 256;
			break;

		case IOCTL_GET_START_TIME:
			if( pStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(LARGE_INTEGER) )
			{
				iStatus = STATUS_BUFFER_TOO_SMALL;
				iTransfered = sizeof(LARGE_INTEGER);
				break;
			}

			memcpy( (void *)pIrp->AssociatedIrp.SystemBuffer, (const void *)&StartTime, sizeof(LARGE_INTEGER) );
			iTransfered = sizeof(LARGE_INTEGER);
			break;

		default:
			iStatus = STATUS_INVALID_PARAMETER;
			break;
	}

	pIrp->IoStatus.Status		= iStatus;
	pIrp->IoStatus.Information	= iTransfered;
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	return iStatus;
}

NTSTATUS
IoDispatch( 
		IN	PDEVICE_OBJECT		pDeviceObject, 
		IN	PIRP				pIrp )
{
	NTSTATUS				iStatus = STATUS_SUCCESS;

	pIrp->IoStatus.Status		= iStatus;
	pIrp->IoStatus.Information	= 0;
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	return iStatus;
}

VOID
Unload( 
		IN	PDRIVER_OBJECT		pDriverObject )
{
	UNICODE_STRING		SymlinkName;

	RtlInitUnicodeString( &SymlinkName, L"\\DosDevices\\InterruptHook" );
	IoDeleteSymbolicLink( &SymlinkName );

	if( gpCtrlDevice )
		IoDeleteDevice( gpCtrlDevice );

	RestoreNtVectors();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
5858s免费视频成人| 欧美在线小视频| 国产日产欧产精品推荐色| 国产美女精品在线| 国产日韩欧美精品在线| av一二三不卡影片| 一区二区高清在线| 欧美系列一区二区| 蜜桃传媒麻豆第一区在线观看| 日韩一区二区三区在线观看| 精品一区二区三区免费播放| 国产视频不卡一区| 日本高清不卡一区| 免费人成在线不卡| 国产清纯白嫩初高生在线观看91| 色综合一区二区三区| 天堂影院一区二区| 国产亚洲欧美激情| 欧美午夜理伦三级在线观看| 久久99国产精品久久99果冻传媒| 国产亲近乱来精品视频| 欧美中文字幕一区| 精品一区二区久久久| 中文字幕日本不卡| 欧美大片在线观看一区二区| 成人少妇影院yyyy| 亚欧色一区w666天堂| 国产亚洲自拍一区| 在线免费观看日韩欧美| 国产剧情av麻豆香蕉精品| 亚洲天堂中文字幕| 欧美大片在线观看| 欧美综合一区二区三区| 国产一区二区三区四区五区美女| 国产精品免费av| 欧美一级高清片| 色婷婷av一区| 粉嫩av一区二区三区粉嫩| 日韩精品一卡二卡三卡四卡无卡| 国产精品乱子久久久久| 91精品啪在线观看国产60岁| 成人福利在线看| 国内精品久久久久影院薰衣草 | 国产精品香蕉一区二区三区| 亚洲一区二区三区在线看| 欧美激情中文字幕| 2021久久国产精品不只是精品| 色爱区综合激月婷婷| 成人三级伦理片| 香蕉成人啪国产精品视频综合网| 国产精品国产三级国产a| 久久综合久色欧美综合狠狠| 欧美日韩精品一区二区三区四区| a在线欧美一区| 盗摄精品av一区二区三区| 久久精品国内一区二区三区| 亚洲1区2区3区4区| 亚洲国产cao| 樱桃国产成人精品视频| 国产精品久99| 欧美—级在线免费片| 久久久久久99久久久精品网站| 日韩免费看的电影| 3d动漫精品啪啪一区二区竹菊| 欧美在线免费播放| 色婷婷av一区二区三区gif| 一本在线高清不卡dvd| www.亚洲在线| 91在线丨porny丨国产| 波多野结衣中文一区| 高清在线观看日韩| 国产成人在线电影| 国产成人免费视频| 成人免费高清在线观看| 懂色av中文字幕一区二区三区| 免费久久精品视频| 激情成人午夜视频| 国产在线一区二区综合免费视频| 奇米一区二区三区| 国产一区二三区| 丁香六月久久综合狠狠色| 成人av一区二区三区| 99久久精品免费精品国产| 色av一区二区| 欧美老年两性高潮| 91精品国产全国免费观看| 精品少妇一区二区三区日产乱码 | 蜜桃视频在线一区| 国产在线视视频有精品| 国产一区亚洲一区| 国产成人av一区二区| 成人高清伦理免费影院在线观看| 91年精品国产| 欧美日韩电影在线| 亚洲精品一区二区三区影院| 欧美国产欧美综合| 一区二区三区在线免费观看 | 久久国产欧美日韩精品| 国产在线精品视频| 91蜜桃免费观看视频| 欧美色视频在线观看| 欧美成人伊人久久综合网| 日本一区二区免费在线| 亚洲精品亚洲人成人网| 日韩专区中文字幕一区二区| 国产在线视视频有精品| 国产福利91精品| 91福利在线导航| 日韩精品在线看片z| 国产精品第一页第二页第三页| 亚洲成在人线在线播放| 精品影院一区二区久久久| av一区二区久久| 欧美一区中文字幕| 中文字幕亚洲一区二区va在线| 亚洲高清免费观看高清完整版在线观看| 蜜臀国产一区二区三区在线播放| 国产激情视频一区二区三区欧美| 91美女在线看| 欧美一区二区成人6969| 中文字幕一区二区三区乱码在线| 日韩影院免费视频| 不卡一区在线观看| 精品国产91亚洲一区二区三区婷婷| 亚洲欧美在线视频| 免费看欧美美女黄的网站| 99riav久久精品riav| 精品乱人伦小说| 一区二区国产盗摄色噜噜| 国产91丝袜在线观看| 91精品福利在线一区二区三区| 国产精品久久久久aaaa| 免费观看30秒视频久久| 欧美最猛黑人xxxxx猛交| 国产欧美日韩另类视频免费观看| 日韩精品欧美精品| 在线观看国产91| 国产精品美女www爽爽爽| 久久99精品国产| 91精品国产综合久久精品麻豆| 中文字幕在线不卡一区二区三区| 久久精品99久久久| 欧美精品黑人性xxxx| 亚洲激情图片qvod| a级高清视频欧美日韩| 久久在线观看免费| 麻豆国产一区二区| 69精品人人人人| 亚洲大片精品永久免费| 在线视频一区二区免费| 亚洲人一二三区| av不卡在线观看| 中文字幕一区二区三区不卡在线| 懂色av一区二区在线播放| 精品少妇一区二区三区日产乱码 | 欧美体内she精视频| 国产精品盗摄一区二区三区| 国产成人午夜精品5599 | 中文字幕亚洲不卡| 成人免费福利片| 国产精品第一页第二页第三页| 国产成人免费高清| 日本一区二区免费在线观看视频| 国产一二精品视频| 久久影院午夜片一区| 国产美女娇喘av呻吟久久| 欧美xxxx在线观看| 国模套图日韩精品一区二区| 精品国产91久久久久久久妲己| 精久久久久久久久久久| 久久久久久久久久电影| 国产剧情在线观看一区二区| 国产拍欧美日韩视频二区| 成人免费观看视频| 亚洲色图一区二区| 在线观看视频一区二区欧美日韩| 亚洲国产婷婷综合在线精品| 欧美精品久久久久久久久老牛影院| 亚洲成av人片观看| 日韩三级伦理片妻子的秘密按摩| 激情综合网av| 中文字幕一区二区三区在线观看| 色综合色狠狠天天综合色| 亚洲午夜激情网站| 欧美成人精品二区三区99精品| 国产美女精品人人做人人爽| 中文字幕一区二区三区在线播放| 色噜噜夜夜夜综合网| 午夜私人影院久久久久| 欧美成人欧美edvon| 成人涩涩免费视频| 亚洲成人777| 精品国产麻豆免费人成网站| 粉嫩av亚洲一区二区图片| 亚洲在线一区二区三区| 欧美一区二区私人影院日本| 国产suv精品一区二区883| 亚洲影院免费观看| 欧美电影免费观看高清完整版在线| 成人看片黄a免费看在线|