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

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

?? dbkdrvr.c.svn-base

?? 這是一段游戲修改工具的源代碼.ring3功能由dephi開發,驅動是C開發.希望對大家有幫助
?? SVN-BASE
?? 第 1 頁 / 共 5 頁
字號:
				ntStatus=STATUS_SUCCESS;
				break;
			}

		case IOCTL_CE_RESUMEPROCESS:            
			{
				struct input
				{
					ULONG processid;							
				} *inp;
				inp=Irp->AssociatedIrp.SystemBuffer;

                DbgPrint("IOCTL_CE_RESUMEPROCESS\n");

				DBKResumeProcess(inp->processid);
				ntStatus=STATUS_SUCCESS;
				break;
            }

case IOCTL_CE_ALLOCATEMEM:
			{
				struct input
				{
					ULONG ProcessID;
					PVOID BaseAddress;
					ULONG Size;
					ULONG AllocationType;
					ULONG Protect;
				} *inp;
				PEPROCESS selectedprocess;

				PVOID BaseAddress;
				SIZE_T RegionSize;


				inp=Irp->AssociatedIrp.SystemBuffer;
				BaseAddress=inp->BaseAddress;
				RegionSize=inp->Size;




				if (PsLookupProcessByProcessId((PVOID)(inp->ProcessID),&selectedprocess)==STATUS_SUCCESS)	
				{
					__try
					{
						KAPC_STATE apc_state;
						RtlZeroMemory(&apc_state,sizeof(apc_state));					
    						KeAttachProcess((PVOID)selectedprocess); //local process is much more fun!!!!

						DbgPrint("Switched Process\n");
						__try
						{
							DbgPrint("Calling ZwAllocateVirtualMemory\n");
							ntStatus=ZwAllocateVirtualMemory((HANDLE)-1,&BaseAddress,0,  &RegionSize,      inp->AllocationType,    inp->Protect);

							if ((ntStatus==STATUS_SUCCESS) && (HiddenDriver))
							{
								//initialize the memory with crap so it becomes paged
								int i;
								char *x;
								x=BaseAddress;
								for (i=0; i < (int)RegionSize;i++)
									x[i]=(unsigned char)i;
							}
							
							DbgPrint("ntStatus=%x\n");
							DbgPrint("BaseAddress=%p\n",BaseAddress);
							DbgPrint("RegionSize=%x\n",RegionSize);
							*(PULONG)Irp->AssociatedIrp.SystemBuffer=(ULONG)BaseAddress;

						}
						__finally
						{
							KeDetachProcess();
						}

					}
					__except(1)
					{
						ntStatus=STATUS_UNSUCCESSFUL;
						break;
					}


					ObDereferenceObject(selectedprocess);
				}

				break;
			}

		case IOCTL_CE_ALLOCATEMEM_NONPAGED:
			{
				struct input
				{
					ULONG Size;
				} *inp;
				PVOID address;
				char *x;
				int i;
				int size;

				inp=Irp->AssociatedIrp.SystemBuffer;
				size=inp->Size;

				address=ExAllocatePoolWithTag(NonPagedPool,size,0);
				*(PULONG)Irp->AssociatedIrp.SystemBuffer=(ULONG)address;

				if (address==0)
					ntStatus=STATUS_UNSUCCESSFUL;
				else
				{
					DbgPrint("Alloc success. Cleaning memory... (size=%d)\n",size);					
					
					x=address;
					DbgPrint("x=%p\n",x);
					for (i=0; i<size; i++)					
						x[i]=0;
					
					ntStatus=STATUS_SUCCESS;
				}

				break;
			}

		case IOCTL_CE_GETPROCADDRESS:
			{
				struct input
				{
					PCWSTR s;
				} *inp;
				UNICODE_STRING y;
				PVOID x;

				inp=Irp->AssociatedIrp.SystemBuffer;

				RtlInitUnicodeString(&y, inp->s);
				x=MmGetSystemRoutineAddress(&y);			

				RtlCopyMemory(Irp->AssociatedIrp.SystemBuffer,&x,4);
				ntStatus=STATUS_SUCCESS;

				break;
			}

		case IOCTL_CE_MAKEKERNELCOPY:
			{
				struct input
				{
					ULONG Base;
					ULONG KernelSize;
				} *inp;
				DbgPrint("IOCTL_CE_MAKEKERNELCOPY");
				inp=Irp->AssociatedIrp.SystemBuffer;
				ntStatus=makeKernelCopy(inp->Base, inp->KernelSize);			
				break;
			}

		case IOCTL_CE_GETVERSION:
			{
				*(PULONG)Irp->AssociatedIrp.SystemBuffer=dbkversion;	
				ntStatus=STATUS_SUCCESS;
				break;
			}

		case IOCTL_CE_INITIALIZE:
			{
				//find the KeServiceDescriptorTableShadow 
				struct input
				{
					ULONG AddressOfWin32K;
					ULONG SizeOfWin32K;
					ULONG NtUserBuildHwndList_callnumber;
					ULONG NtUserQueryWindow_callnumber;
					ULONG NtUserFindWindowEx_callnumber;
					ULONG NtUserGetForegroundWindow_callnumber;
					ULONG ActiveLinkOffset;
					ULONG ProcessNameOffset;
					ULONG DebugportOffset;	
					ULONG ProcessEvent;
					ULONG ThreadEvent;
  				} *pinp;

		
				int i;

				PSERVICE_DESCRIPTOR_TABLE PossibleKeServiceDescriptorTableShow; //long name's are FUN!!!!
				PossibleKeServiceDescriptorTableShow=KeServiceDescriptorTable;

				ntStatus=STATUS_UNSUCCESSFUL;                
				pinp=Irp->AssociatedIrp.SystemBuffer;
				NtUserBuildHwndList_callnumber=pinp->NtUserBuildHwndList_callnumber;
				NtUserQueryWindow_callnumber=pinp->NtUserQueryWindow_callnumber;
				NtUserFindWindowEx_callnumber=pinp->NtUserFindWindowEx_callnumber;
				NtUserGetForegroundWindow_callnumber=pinp->NtUserGetForegroundWindow_callnumber;

				ActiveLinkOffset=pinp->ActiveLinkOffset;
				ProcessNameOffset=pinp->ProcessNameOffset;
				DebugportOffset=pinp->DebugportOffset;


				//referencing event handles to objects
				ObReferenceObjectByHandle((HANDLE)pinp->ProcessEvent, EVENT_ALL_ACCESS, NULL,KernelMode, &ProcessEvent, NULL); 
				ObReferenceObjectByHandle((HANDLE)pinp->ThreadEvent, EVENT_ALL_ACCESS, NULL,KernelMode, &ThreadEvent, NULL); 
				

				//in win2k sp4 the distance is even bigger than -6, at least 21 entries down to find it

				i=-25;//takes some longer to load now....
				while (i<25)
				{
					if (IsAddressSafe((UINT_PTR)&PossibleKeServiceDescriptorTableShow[i])) //dont want to crash for a page pault now do we?
 					{
						/*
						look for a entry that looks like:
						unsigned int *ServiceTable=Region of Win32K.sys
						unsigned int *ServiceCounterTableBase=00000000 but lets be safe and dont check it in case of a checked build
						unsigned int NumberOfServices=smaller than 0xffff;
						unsigned char *ParamTableBase=Region of Win32K.sys;
						*/
						if (((UINT_PTR)PossibleKeServiceDescriptorTableShow[i].ServiceTable>=pinp->AddressOfWin32K) &&
							((UINT_PTR)PossibleKeServiceDescriptorTableShow[i].ServiceTable<(pinp->AddressOfWin32K+pinp->SizeOfWin32K)) &&
							
							((UINT_PTR)PossibleKeServiceDescriptorTableShow[i].ArgumentTable>=pinp->AddressOfWin32K) &&
							((UINT_PTR)PossibleKeServiceDescriptorTableShow[i].ArgumentTable<(pinp->AddressOfWin32K+pinp->SizeOfWin32K)) &&

							(PossibleKeServiceDescriptorTableShow[i].TableSize<0xffff)


							)
						{
							//found it!!!!!!
							KeServiceDescriptorTableShadow=&PossibleKeServiceDescriptorTableShow[i];
							ntStatus=STATUS_SUCCESS;							
                            *(UINT_PTR*)Irp->AssociatedIrp.SystemBuffer=(UINT_PTR)KeServiceDescriptorTableShadow;

							DbgPrint("KeServiceDescriptorTableShadow[0]=%p",&KeServiceDescriptorTableShadow[0]);
							DbgPrint("KeServiceDescriptorTableShadow[1]=%p",&KeServiceDescriptorTableShadow[1]);
							DbgPrint("KeServiceDescriptorTableShadow[2]=%p",&KeServiceDescriptorTableShadow[2]);
							DbgPrint("KeServiceDescriptorTableShadow[3]=%p",&KeServiceDescriptorTableShadow[3]);

							AddSystemServices();
							break;
						}


					}
					i++;
				}				                

				break;
			}

		case IOCTL_CE_VMXCONFIG:
			{
				struct input
				{
					ULONG Virtualization_Enabled;
					ULONG Password1;
					ULONG Password2;
  				} *pinp;
				

				DbgPrint("IOCTL_CE_VMXCONFIG called\n");	
				ntStatus=STATUS_SUCCESS;

				pinp=Irp->AssociatedIrp.SystemBuffer;

				if (pinp->Virtualization_Enabled)
				{
					vmx_password1=pinp->Password1;
					vmx_password2=pinp->Password2;
					__try
					{
						vmx_version=vmx_getversion();
						DbgPrint("Still here, so vmx is loaded. vmx_version=%d\n",vmx_version);	
						vmxusable = 1;
					}
					__except(1)
					{
						DbgPrint("Exception happened. This means no vmx installed, or one of the passwords is wrong\n");
						ntStatus = STATUS_UNSUCCESSFUL;

						vmxusable = 0;
					};
				}
				else
				{
					DbgPrint("Virtualization_Enabled=0\n");
					vmxusable=0;
				}
				
				break;
			}



        default:
            break;
    }

    Irp->IoStatus.Status = ntStatus;
    
    // Set # of bytes to copy back to user-mode...
    if(ntStatus == STATUS_SUCCESS)
        Irp->IoStatus.Information = irpStack->Parameters.DeviceIoControl.OutputBufferLength;
    else
        Irp->IoStatus.Information = 0;

    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return ntStatus;
}


typedef NTSTATUS (*PSRCTNR)(__in PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
PSRCTNR PsRemoveCreateThreadNotifyRoutine2;

typedef NTSTATUS (*PSRLINR)(__in PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
PSRLINR PsRemoveLoadImageNotifyRoutine2;



void MSJUnloadDriver(PDRIVER_OBJECT DriverObject)
{
	if (ProtectOn)
		return;

	if (KeServiceDescriptorTableShadow && registered) //I can't unload without a shadotw table (system service registered)
	{
		//1 since my routine finds the address of the 2nd element
		KeServiceDescriptorTableShadow[1].ArgumentTable=NULL;
		KeServiceDescriptorTableShadow[1].CounterTable=NULL;
		KeServiceDescriptorTableShadow[1].ServiceTable=NULL;
		KeServiceDescriptorTableShadow[1].TableSize=0;

		KeServiceDescriptorTable[2].ArgumentTable=NULL;
		KeServiceDescriptorTable[2].CounterTable=NULL;
		KeServiceDescriptorTable[2].ServiceTable=NULL;
		KeServiceDescriptorTable[2].TableSize=0;
	}
	
	
	if (OriginalInt1.wHighOffset!=0) //hidden feature: unloading WILL be able to stop the hook so it can be enabled a second time (e.g something overwrote my hook)
	{
		int	i;		
		for (i=0;i<32;i++)
		{
			if (IDTAddresses[i]!=0)
			{							
				((PINT_VECTOR)(IDTAddresses[i]))[1]=OriginalInt1;
				//((PINT_VECTOR)(IDTAddresses[i]))[3]=OriginalInt3;
			};
		};
	}


	if ((CreateProcessNotifyRoutineEnabled) || (ImageNotifyRoutineLoaded)) 
	{
		PVOID x;
		RtlInitUnicodeString(&uszDeviceString, L"PsRemoveCreateThreadNotifyRoutine");
		PsRemoveCreateThreadNotifyRoutine2=MmGetSystemRoutineAddress(&uszDeviceString);

		RtlInitUnicodeString(&uszDeviceString, L"PsRemoveCreateThreadNotifyRoutine");
		PsRemoveLoadImageNotifyRoutine2=MmGetSystemRoutineAddress(&uszDeviceString);


		
		RtlInitUnicodeString(&uszDeviceString, L"ObOpenObjectByName");
		x=MmGetSystemRoutineAddress(&uszDeviceString);
		
		DbgPrint("ObOpenObjectByName=%p\n",x);
			

		if ((PsRemoveCreateThreadNotifyRoutine2) && (PsRemoveLoadImageNotifyRoutine2))
		{
			DbgPrint("Stopping processwatch\n");

			if (CreateProcessNotifyRoutineEnabled)
			{
				PsSetCreateProcessNotifyRoutine(CreateProcessNotifyRoutine,TRUE);
				PsRemoveCreateThreadNotifyRoutine2(CreateThreadNotifyRoutine);
			}

			if (ImageNotifyRoutineLoaded)
				PsRemoveLoadImageNotifyRoutine2(LoadImageNotifyRoutine);
		}
		else return;  //leave now!!!!!		
	}

	//Unhook();



    IoDeleteDevice(DriverObject->DeviceObject);
	//ZwClose(ProcessEventHandle);

#ifdef CETC
#ifndef CETC_RELEASE
	UnloadCETC(); //not possible in the final build
#endif
#endif

#ifndef CETC_RELEASE
	IoDeleteSymbolicLink(&uszDeviceString);
	ExFreePool(BufDeviceString);
#endif

}

void Unhook(void)
{
#ifndef AMD64
    if (ProtectOn)
	{
        __asm
		{
			cli 
			mov eax,CR0
			and eax,not 0x10000 //disable bit
			mov CR0,eax
		}
		(ZWOPENPROCESS)(SYSTEMSERVICE(ZwOpenProcess))=OldZwOpenProcess;
		(ZWQUERYSYSTEMINFORMATION)(SYSTEMSERVICE(ZwQuerySystemInformation))=OldZwQuerySystemInformation;

        if ((NtUserBuildHwndList_callnumber!=0) && (KeServiceDescriptorTableShadow!=NULL))
          (NTUSERBUILDHWNDLIST)(KeServiceDescriptorTableShadow->ServiceTable[NtUserBuildHwndList_callnumber])=OldNtUserBuildHwndList;

        if ((NtUserQueryWindow_callnumber!=0) && (KeServiceDescriptorTableShadow!=NULL))
          (NTUSERQUERYWINDOW)(KeServiceDescriptorTableShadow->ServiceTable[NtUserQueryWindow_callnumber])=OldNtUserQueryWindow;

        if ((NtUserFindWindowEx_callnumber!=0) && (KeServiceDescriptorTableShadow!=NULL))
          (NTUSERFINDWINDOWEX)(KeServiceDescriptorTableShadow->ServiceTable[NtUserFindWindowEx_callnumber])=OldNtUserFindWindowEx;

        if ((NtUserGetForegroundWindow_callnumber!=0) && (KeServiceDescriptorTableShadow!=NULL))
		  (NTUSERGETFOREGROUNDWINDOW)(KeServiceDescriptorTableShadow->ServiceTable[NtUserGetForegroundWindow_callnumber])=OldNtUserGetForegroundWindow;

		__asm
		{
			mov eax,CR0
			or  eax,0x10000 //re-enable this bit
			mov CR0,eax
			sti
		}
		ProtectOn=FALSE;
	}
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品日韩精品| 国产激情精品久久久第一区二区 | 91麻豆国产在线观看| 国产精品初高中害羞小美女文| 国产成人在线视频免费播放| 国产精品久久久久久亚洲毛片 | av激情成人网| 亚洲精品中文在线| 欧美色综合网站| 国产aⅴ综合色| 亚洲欧美在线aaa| 91黄色免费看| 奇米影视7777精品一区二区| 精品国产91洋老外米糕| 国产成人福利片| 一区二区三区产品免费精品久久75| 在线观看欧美日本| 另类欧美日韩国产在线| 国产精品色呦呦| 欧美视频一区二区三区四区| 麻豆一区二区99久久久久| 国产欧美日韩另类一区| 色女孩综合影院| 久久99久久精品欧美| 国产精品成人免费精品自在线观看| 日本二三区不卡| 另类调教123区| 亚洲乱码国产乱码精品精的特点| 欧美日韩卡一卡二| 国产综合一区二区| 一区二区三区欧美激情| 精品福利一区二区三区免费视频| 97久久精品人人做人人爽50路| 亚洲成人动漫在线免费观看| 国产亚洲综合色| 欧美日本一道本| youjizz国产精品| 免费的成人av| 亚洲激情在线激情| 久久久久99精品一区| 欧美中文字幕一区二区三区亚洲| 国产精品一区二区黑丝| 亚洲 欧美综合在线网络| 国产网站一区二区| 欧美一二三四区在线| av亚洲精华国产精华精| 国内成人自拍视频| 天堂一区二区在线| 亚洲精品你懂的| 污片在线观看一区二区| 国产精品久久久久天堂| 久久嫩草精品久久久精品一| 欧美日韩另类一区| 91久久香蕉国产日韩欧美9色| 精品亚洲成a人在线观看| 午夜私人影院久久久久| 亚洲人成网站色在线观看| 久久亚洲精精品中文字幕早川悠里| 欧美日韩精品一二三区| 色综合欧美在线视频区| 成人ar影院免费观看视频| 久久99久久久久久久久久久| 日本中文字幕不卡| 亚洲大型综合色站| 一个色妞综合视频在线观看| 国产精品视频一二| 国产欧美一区二区三区在线看蜜臀 | 久久久久久久久久久久电影 | 日本韩国一区二区三区| 波多野结衣中文字幕一区| 国产伦精品一区二区三区在线观看| 日韩精品91亚洲二区在线观看| 亚洲美女在线国产| 中文字幕亚洲在| 国产精品久久久久久久久快鸭| 久久久久久久久岛国免费| 精品久久久久久久久久久久久久久久久 | 男人的天堂亚洲一区| 日韩福利电影在线观看| 日本亚洲欧美天堂免费| 老司机免费视频一区二区三区| 日本vs亚洲vs韩国一区三区| 日本系列欧美系列| 蜜桃久久久久久| 精品一区二区在线看| 国产一区二区三区在线看麻豆| 国产一区二区三区电影在线观看| 国产一区二区三区在线观看免费视频 | 国产精品1区2区3区| 亚洲第一主播视频| 亚洲成av人片在www色猫咪| 成人免费小视频| 一区二区三区日韩精品视频| 国产精品久久久久精k8| 国产精品久久久久精k8| 国产精品人成在线观看免费| 久久久久久久久99精品| 亚洲国产精品精华液ab| 中文字幕在线播放不卡一区| 国产精品久久久久aaaa| 中文字幕亚洲欧美在线不卡| 中文字幕一区二区三中文字幕| 国产精品免费视频网站| 亚洲丝袜另类动漫二区| 国产视频一区二区在线| 亚洲另类在线视频| 亚洲国产精品久久久男人的天堂| 亚洲午夜激情网站| 午夜婷婷国产麻豆精品| 久久精品国产99久久6| 六月婷婷色综合| 不卡电影免费在线播放一区| 91丨porny丨蝌蚪视频| 91激情在线视频| 7777精品伊人久久久大香线蕉的 | 欧美性做爰猛烈叫床潮| 欧美日韩国产在线观看| 欧美一级片免费看| 2023国产精华国产精品| √…a在线天堂一区| 亚洲风情在线资源站| 黄页视频在线91| av网站一区二区三区| 欧美日韩日日摸| 2020国产精品自拍| 亚洲1区2区3区视频| 国产尤物一区二区在线| 91影院在线免费观看| 欧美美女直播网站| 国产日韩欧美高清在线| 国产精品久久久久7777按摩| 久久激情综合网| 91在线精品秘密一区二区| 欧美日韩国产高清一区| 国产亚洲一区二区三区四区 | 国产91富婆露脸刺激对白| 91美女视频网站| 欧美精品国产精品| 亚洲欧美日韩久久| 精品一区二区三区免费毛片爱| 99久久婷婷国产| 久久久久久久电影| 午夜国产精品影院在线观看| 国产成人免费xxxxxxxx| 91麻豆视频网站| 精品久久99ma| 亚洲国产日韩精品| 国模娜娜一区二区三区| 91国偷自产一区二区开放时间| 精品国产青草久久久久福利| 亚洲综合一区二区三区| 福利电影一区二区三区| 欧美日韩精品综合在线| 亚洲最快最全在线视频| 成人午夜激情影院| 精品福利在线导航| 秋霞国产午夜精品免费视频| 99久久综合精品| 日韩三级高清在线| 亚洲视频在线一区观看| 国产成人在线免费| 2023国产精华国产精品| 毛片一区二区三区| 欧美日韩国产小视频| 亚洲人成亚洲人成在线观看图片| 国产精品综合久久| 久久久蜜桃精品| 狠狠色丁香婷综合久久| 日韩视频在线永久播放| 午夜精品福利久久久| 欧美色精品在线视频| 亚洲视频你懂的| av中文字幕亚洲| 国产欧美日韩精品一区| 国产高清在线精品| 欧美精品久久久久久久多人混战| 亚洲成人资源在线| 欧美日韩国产首页| 午夜久久久影院| 欧美日韩成人综合天天影院| 亚洲欧美日韩国产一区二区三区| 在线观看精品一区| 亚洲最大成人综合| 欧美偷拍一区二区| 亚洲不卡av一区二区三区| 777亚洲妇女| 久久精品999| 久久亚洲综合色一区二区三区| 韩国在线一区二区| 亚洲精品一区二区三区精华液| 国产精品一区二区无线| 国产免费观看久久| 99久久综合国产精品| 亚洲激情综合网| 在线综合+亚洲+欧美中文字幕| 日韩和欧美的一区| 久久综合一区二区| 成人动漫一区二区| 中文字幕的久久| 欧美日韩久久不卡|