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

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

?? dbkdrvr.c.svn-base

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

	DbgPrint("Loading driver\n");
	DbgPrint("Registry path = %S\n", RegistryPath->Buffer);

	InitializeObjectAttributes(&oa,RegistryPath,OBJ_KERNEL_HANDLE ,NULL,NULL);
	ntStatus=ZwOpenKey(&reg,KEY_QUERY_VALUE,&oa);
	if (ntStatus == STATUS_SUCCESS)
	{
		UNICODE_STRING A,B,C,D;
		PVOID buf;
		PKEY_VALUE_PARTIAL_INFORMATION bufA,bufB,bufC,bufD;
		ULONG ActualSize;

		DbgPrint("Opened the key\n");

		BufDriverString=ExAllocatePool(PagedPool,sizeof(KEY_VALUE_PARTIAL_INFORMATION)+100);
		BufDeviceString=ExAllocatePool(PagedPool,sizeof(KEY_VALUE_PARTIAL_INFORMATION)+100);
		BufProcessEventString=ExAllocatePool(PagedPool,sizeof(KEY_VALUE_PARTIAL_INFORMATION)+100);
		BufThreadEventString=ExAllocatePool(PagedPool,sizeof(KEY_VALUE_PARTIAL_INFORMATION)+100);

		bufA=BufDriverString;
		bufB=BufDeviceString;
		bufC=BufProcessEventString;
		bufD=BufThreadEventString;

		RtlInitUnicodeString(&A, L"A");
		RtlInitUnicodeString(&B, L"B");
		RtlInitUnicodeString(&C, L"C");
		RtlInitUnicodeString(&D, L"D");

		if (ntStatus == STATUS_SUCCESS)
			ntStatus=ZwQueryValueKey(reg,&A,KeyValuePartialInformation ,bufA,sizeof(KEY_VALUE_PARTIAL_INFORMATION)+100,&ActualSize);
		if (ntStatus == STATUS_SUCCESS)
			ntStatus=ZwQueryValueKey(reg,&B,KeyValuePartialInformation ,bufB,sizeof(KEY_VALUE_PARTIAL_INFORMATION)+100,&ActualSize);
		if (ntStatus == STATUS_SUCCESS)
			ntStatus=ZwQueryValueKey(reg,&C,KeyValuePartialInformation ,bufC,sizeof(KEY_VALUE_PARTIAL_INFORMATION)+100,&ActualSize);
		if (ntStatus == STATUS_SUCCESS)
			ntStatus=ZwQueryValueKey(reg,&D,KeyValuePartialInformation ,bufD,sizeof(KEY_VALUE_PARTIAL_INFORMATION)+100,&ActualSize);

		if (ntStatus == STATUS_SUCCESS)
		{
			DbgPrint("Read ok\n");
			RtlInitUnicodeString(&uszDriverString,(PCWSTR) bufA->Data);
			RtlInitUnicodeString(&uszDeviceString,(PCWSTR) bufB->Data);
			RtlInitUnicodeString(&uszProcessEventString,(PCWSTR) bufC->Data);
			RtlInitUnicodeString(&uszThreadEventString,(PCWSTR) bufD->Data);
		}
		else
		{
			ExFreePool(bufA);
			ExFreePool(bufB);
			ExFreePool(bufC);
			ExFreePool(bufD);

			DbgPrint("Failed reading the value\n");
			ZwClose(reg);
			return STATUS_UNSUCCESSFUL;;
		}

	}
	else
	{
		DbgPrint("Failed opening the key\n");
		return STATUS_UNSUCCESSFUL;;
	}

	ntStatus = STATUS_SUCCESS;

    // Point uszDriverString at the driver name
#ifndef CETC
	
	
	// Create and initialize device object
    ntStatus = IoCreateDevice(DriverObject,
                              0,
                              &uszDriverString,
                              FILE_DEVICE_UNKNOWN,
                              0,
                              FALSE,
                              &pDeviceObject);

    if(ntStatus != STATUS_SUCCESS)
	{
		ExFreePool(BufDriverString);
		ExFreePool(BufDeviceString);
		ExFreePool(BufProcessEventString);
		ExFreePool(BufThreadEventString);
		
		ZwClose(reg);
        return ntStatus;
	}

    // Point uszDeviceString at the device name
	
    // Create symbolic link to the user-visible name
    ntStatus = IoCreateSymbolicLink(&uszDeviceString, &uszDriverString);

    if(ntStatus != STATUS_SUCCESS)
    {
        // Delete device object if not successful
        IoDeleteDevice(pDeviceObject);

		ExFreePool(BufDriverString);
		ExFreePool(BufDeviceString);
		ExFreePool(BufProcessEventString);
		ExFreePool(BufThreadEventString);
		

		ZwClose(reg);
        return ntStatus;
    }

#endif


    // Load structure to point to IRP handlers...
    DriverObject->DriverUnload                         = MSJUnloadDriver;
    DriverObject->MajorFunction[IRP_MJ_CREATE]         = MSJDispatchCreate;
    DriverObject->MajorFunction[IRP_MJ_CLOSE]          = MSJDispatchClose;
    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = MSJDispatchIoctl;

	DebuggedProcessID=0;				
	
	ProtectOn=FALSE;
	ImageNotifyRoutineLoaded=FALSE;
	LastForegroundWindow=0;
	ProtectedProcessID=0;
	ModuleList=NULL;
	ModuleListSize=0;
	KernelCopy=0;

	globaldebug=0;

	newthreaddatafiller=IoAllocateWorkItem(pDeviceObject);

	//

	//Processlist init
#ifndef CETC
/*	DbgPrint("Creating ProcessEvent with name : %S",uszProcessEventString.Buffer);
	ProcessEvent=IoCreateNotificationEvent(&uszProcessEventString, &ProcessEventHandle);
	if (ProcessEvent==NULL)
		DbgPrint("Failed creating ProcessEvent");

	KeClearEvent(ProcessEvent);*/

	ProcessEventCount=0;
	KeInitializeSpinLock(&ProcesslistSL);
#endif

	CreateProcessNotifyRoutineEnabled=FALSE;

	//threadlist init
#ifndef CETC
/*	DbgPrint("Creating ThreadEvent with name : %S",uszThreadEventString.Buffer);
	ThreadEvent=IoCreateNotificationEvent(&uszThreadEventString, &ThreadEventHandle);
	if (ThreadEvent==NULL)
		DbgPrint("Failed creating ThreadEvent\n");

	KeClearEvent(ThreadEvent);	*/
#endif

	ThreadEventCount=0;
	for (i=0; i<32;i++)
		IDTAddresses[i]=0; //init. I dont know for sure if it gets set to NULL by default so let's be sure

	RtlZeroMemory(&DebugEvents[0],50*sizeof(DebugEvent));
	
	BufferSize=0;
	processlist=NULL;

	OriginalInt1.wHighOffset=0;
	OriginalInt3.wHighOffset=0;

	ChangeRegistersOnBP=FALSE;
	for (i=0;i<4;i++)
		ChangeRegs[i].Active=FALSE;

    //determine if PAE is used
	cr4reg=getCR4();

	if ((cr4reg & 0x20)==0x20)
	{
		PTESize=8; //pae
		PAGE_SIZE_LARGE=0x200000;
		MAX_PDE_POS=0xC0604000;
		
	}
	else
	{
		PTESize=4;
		PAGE_SIZE_LARGE=0x400000;
		MAX_PDE_POS=0xC0301000;
	}

#ifdef CETC
	DbgPrint("Going to initialice CETC\n");
	InitializeCETC();
#endif


	UsesAlternateMethod=FALSE;

    //hideme(DriverObject); //ok, for those that see this, enabling this WILL fuck up try except routines, even in usermode you'll get a blue sreen
	

	// Return success (don't do the devicestring, I need it for unload)
	ExFreePool(BufDriverString);
	ExFreePool(BufProcessEventString);
	ExFreePool(BufThreadEventString);
		
	ZwClose(reg);    
    return ntStatus;
}


NTSTATUS MSJDispatchCreate(IN PDEVICE_OBJECT DeviceObject,
                       IN PIRP Irp)
{
    Irp->IoStatus.Status = STATUS_SUCCESS;
    Irp->IoStatus.Information=0;

    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return(STATUS_SUCCESS);
}


NTSTATUS MSJDispatchClose(IN PDEVICE_OBJECT DeviceObject,
                       IN PIRP Irp)
{
    Irp->IoStatus.Status = STATUS_SUCCESS;
    Irp->IoStatus.Information=0;

    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return(STATUS_SUCCESS);
}


NTSTATUS MSJDispatchIoctl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
    NTSTATUS ntStatus;
    PIO_STACK_LOCATION     irpStack = IoGetCurrentIrpStackLocation(Irp);

	
    switch(irpStack->Parameters.DeviceIoControl.IoControlCode)
    {
        case IOCTL_CE_READMEMORY:			
			__try
			{
				struct input
				{
					UINT_PTR processid;
					char *startaddress;
					unsigned short int bytestoread;
				} *pinp,inp;
				PEPROCESS selectedprocess;			

				pinp=Irp->AssociatedIrp.SystemBuffer;

				ntStatus=ReadProcessMemory(pinp->processid,NULL,pinp->startaddress,pinp->bytestoread,pinp) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
			}
			__except(1)
			{
				ntStatus = STATUS_UNSUCCESSFUL;
			};
				
            break;

        case IOCTL_CE_WRITEMEMORY:
			__try
			{
				struct input
				{
					UINT_PTR processid;
					void *startaddress;
					unsigned short int bytestowrite;
				} *pinp,inp;
				PEPROCESS selectedprocess;

				pinp=Irp->AssociatedIrp.SystemBuffer;
				ntStatus=WriteProcessMemory(pinp->processid,NULL,pinp->startaddress,pinp->bytestowrite,(PVOID)((UINT_PTR)pinp+sizeof(inp))) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
			}
			__except(1)
			{
				//something went wrong and I don't know what
				ntStatus = STATUS_UNSUCCESSFUL;
			};


				
            break;


		case IOCTL_CE_OPENPROCESS:
			{					
				PEPROCESS selectedprocess;
				PHANDLE pid=Irp->AssociatedIrp.SystemBuffer;
				HANDLE ProcessHandle=0;

				ntStatus=STATUS_SUCCESS;

				__try
				{
					ProcessHandle=0;

					if (PsLookupProcessByProcessId((PVOID)(*pid),&selectedprocess)==STATUS_SUCCESS)
					{		

							DbgPrint("Calling ObOpenObjectByPointer\n");
							ntStatus=ObOpenObjectByPointer ( 
										selectedprocess,
										0,
										NULL,
										PROCESS_ALL_ACCESS,
										*PsProcessType,
										KernelMode, //UserMode,
										&ProcessHandle);

							DbgPrint("ntStatus=%x",ntStatus);
					}
				}
				__except(1)
				{
					ntStatus=STATUS_UNSUCCESSFUL;
				}			
				*pid=ProcessHandle;
				break;
			}

		case IOCTL_CE_OPENTHREAD:
			{
				HANDLE ThreadHandle;
				CLIENT_ID ClientID;
				OBJECT_ATTRIBUTES ObjectAttributes;
				PHANDLE tid;
	
				RtlZeroMemory(&ObjectAttributes,sizeof(OBJECT_ATTRIBUTES));

				ntStatus=STATUS_SUCCESS;
				tid=Irp->AssociatedIrp.SystemBuffer;

				ClientID.UniqueProcess=0;
				ClientID.UniqueThread=*tid;
				ThreadHandle=0;

				__try
				{
					ThreadHandle=0;
					ntStatus=ZwOpenThread(&ThreadHandle,PROCESS_ALL_ACCESS,&ObjectAttributes,&ClientID);									
				}
				__except(1)
				{
					ntStatus=STATUS_UNSUCCESSFUL;
				}
			
				*tid=ThreadHandle;
				

				break;
			}

		case IOCTL_CE_MAKEWRITABLE:
			{
				struct InputBuf
				{
				    PVOID StartAddress;
					ULONG Size;
					BYTE CopyOnWrite;
				} *PInputBuf;

				PInputBuf=Irp->AssociatedIrp.SystemBuffer;
				
				ntStatus=MakeWritable(PInputBuf->StartAddress,PInputBuf->Size,(PInputBuf->CopyOnWrite==1)) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL; 
				break;
			}


		case IOCTL_CE_QUERY_VIRTUAL_MEMORY:
			{
				struct InputBuf
				{
				    UINT_PTR ProcessID;
					UINT_PTR StartAddress;
				} *PInputBuf;

				struct OutputBuf
				{				
					UINT_PTR length;
					UINT_PTR protection;
				} *POutputBuf;

				
			     
				UINT_PTR BaseAddress;
				PEPROCESS selectedprocess;
				
                ntStatus=STATUS_SUCCESS;
				PInputBuf=Irp->AssociatedIrp.SystemBuffer;
				POutputBuf=Irp->AssociatedIrp.SystemBuffer;

				ntStatus=GetMemoryRegionData(PInputBuf->ProcessID,NULL,(PVOID)(PInputBuf->StartAddress),&(POutputBuf->protection),&(POutputBuf->length),&BaseAddress) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;

				
				break;
			}

		case IOCTL_CE_TEST: //just a test to see it's working
			{
				PEPROCESS selectedprocess=NULL;

				DbgPrint("test\n");

				__try
				{
					PMDL mdl=NULL;
					char *buffer;

					mdl = IoAllocateMdl((PVOID)0x00400000, 0x4096, FALSE, TRUE, NULL);
					if (!mdl)
					{
						DbgPrint("Not enough memory dude!!!!\n");
						ntStatus = STATUS_INSUFFICIENT_RESOURCES;
						break;
					}

			        //PsLookupProcessByProcessId((PVOID)696,&selectedprocess);

					DbgPrint("Before\n");
					DbgPrint("mdl->Process=%x",mdl->Process);
					DbgPrint("mdl->MappedSystemVa=%x",mdl->MappedSystemVa);
					DbgPrint("mdl->StartVa=%x",mdl->StartVa);


					//KeAttachProcess((PEPROCESS)selectedprocess);
					MmProbeAndLockPages(mdl, UserMode, IoReadAccess);
					
					DbgPrint("After\n");
					DbgPrint("mdl->Process=%x",mdl->Process);
					DbgPrint("mdl->MappedSystemVa=%x",mdl->MappedSystemVa);
					DbgPrint("mdl->StartVa=%x",mdl->StartVa);
					

					buffer = MmGetSystemAddressForMdlSafe(mdl, NormalPagePriority );
					//KeDetachProcess();

					
					DbgPrint("buffer=%x\n",(ULONG)buffer);
					//MmUnlockPages(mdl);
					//IoFreeMdl(mdl); 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲乱码精品一二三四区日韩在线| 国产在线一区二区综合免费视频| 久久久久久久久97黄色工厂| 欧美电影一区二区三区| 972aa.com艺术欧美| 国产成人av一区| 精品系列免费在线观看| 日本美女一区二区| 日本欧美大码aⅴ在线播放| 五月婷婷综合在线| 婷婷久久综合九色综合伊人色| 亚洲免费在线电影| 亚洲欧美另类久久久精品| 国产精品不卡在线| 中文字幕一区二区三| 中文字幕一区二区三区在线观看| 日本一区二区三区高清不卡| 国产夜色精品一区二区av| 国产午夜精品久久久久久久 | 亚洲男人的天堂网| 中文字幕一区二区三| 国产精品天美传媒沈樵| 国产精品福利影院| 亚洲视频狠狠干| 一区二区三区色| 亚洲午夜激情网页| 日韩在线观看一区二区| 蜜桃久久久久久久| 国产麻豆日韩欧美久久| 懂色av一区二区在线播放| 成人精品小蝌蚪| 色婷婷亚洲一区二区三区| 欧美色网一区二区| 正在播放亚洲一区| 精品国产免费一区二区三区四区| www亚洲一区| 国产日韩精品一区二区三区在线| 国产精品你懂的在线欣赏| 亚洲欧洲精品成人久久奇米网 | 91国偷自产一区二区三区观看 | 一区二区三区国产| 亚洲bdsm女犯bdsm网站| 日韩在线一区二区| 韩国毛片一区二区三区| 不卡影院免费观看| 欧美亚洲综合一区| 欧美一级免费观看| 国产亚洲一二三区| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲乱码国产乱码精品精小说| 亚洲成人av福利| 精品夜夜嗨av一区二区三区| 国产福利一区二区| 91久久国产综合久久| 日韩小视频在线观看专区| 国产亚洲一区二区在线观看| 夜夜嗨av一区二区三区中文字幕 | 日韩精品一区二区三区在线播放 | 成人小视频在线观看| 在线观看日韩一区| 久久亚洲影视婷婷| 亚洲乱码国产乱码精品精98午夜| 日韩高清欧美激情| 成人aaaa免费全部观看| 欧美精品丝袜中出| 中文字幕精品一区二区精品绿巨人 | 三级亚洲高清视频| 国产成人av电影在线播放| 欧美日韩五月天| 国产日产亚洲精品系列| 亚洲成av人片一区二区| 国产91清纯白嫩初高中在线观看| 欧美日韩不卡一区| 中文字幕av免费专区久久| 天天色天天操综合| 成人av资源网站| 欧美成人a∨高清免费观看| 亚洲日本在线看| 韩国av一区二区三区在线观看| 日本道精品一区二区三区| 精品91自产拍在线观看一区| 一区二区日韩av| 国产成人一区在线| 欧美一级专区免费大片| 一区二区免费在线播放| 国产91精品免费| 日韩一级黄色大片| 亚洲综合小说图片| 成人一道本在线| 精品人在线二区三区| 亚洲一区av在线| av福利精品导航| 国产亚洲成av人在线观看导航| 日日夜夜一区二区| 色婷婷久久久亚洲一区二区三区| 久久久综合九色合综国产精品| 午夜精品久久久久久久久久久| 99久久精品一区二区| 久久男人中文字幕资源站| 日本视频免费一区| 欧美日韩激情在线| 夜夜嗨av一区二区三区网页| 97久久精品人人爽人人爽蜜臀| 久久精品一区二区| 久久国产精品色婷婷| 欧美精品高清视频| 亚洲国产精品麻豆| 欧美性大战久久久久久久蜜臀| 国产精品久久一级| 成人动漫在线一区| 国产欧美一区二区精品久导航 | 精品少妇一区二区三区在线播放 | 91精品国产高清一区二区三区| 亚洲综合丝袜美腿| 91丨porny丨国产入口| 国产精品国产三级国产普通话99 | 成人欧美一区二区三区1314| 国产精品系列在线播放| 久久久久久久久久看片| 国产剧情一区在线| 久久精品在线免费观看| 国产精品亚洲一区二区三区在线 | 成人黄色片在线观看| 国产欧美视频在线观看| 国产成人精品一区二| 欧美极品美女视频| av男人天堂一区| 亚洲精品久久久久久国产精华液| 一本久道中文字幕精品亚洲嫩| 亚洲女同女同女同女同女同69| 91蜜桃网址入口| 亚洲综合区在线| 欧美日韩免费一区二区三区视频| 亚洲国产毛片aaaaa无费看| 欧美日韩一区不卡| 青青草国产成人99久久| 久久夜色精品一区| 成人黄色av电影| 亚洲天堂av老司机| 欧美这里有精品| 丝袜亚洲另类丝袜在线| 日韩精品一区二区三区老鸭窝| 国产在线精品一区二区三区不卡| 国产日韩v精品一区二区| 成人av免费网站| 亚洲国产精品久久人人爱蜜臀| 欧美一区二区三区免费在线看 | 国产精品美女www爽爽爽| av电影在线观看不卡| 亚洲国产成人av好男人在线观看| 3d动漫精品啪啪1区2区免费| 精品一区二区综合| 国产精品久久久爽爽爽麻豆色哟哟 | 久久久久久久久蜜桃| 99久久久精品| 日韩精品久久久久久| 欧美精品一区二区三区久久久 | 亚洲视频免费在线| 欧美精品高清视频| 国产黄人亚洲片| 亚洲精品你懂的| 日韩欧美电影一二三| 成人免费高清视频在线观看| 亚洲国产中文字幕| 久久免费视频一区| 欧美在线视频你懂得| 久久超碰97中文字幕| 国产精品国产三级国产aⅴ入口| 欧美丝袜自拍制服另类| 国产一区二区三区免费观看| 亚洲黄色小说网站| 久久这里只精品最新地址| 91视视频在线观看入口直接观看www | 91蜜桃在线免费视频| 乱一区二区av| 综合婷婷亚洲小说| 日韩视频在线你懂得| www.综合网.com| 日本中文字幕一区二区有限公司| 国产精品每日更新| 欧美一区二区精品久久911| 成人黄色av电影| 美腿丝袜在线亚洲一区 | 色94色欧美sute亚洲线路一久| 蜜桃视频在线一区| 有码一区二区三区| 2019国产精品| 欧美日韩亚洲综合一区二区三区| 国产成人亚洲综合a∨婷婷| 午夜成人在线视频| 亚洲欧洲一区二区三区| 日韩一级大片在线观看| 色视频一区二区| 国产不卡一区视频| 久久91精品久久久久久秒播| 亚洲欧美另类小说视频| 久久精品人人做人人综合| 欧美一区二区高清| 在线免费不卡视频| 成人免费电影视频|