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

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

?? nkcrypt.c

?? 一份加密算法的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
			pStructTwo = FindAndCreateStruct(4);
			if ( pIrp->MdlAddress->MdlFlags != (MDL_SOURCE_IS_NONPAGED_POOL|MDL_MAPPED_TO_SYSTEM_VA) )
				dPvoid = pIrp->MdlAddress->MappedSystemVa;
			else
				dPvoid = MmMapLockedPagesSpecifyCache( pIrp->MdlAddress, KernelMode, 1, NULL, 0, 0x10);
			if ( dPvoid != NULL)
			{
				memcpy( dPvoid, pStructTwo->StartAddress, pIrpStack->Parameters.DeviceIoControl.OutputBufferLength);
				return Status;
			}
			else
				Status = STATUS_INSUFFICIENT_RESOURCES;	
		}
		break;	
	case 0x2201a6:
		{
			if ( g_Buffer17H->DoUnhookKBInt || g_Buffer17H->DoDetach)
				CopyStructFour( &VarStructFour);
			if ( pIrp->MdlAddress->MdlFlags != (MDL_SOURCE_IS_NONPAGED_POOL|MDL_MAPPED_TO_SYSTEM_VA) )
				dPvoid = pIrp->MdlAddress->MappedSystemVa;
			else
				dPvoid = MmMapLockedPagesSpecifyCache( pIrp->MdlAddress, KernelMode, 1, NULL, 0, 0x10);
			if ( dPvoid != NULL)
			{
				memcpy( dPvoid, &VarStructFour, pIrpStack->Parameters.DeviceIoControl.OutputBufferLength);
				return Status;
			}
			else
				Status = STATUS_INSUFFICIENT_RESOURCES;								
		}
		break;	
	case 0x2201e4:
		CanDeleteStruct = *(DWORD*)( pIrp->AssociatedIrp.SystemBuffer);
		break;
	case 0x2203f4:
		CopyDataToCArray( pDeviceObj, pIrp);
		break;
	case 0x22020c:
		g_DUnKnown2 = *(DWORD*)( pIrp->AssociatedIrp.SystemBuffer);
		break;
	case 0x220324:
		Status = OpenEventHandle( pIrp, pIrpStack);
		break;	
	case 0x2203c4:
		{
			if ( g_Buffer17H->DoUnhookKBInt && g_Buffer17H->DoDetach )
			{
				if ( g_bDoSaveAndHook)
				{
					g_StructFour.bFirst = false;
					g_StructFour.bSecond = false;
					g_StructFour.Array[0] = 0;
				}
				else
				{
					HookAndSaveKBInt();
					g_KBIntEntry = GetKeyBoardIntEntry();
					g_StructFour.bFirst = false;
					g_StructFour.bSecond = false;
					g_StructFour.Array[0] = 0;	
				}
			}
			else if ( g_Buffer17H->DoUnhookKBInt && !g_Buffer17H->DoDetach )
			{
				if ( g_bDoSaveAndHook)
				{
					g_StructFour.bFirst = false;
					g_StructFour.bSecond = false;
					g_StructFour.Array[0] = 0;
				}
				else
				{
					HookAndSaveKBInt();
					g_KBIntEntry = GetKeyBoardIntEntry();
					g_StructFour.bFirst = false;
					g_StructFour.bSecond = false;
					g_StructFour.Array[0] = 0;	
				}
				return Status;
			}
			else if( !g_Buffer17H->DoUnhookKBInt && !g_Buffer17H->DoDetach )
				return Status;
			if ( g_bUnknown2 == false )
			{
				Status = SetTwoBoolFalse( pDeviceObj, pIrp);
				if ( NT_SUCCESS( Status))
				{
					g_bUnknown2 = false;
				}
				else
				{
					if ( g_IsNT4 == false)
					{
						if ( g_bUnknown1)
						{
							AddDeviceFun1 = g_AttachInfo.pDeviceObjArray[0]->DriverObject->DriverExtension->AddDevice;
							g_AttachInfo.pDeviceObjArray[0]->DriverObject->DriverExtension->AddDevice = AddDevice;
							DispatchFun1 = g_AttachInfo.pDeviceObjArray[0]->DriverObject->MajorFunction[IRP_MJ_POWER];
							g_AttachInfo.pDeviceObjArray[0]->DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchFun2;
						}
					}
				}
			}
		}
		break;	
	case 0x2203f2:			
		{
			pDeviceObj = (PDEVICE_OBJECT)0x402;
			if ( pIrp->MdlAddress->MdlFlags != (MDL_SOURCE_IS_NONPAGED_POOL|MDL_MAPPED_TO_SYSTEM_VA) )
				dPvoid = pIrp->MdlAddress->MappedSystemVa;
			else
				dPvoid = MmMapLockedPages( pIrp->MdlAddress, KernelMode);
			// ???
			memcpy( dPvoid, &pDeviceObj, pIrpStack->Parameters.DeviceIoControl.OutputBufferLength);	
		}		
		break;	
	case 0x2203f8:	
		CopyDataToPVoidUnknown1( pDeviceObj, pIrp);
		break;
	case 0x2203fe:
		DoNothing( pDeviceObj, pIrp);
		break;	
	case 0x220402:
		MD5String( pDeviceObj, pIrp);
		break;	
	default:
	    break;
	}
	
	return Status;
}
NTSTATUS DriverDispatch( IN PDEVICE_OBJECT pDeviceObj,IN PIRP pIrp)
{
	NTSTATUS Status;
	PIO_STACK_LOCATION pIrpStack;
	DWORD Index=1;
	DWORD dTmp=0;
	
	if ( pIrp == NULL)
		return STATUS_SUCCESS;
	pIrpStack = IoGetCurrentIrpStackLocation( pIrp);
	if ( pDeviceObj == g_DeviceObj)
	{
		switch( pIrpStack->MajorFunction)
		{
		case IRP_MJ_CREATE:
			Status = SaveKBIntEntryOnce( pDeviceObj, pIrp);
			break;
		case IRP_MJ_CLOSE:
			Status = DoNothing( pDeviceObj, pIrp);
		    break;
		case IRP_MJ_DEVICE_CONTROL:
			Status = DispatchIoControl( pDeviceObj, pIrp);
			break;
		case IRP_MJ_SHUTDOWN:
			{
				if ( g_Buffer17H->DoDetach )
				{
					if ( g_bUnknown1 && !g_IsNT4 && g_bUnknown2)
					{
						g_AttachInfo.pDeviceObjArray[0]->DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchFun1;
						g_AttachInfo.pDeviceObjArray[0]->DriverObject->DriverExtension->AddDevice = AddDeviceFun1;
						DetachAndDeleteDevice();
						g_bUnknown2 = false;
					}
				}
			}
			break;
		case IRP_MJ_CLEANUP:
			{
				if ( g_Buffer17H->DoUnhookKBInt && (!CanDeleteStruct) )
				{
					if( g_pVoidUnknown1 != NULL)
						ExFreePool( g_pVoidUnknown1);
					UnHookKBInt();
					DeleteAllStructByPid( pDeviceObj, pIrp);
					g_DUnKnown1 = 0;
				}
			}
			break;
		case IRP_MJ_POWER:
			Status = STATUS_SUCCESS;
			break;
		default:
			Status = STATUS_UNSUCCESSFUL;
		    break;
		}
		pIrp->IoStatus.Status = Status;
		if( Status == STATUS_SUCCESS)
			pIrp->IoStatus.Information = pIrpStack->Parameters.DeviceIoControl.OutputBufferLength;
		else
			pIrp->IoStatus.Status = STATUS_SUCCESS;
		IofCompleteRequest( pIrp, 0);
		return Status;
	}
	else if ( g_AttachInfo.pSourceDeviceObjArray[0] == pDeviceObj)
	{
		if ( pIrpStack->MajorFunction != 0x3 )
		{
			if ( g_AttachInfo.pAttachDeviceObjArray[0] != NULL)
			{
				pIrp->CurrentLocation = (CHAR)((DWORD)pIrp->CurrentLocation+1);
				pIrp->Tail.Overlay.CurrentStackLocation = (PIO_STACK_LOCATION)((DWORD)pIrpStack+0x24);
				Status = IofCallDriver( g_AttachInfo.pAttachDeviceObjArray[0], pIrp);
				if ( g_bUnknown3)
				{
					if ( g_AttachNumber*2+2 == g_intUnknown1)
					{
						if ( g_IsNT4 == false)
						{
							g_bCanAttach = true;
							NdisInitializeTimer( &g_NdisTimer, TimerFunction, pDeviceObj);
							NdisSetTimer( &g_NdisTimer, 0x1f4);
						}
						g_intUnknown1 = 1;
						g_bUnknown3 = false;
					}
					else
						g_intUnknown1++;
					return Status;
				}
				else
					return Status;
				
			}
			else
			{
				pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
				pIrp->IoStatus.Information = 0;
				IofCompleteRequest( pIrp, 0);
				return STATUS_INVALID_DEVICE_REQUEST;
			}
		}
		else
			return MyIoCallDriver( g_AttachInfo.pAttachDeviceObjArray[0], pIrp);	
	}
	else
	{
		if ( g_AttachNumber >= 1)
		{
			for ( Index=1; Index<= g_AttachNumber; Index++)
			{
				if ( pDeviceObj == g_AttachInfo.pSourceDeviceObjArray[Index])
				{
					dTmp = Index;
				}
			}
			if ( dTmp != 0)
			{
				if ( pIrpStack->MajorFunction != 0x3)
				{
					if ( g_AttachInfo.pAttachDeviceObjArray[dTmp] != NULL)
					{
						pIrp->CurrentLocation = (CHAR)((DWORD)pIrp->CurrentLocation+1);	
						pIrp->Tail.Overlay.CurrentStackLocation = (PIO_STACK_LOCATION)((DWORD)pIrpStack+0x24);						
						Status = IofCallDriver( g_AttachInfo.pAttachDeviceObjArray[dTmp], pIrp);
						if ( g_bUnknown3)
						{
							if ( g_intUnknown1 == g_AttachNumber*2)
							{
								if ( g_IsNT4 == 0)
								{
									g_bCanAttach = true;
									NdisInitializeTimer( &g_NdisTimer, TimerFunction, pDeviceObj);
									NdisSetTimer( &g_NdisTimer, 0x1f4);									
								}
								g_intUnknown1 = 1;
								g_bUnknown3 = false;
							}
							else
								g_intUnknown1++;
						}
						return Status;
					}
				}
				else
					return MyIoCallDriver( g_AttachInfo.pAttachDeviceObjArray[dTmp], pIrp);
			}
		}	
	}
	pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
	pIrp->IoStatus.Information = 0;
	IofCompleteRequest( pIrp, 0);
	return STATUS_INVALID_DEVICE_REQUEST;	
}

NTSTATUS DriverEntry( PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegPath)
{
	//  將壓棧的ebx做參數  ????
	//  原匯編代碼沒有定義這個 PKAFFINITY,只是隨意壓了一下???
	PKAFFINITY Affinity;
	NTSTATUS ret_status;
	int i;  // 從 0至IRP_MJ_MAXIMUM_FUNCTION...

	// 獲取16字節的進程名字在EPROC中的偏移
	NameOffsetInEproc = GetNameOffsetInEproc();
	GetVersionInfo();
	if ( KeNumberProcessors > 1)
	{
		g_IsMulProcesser = TRUE;
		//  強制切換處理器....
		KeSetAffinityThread( KeGetCurrentThread(), 1);
	}
//			Isa = 1,  BusNumber = 1 ,BusInterruptLevel = 1 , BusInterruptVector = 1
//			獲得鍵盤的中斷向量號....
	g_IntVector = HalGetInterruptVector( 1,1,1,1, &g_Kirql, &Affinity);

	if ( g_IntVector > 0xff)
		g_IntVector -= 0x100;
	if ( g_IntVector == 0 )
		g_IntVector = HalGetInterruptVector( 1,0,1,1, &g_Kirql, &Affinity);

	if ( g_IntVector > 0xff)
		g_IntVector -= 0x100;
	if ( g_IntVector == 0 )
	{
		if ( g_IsNT4)
		{
			g_IntVector = 0x31;
		}
	}
	if ( g_IsMulProcesser)
	{
		if ( KeSetAffinityThread( KeGetCurrentThread(),2) < 0)
		{
			g_IsMulProcesser = 0;
		}
		
		g_IntVector2 = HalGetInterruptVector( 1,1,1,1, &g_Kirql, &Affinity);
		if ( g_IntVector2 > 0xff)
			g_IntVector2 -= 0x100;
		if ( g_IntVector2 == 0 )
			g_IntVector2 = HalGetInterruptVector( 1,0,1,1, &g_Kirql, &Affinity);
		if ( g_IntVector2 > 0xff)
			g_IntVector2 -= 0x100;		
		if ( g_IsNT4)
		{
			g_IntVector2 = 0x31;
		}
		KeSetAffinityThread( KeGetCurrentThread(),2);
	}
	for( i = 0; i< IRP_MJ_MAXIMUM_FUNCTION; i++)
		pDriverObj->MajorFunction[i] = DriverDispatch;
	pDriverObj->DriverUnload = DriverUnload;
	
	ret_status = CreateDevice( pDriverObj, pRegPath);
	if ( ret_status >= 0 )
	{
		// registers the driver to receive an IRP_MJ_SHUTDOWN IRP 
		// when the system is shut down
		ret_status = IoRegisterShutdownNotification( g_DeviceObj);
		if ( ret_status >=0 )
		{
			//缺少兩個賦值..
			g_DriverObj = pDriverObj;
			g_pUnicodeString = pRegPath;
			ret_status = AllocateBuffer();
			if ( ret_status >= 0)
			{
				InitializeListHead( &g_LockList1.pList);
				KeInitializeSpinLock( &g_LockList1.Lock);
				InitializeListHead( &g_LockList2.pList);
				KeInitializeSpinLock( &g_LockList2.Lock);
				InitializeListHead( &g_IDTLockList.pList);
				KeInitializeSpinLock( &g_IDTLockList.Lock);				
				InitializeListHead( &g_LockList4.pList);
				KeInitializeSpinLock( &g_LockList4.Lock);
				KeInitializeSpinLock( &g_SpinLock5);
				KeInitializeDpc( &g_Kdpc, DeferredRoutine, 0);
			}
		}
	}

	if ( ret_status != STATUS_SUCCESS )
	{
		DriverUnload( pDriverObj);
	}
	return ret_status;
}

DWORD GetKeyBoardIntEntry()		//返回g_IntVector號中斷向量的入口地址,只支持單核
{
	KIRQL NewIrql;
	DWORD IdtAddr=0;		// g_IntVector號中斷向量的入口地址
	
	if ( g_IsNT4)
	{
		NewIrql = KfAcquireSpinLock( &g_IDTLockList.Lock);
	}
	g_pIDTR = &g_IDTR;
	__asm sidt g_IDTR;	
	IdtAddr = ((PIDTENTRY)( g_pIDTR->IDTBase + g_IntVector*8))->HiOffset;
	IdtAddr = IdtAddr<<0x10;
	IdtAddr |= ((PIDTENTRY)( g_pIDTR->IDTBase + g_IntVector*8))->LowOffset;
/*
	_asm
	{
		mov     eax, g_pIDTR
		mov     ecx, g_IntVector
		mov     eax, [eax+2]
		movzx   esi, word ptr [eax+ecx*8+6]
		lea     eax, [eax+ecx*8]
		shl     esi, 10h
		movzx   eax, word ptr [eax]
		or      esi, eax			
	}
*/
	if ( g_IsNT4)
	{
		KfReleaseSpinLock( &g_IDTLockList.Lock, NewIrql);
	}
	return IdtAddr;
}

void SaveKBIntEntry()
{
	g_KBIntEntry = GetKeyBoardIntEntry();
}

NTSTATUS SaveKBIntEntryOnce( PDEVICE_OBJECT pDeviceObj, PIRP pIrp)
{
	if ( g_bAlreadyKBEntry == false)
	{
		SaveKBIntEntry();
		g_bAlreadyKBEntry = true;
	}
	return STATUS_SUCCESS;
}

void FreeMDL( PVOID BaseAddress,PMDL Mdl)
{
	if ( BaseAddress == 0)
		return;
	if ( Mdl == 0)
		return;
	MmUnmapLockedPages( BaseAddress, Mdl);
	IoFreeMdl( Mdl);
	return;
}


void ClearLinkDevice()
{
	UNICODE_STRING SymbolicLinkName;
	
	if ( g_DeviceObj == NULL)
		return;
	RtlInitUnicodeString( &SymbolicLinkName, L"\\DosDevices\\npkcrypt");
	IoDeleteSymbolicLink( &SymbolicLinkName);
	IoDeleteDevice( g_DeviceObj);
}

bool IsLetterCode( char code)
{
	int i;
	for ( i=0; i<0x34; i++)
	{
		if ( LetterScanCode[i] == code)
			return true;		
	}
	return false;
}

bool IsInputPlusCode( char code)
{
	int i;
	for ( i=0; i<0x66; i++)
	{
		if ( CanBeInputCodePlus[i] == code)
			return true;		
	}
	return false;
}

bool IsInputCode( char code)
{
	int i;
	for ( i=0; i<0x64; i++)
	{
		if ( CanBeInputCode[i] == code)
			return true;		

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
伦理电影国产精品| 色妞www精品视频| av中文字幕不卡| 777色狠狠一区二区三区| 国产精品美女久久久久久久网站| 三级影片在线观看欧美日韩一区二区| 国产精品一区二区久久精品爱涩| 91精品国产乱| 夜色激情一区二区| 99久久综合精品| 国产午夜精品一区二区| 久久精品国产亚洲a| 9191精品国产综合久久久久久 | 自拍偷在线精品自拍偷无码专区| 午夜精品一区二区三区电影天堂| av电影在线观看不卡| 日韩免费观看2025年上映的电影 | 日本欧美在线看| 欧洲av一区二区嗯嗯嗯啊| 国产精品丝袜一区| 精品一区二区三区视频| 欧美日本在线视频| 性久久久久久久久久久久| 91久久人澡人人添人人爽欧美 | 亚洲五月六月丁香激情| 91麻豆.com| 亚洲免费在线看| 99r国产精品| 亚洲视频一区二区在线观看| 国产成人免费在线观看不卡| 久久蜜桃av一区精品变态类天堂| 麻豆国产欧美日韩综合精品二区| 91精品一区二区三区在线观看| 午夜av一区二区三区| 91黄色激情网站| 亚洲福中文字幕伊人影院| 欧美色图激情小说| 亚洲成av人片一区二区| 欧美日韩国产高清一区二区| 五月天久久比比资源色| 7777女厕盗摄久久久| 捆绑紧缚一区二区三区视频| 久久综合久久综合久久综合| 国产精品综合av一区二区国产馆| 国产三级精品三级| 不卡的av电影| 亚洲电影中文字幕在线观看| 欧美电影影音先锋| 久久激情综合网| 中文字幕精品一区二区三区精品| av在线这里只有精品| 亚洲一区二区三区四区在线免费观看| 欧美三区在线视频| 老司机午夜精品99久久| 欧美韩国日本不卡| 91久久奴性调教| 久久成人麻豆午夜电影| 中国av一区二区三区| 精品视频一区 二区 三区| 美女视频网站久久| 国产精品丝袜黑色高跟| 欧美年轻男男videosbes| 国产成人免费视| 亚洲在线观看免费视频| 欧美精品一区二区高清在线观看| 成人精品免费网站| 亚洲国产三级在线| 久久亚洲一区二区三区明星换脸 | 亚洲日韩欧美一区二区在线| 91麻豆精品国产91久久久| 成人激情动漫在线观看| 五月天中文字幕一区二区| 久久在线观看免费| 在线观看日产精品| 韩国理伦片一区二区三区在线播放| 中文字幕一区二区5566日韩| 欧美一区二区三区视频在线观看| 成人免费视频网站在线观看| 日本不卡不码高清免费观看| 中文字幕一区二区三中文字幕| 欧美精品v国产精品v日韩精品| 成人h精品动漫一区二区三区| 日韩av中文在线观看| 国产精品免费免费| 精品国产三级a在线观看| 欧美中文字幕亚洲一区二区va在线 | 国产一区啦啦啦在线观看| 一区二区三区欧美日| 国产欧美精品国产国产专区| 欧美一区二区视频在线观看2020 | 日日骚欧美日韩| 国产精品家庭影院| 精品国产3级a| 日韩你懂的电影在线观看| 日本韩国欧美在线| 91无套直看片红桃| 国产91精品免费| 精油按摩中文字幕久久| 免费的国产精品| 午夜成人免费电影| 亚洲成a人片综合在线| 亚洲精品写真福利| 成人欧美一区二区三区1314| 国产日韩精品一区| 国产亚洲综合色| 久久婷婷综合激情| 精品国产乱码久久久久久久| 欧美精品在线一区二区三区| 欧美视频一区二区三区四区| 色婷婷久久久久swag精品 | 精品一二三四区| 久久69国产一区二区蜜臀| 蜜桃久久久久久| 久久精品国产久精国产爱| 日本不卡视频在线观看| 老司机一区二区| 国内精品自线一区二区三区视频| 久久69国产一区二区蜜臀| 极品少妇xxxx精品少妇偷拍| 精品一区二区国语对白| 国产ts人妖一区二区| 成人在线视频一区| jizzjizzjizz欧美| 91黄色激情网站| 7777精品伊人久久久大香线蕉超级流畅| 欧美系列亚洲系列| 日韩色在线观看| 久久久久久久性| 国产精品欧美久久久久一区二区 | 日本视频中文字幕一区二区三区| 奇米四色…亚洲| 国产乱码精品一区二区三区av| 国产成人精品aa毛片| 91麻豆视频网站| 制服丝袜中文字幕亚洲| 精品久久久久久无| 亚洲国产成人午夜在线一区| 亚洲免费视频中文字幕| 亚洲国产你懂的| 久久精品噜噜噜成人av农村| 国产精品1区2区| 日本电影欧美片| 日韩欧美中文字幕一区| 欧美激情中文不卡| 亚洲一区二区三区四区在线观看| 久久精品国产网站| 一本色道a无线码一区v| 在线不卡一区二区| 国产色婷婷亚洲99精品小说| 亚洲精品伦理在线| 精品中文av资源站在线观看| 一本到不卡精品视频在线观看| 91精品国产一区二区三区蜜臀| 国产午夜精品福利| 亚洲第一成人在线| 国产成人自拍高清视频在线免费播放| 色爱区综合激月婷婷| 精品乱码亚洲一区二区不卡| 亚洲图片欧美激情| 精品一二线国产| 欧美色男人天堂| 国产精品第五页| 美女国产一区二区| 欧美日韩三级视频| 国产精品免费人成网站| 久久精品国产久精国产| 欧美性生活影院| 国产精品麻豆久久久| 蜜臀久久99精品久久久久久9| 91亚洲精品乱码久久久久久蜜桃| 欧美成人欧美edvon| 亚洲电影一区二区| 99v久久综合狠狠综合久久| 亚洲精品在线网站| 日韩精品乱码免费| 色婷婷国产精品| 国产精品久久久久影视| 国内精品伊人久久久久av影院| 欧美视频一区二| 亚洲另类春色国产| 不卡视频一二三四| 精品国偷自产国产一区| 日韩精品欧美成人高清一区二区| 欧美最猛黑人xxxxx猛交| 中文字幕一区日韩精品欧美| 高清视频一区二区| 国产午夜久久久久| 国产福利一区在线| 久久精品亚洲麻豆av一区二区 | 久久久久久久精| 久久99蜜桃精品| 日韩午夜电影在线观看| 日本成人在线网站| 91精品国产色综合久久不卡蜜臀| 亚洲国产欧美另类丝袜| 欧美日韩色综合| 日本亚洲欧美天堂免费| 91精品国产美女浴室洗澡无遮挡| 亚洲午夜成aⅴ人片| 欧美精品第1页|