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

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

?? memscan.c.svn-base

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

						if (*regiontype==PAGE_NOACCESS)
						{
							if ((PPDE->P==0) && (PPDE->A2==0))
								*memorysize+=PAGE_SIZE_LARGE; 
							else
								break;
						}
						
						
					}
					else
					{
						//the 4MB bit wasn't set										
						//this means that we'll have to look through the PTEa PTE follows
						BOOLEAN EverythingOK=TRUE;
						while ((UINT_PTR)PPTE<((((UINT_PTR)(PPDE)+PTESize)-0xc0000000)/PTESize*0x1000)) //while the current PTE isn't in the memorylocation of the next PDE check the memory
						{											
							if (*regiontype==PAGE_NOACCESS)
							{									
								if ((PPTE->P==0) && (PPTE->A2==0)) //not readable so
									*memorysize+=0x1000;
								else
								{
									EverythingOK=FALSE;
									break; //the memory I found IS accessible																										
								}
								
								
							}

							if (*regiontype==PAGE_EXECUTE_READWRITE)
							{
								if ((PPTE->RW==1) || ((PPTE->P==1) || (PPTE->A2==1) )) 
									*memorysize+=0x1000; //writable or paged
								else
								{
									EverythingOK=FALSE;
									break;
								}										
									

							}

							if (*regiontype==PAGE_EXECUTE_READ)
							{
								if ((PPTE->RW==0) || ((PPTE->P==0) && (PPTE->A2==1) )) //read only or paged to disk (lets assume that the protection follows (just a gues)
									*memorysize+=0x1000;
								else
								{
									//if it's writable
									//or if it's not paged and the global bit is on
									//then it isn't read-only
									EverythingOK=FALSE;
									break;
								}	
							}            

							(UINT_PTR)PPTE=(UINT_PTR)PPTE+PTESize;
						}

						if (!EverythingOK) break;

					}
				}
				else
				{
					//4MB of non paged memory
					if (*regiontype==PAGE_NOACCESS)
						*memorysize+=PAGE_SIZE_LARGE; //increase the size of page_noaccess memory with 4 MB
					else
						break; //no, the previous wasn't PAGE_NOACCESS so break with the current length
				}

				(UINT_PTR)PPDE=(UINT_PTR)PPDE+PTESize;
				(UINT_PTR)PPTE=((UINT_PTR)(PPDE)-0xc0000000)/PTESize*0x1000; //point to the first PTE of the new PDE
			}

		
			if ((UINT_PTR)PPDE>=MAX_PDE_POS)
                ntStatus=STATUS_UNSUCCESSFUL;

		}
		__finally
		{
			KeDetachProcess();
		}

	}
	__except(1)
	{
		DbgPrint("Exception in GetMemoryRegionData\n");
		ntStatus=STATUS_UNSUCCESSFUL;
	}
	

	if (PEProcess==NULL) //no valid peprocess was given so I made a reference, so lets also dereference
		ObDereferenceObject(selectedprocess);

	return NT_SUCCESS(ntStatus);

}

#ifdef CETC
//ooh woot, some real public CETC code.....

char ScanresultBuffer[4096];
int ScanresultBufferPos=0;

VOID FlushScanresultBuffer(void)
{
	Send(ScanresultBuffer,ScanresultBufferPos);
	ScanresultBufferPos=0;    
}

VOID ScanResult(ULONG Address,int Size)
{
	char *output;

	if (Size>=4096)
		return; //error, there's no fucking reason to do a scan like this....
	
	if ((ScanresultBufferPos+Size+6)>=4096)
		FlushScanresultBuffer();


	ScanresultBuffer[ScanresultBufferPos]=SC_ScanResult; //address:dword; valuesize:byte; value:array of bytes
	*(PULONG)(&ScanresultBuffer[ScanresultBufferPos+1])=Address;

	__try
	{
		ScanresultBuffer[ScanresultBufferPos+5]=(BYTE)Size;
		RtlCopyMemory(&ScanresultBuffer[ScanresultBufferPos+6],(PVOID)Address,Size);
	}
	__except(1)
	{
		//(unreadable)
	}
	//increase counter with 6+size
	ScanresultBufferPos+=6+Size;
}

VOID ScanResultCount(INT64 errorcode)
{
	char output[9];
	
	output[0]=SC_ScanResultCount;
	*(PINT64)(&output[1])=errorcode;
	Send(output,9);
}

VOID UpdateProgressBar(DWORD max,DWORD pos)
{
	//in case of network scan send , else set global var and let the usermode app poll
	char output[9];
	DWORD a=max / 2;//this way even if you go over 80000000 (signed negative) it wont go wrong
	DWORD b=pos / 2;

	output[0]=SC_UpdateProgressbar;
	*(PDWORD)(&output[1])=a;
	*(PDWORD)(&output[5])=b;
	Send(output,9);
}

VOID FixFPUcrash(void)
{
	__try
	{		
		
		DWORD New8087CW=0x133f; //fuck floating point exceptions
		PDWORD PtoNew8087CW=&New8087CW;
		DbgPrint("Going to set the ControlWord of the FP-Coprocessor\n");
		_asm
		{
			FNCLEX
			FLDCW   [PtoNew8087CW]
		}
	}
	__except(1)
	{
		//bleh

	}
}

VOID UnknownInitialValueScan(IN PVOID StartContext)
{

	__try
	{
		__try
		{
			//this is a unknown initial value scan.
			


		}
		__finally
		{
			CurrentScan.scanning=FALSE;
			CurrentScan.ThreadActive=FALSE;
			PsTerminateSystemThread(STATUS_SUCCESS);
		}
	}
	__except(1)
	{
		//nothing, just go on...

	}
}




VOID FirstScanThread(IN PVOID StartContext)
{
	KAPC_STATE apc_state;
	BYTE bytevalue;
	WORD wordvalue;
	DWORD dwordvalue;
	float floatvalue;  //yes, float. I know... don't use them. but this is intended for winxp, and even runs in it's own thread
	double doublevalue;
	INT64 int64value;
	char* stringvalue;

	BYTE   *ValueList0=NULL;
	WORD   *ValueList1=NULL;
	DWORD  *ValueList2=NULL;
	float  *ValueList3=NULL;
	double *ValueList4=NULL;
	INT64  *ValueList6=NULL;

	DWORD  *AddressList=NULL;
	int AddressListSize=0;
	int found=0,foundsaved=0;


	BOOLEAN error=FALSE;
	BYTE errorcode=-1; //none set
	
	
	PVOID mempointer;
	MEMREGION *memoryregion=NULL;	

	int memoryregionsize=0;
	int memoryregionentries=0;
	int i;

	IO_STATUS_BLOCK iosb;
	NTSTATUS ntStatus;
	BOOLEAN FastScan=((CurrentScan.ScanOptions & SO_FASTSCAN)!=0);



	//this thread scans the memory till it is done scanning or till Scanning equals FALSE
	//there will be a periodic scan for the state of Scanning
	DbgPrint("This is the FirstScanThread\n");	
	CurrentScan.ThreadActive=TRUE;

	FixFPUcrash();

	__try
	{
		ntStatus=CETC_CreateFile(&addressfile,L"\\DosDevices\\C:\\ADDRESS.DAT");
		if (!NT_SUCCESS(ntStatus)) return;

		ntStatus=CETC_CreateFile(&valuefile,L"\\DosDevices\\C:\\VALUES.DAT");
		if (!NT_SUCCESS(ntStatus)) return;
		
		if (!CurrentScan.scanning) return;

	    
		errorcode=SE_IncorrectType;
		DbgPrint("Checking memory type\nVartype=%d\n",CurrentScan.Vartype);	

		//Allocate memory for the addresslist
		AddressList=ExAllocatePoolWithTag(PagedPool,MemscanOptions.buffersize/4,0);
		if (AddressList==NULL)
		{
			DbgPrint("Failed to allocate memory for the AddressList\n");				
			return;
		}
		else
			AddressListSize=MemscanOptions.buffersize/4;

#define InitializeList(nr,varsize,value,type) { \
					DbgPrint("case "#nr"\n");\
					if (CurrentScan.scanvaluelength==varsize)\
					{\
						value=*(##type)(CurrentScan.scanvalue);\
						if (CurrentScan.Scantype==ST_Exact_value)\
						{\
						ValueList##nr=ExAllocatePoolWithTag(PagedPool,AddressListSize*varsize,0);\
						if (ValueList##nr==NULL) \
							{\
								DbgPrint("Failed to allocate memory for ValueList"#nr"\n");\
								return;\
							}\
						}\
					}\
					else\
						error=TRUE;\
}

		//initialize the list to put the values in	
		switch (CurrentScan.Vartype)
		{
			case 0:
				{
					//initialize the list for the byte value
					InitializeList(0,1,bytevalue,PBYTE);
					break;
				}

			case 1:
				{
					InitializeList(1,2,wordvalue,PWORD);
					break;
				}

			case 2:
				{
					InitializeList(2,4,dwordvalue,PDWORD);
					break;
				}

			case 3:
				{
					InitializeList(3,4,floatvalue,PFLOAT);
					break;
				}

			case 4:
				{
					InitializeList(4,8,doublevalue,double*);
					break;
				}


			case 6:
				{
					InitializeList(6,8,int64value,PINT64);
					break;
				}

			case 7:
				{
					//string
					DbgPrint("case 7\n");
					if (CurrentScan.scanvaluelength>1)
					{
						stringvalue=CurrentScan.scanvalue; //just give it the pointer
						CETC_Write(valuefile,stringvalue,CurrentScan.scanvaluelength,&iosb);
					}
					else
						error=TRUE;

					break;

				}
			default:
				{
					//not implemented yet
					DbgPrint("case default\n");
					errorcode=SE_NotSupported;
					error=TRUE;

				}

		}

		if (error)
		{			
			ScanResultCount(errorcode); //send a error count
			return;
		}


		DbgPrint("Trying to attach to process\n");
		
		KeAttachProcess((PEPROCESS)CurrentScan.process);
		__try
		{
			DWORD regiontype=0;
			DWORD memorysize=0x1234;		
			DWORD TotalSize=0;
			DWORD BytesRead=0;			

			DbgPrint("Inside the context of the process I hope\n");
			
			//first time go through to find out the memorysize of the memory to scan
			//by default allocate space for 512 entries (one page)
			memoryregion=ExAllocatePoolWithTag(PagedPool,512*sizeof(MEMREGION),0);
			if (memoryregion==NULL)
			{
				DbgPrint("Failed to allocate memory for the memoryregions\n");				
				return;
			}
			else
				memoryregionsize=512;  //512 entries
			
			__try
			{	
				DWORD baseaddress;
					
				mempointer=(PVOID)CurrentScan.Start;
				while (((ULONG)mempointer<CurrentScan.Stop) && (GetMemoryRegionData(0,CurrentScan.process,mempointer,&regiontype,&memorysize,&baseaddress)))
				{
					BOOLEAN ok=FALSE;
					if (regiontype != PAGE_NOACCESS)
					{
						if ((CurrentScan.ScanOptions & SO_READONLY)==0)
						{
							/*
							skip readonly
							only allow:
							PAGE_READWRITE
							PAGE_WRITECOPY
							PAGE_EXECUTE_READWRITE
							PAGE_EXECUTE_WRITECOPY
							*/
							if  ((regiontype == PAGE_READWRITE) ||
								(regiontype == PAGE_WRITECOPY) ||
								(regiontype == PAGE_EXECUTE_READWRITE) ||
								(regiontype == PAGE_EXECUTE_WRITECOPY))
							{
								ok=TRUE;
								
							}
		
						}
						else
						{
							ok=TRUE;
						}
		
					}

					if (ok)
					{												
						TotalSize+=memorysize;
						DbgPrint("%d:memorysize=%x   -  new TotalSize=%x\n",memoryregionentries,memorysize,TotalSize);

						if (memoryregionentries>=memoryregionsize) //should never be able to go above, but lets check it anyhow...
						{
							MEMREGION *newmemoryregion;
							//allocate another 512 entries
							DbgPrint("Need more regions\n");
							newmemoryregion=ExAllocatePoolWithTag(PagedPool,(memoryregionsize+512)*sizeof(MEMREGION),0);
							if (newmemoryregion!=NULL)
							{
								//copy the old memory to the new one and free the old one
								RtlCopyMemory(newmemoryregion,memoryregion,memoryregionsize*sizeof(MEMREGION));
								ExFreePool(memoryregion);
								memoryregion=newmemoryregion;
								memoryregionsize+=512;
							}
							else
							{
								ExFreePool(memoryregion);
								memoryregion=NULL;
								DbgPrint("Failed to re-allocate memory for the memoryregions\n");
								PsTerminateSystemThread(STATUS_SUCCESS);
								return;
							}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色噜噜狠狠色综合中国| 国产一区二区三区在线看麻豆| 成人av一区二区三区| 国产精品沙发午睡系列990531| 国产成人免费高清| 中文字幕在线观看不卡| 国产亚洲短视频| 东方欧美亚洲色图在线| 国产精品福利av| 欧美性猛片aaaaaaa做受| 日韩vs国产vs欧美| 2欧美一区二区三区在线观看视频| 国产一区在线视频| 成人欧美一区二区三区视频网页| 色婷婷亚洲婷婷| 蜜桃视频第一区免费观看| 国产日韩一级二级三级| 一本高清dvd不卡在线观看| 丝瓜av网站精品一区二区| 久久久久久久性| 色久优优欧美色久优优| 麻豆高清免费国产一区| 成人免费在线观看入口| 91精品国模一区二区三区| 国产高清成人在线| 丝袜美腿亚洲一区二区图片| 久久久精品tv| 欧美精品黑人性xxxx| 国产成人h网站| 亚洲第一激情av| 国产婷婷精品av在线| 欧美日韩国产在线观看| 国产精品1区2区| 日韩av一区二区三区| 国产精品国产三级国产aⅴ中文| 欧美精品亚洲一区二区在线播放| 国产一区视频网站| 亚洲国产aⅴ成人精品无吗| 久久综合久久鬼色中文字| 色婷婷综合久久久久中文一区二区| 国产最新精品免费| 亚洲成av人片在线观看| 中文字幕不卡在线| 精品国产一区久久| 69精品人人人人| 一本一道波多野结衣一区二区| 国产一区二区0| 日韩av电影免费观看高清完整版 | 国产精品久久久久久户外露出| 欧美精品欧美精品系列| 91丨九色丨国产丨porny| 福利电影一区二区| 日本sm残虐另类| 亚洲制服欧美中文字幕中文字幕| 亚洲国产精品激情在线观看| 精品第一国产综合精品aⅴ| 欧美午夜片在线看| 不卡在线视频中文字幕| 国产精品一线二线三线精华| 日本成人超碰在线观看| 午夜不卡av免费| 亚洲精品欧美二区三区中文字幕| 亚洲国产精华液网站w| 久久欧美一区二区| 久久综合久久鬼色中文字| 日韩一区二区三区在线观看| 欧美日韩一区二区三区不卡| 色999日韩国产欧美一区二区| 日韩欧美国产精品一区| 91精品免费观看| 日韩一级免费一区| 欧美一区二区网站| 欧美一级高清大全免费观看| 91精品国产综合久久婷婷香蕉| 欧美日韩国产另类一区| 欧美日韩在线播放一区| 欧美无乱码久久久免费午夜一区| 欧美午夜免费电影| 欧美丰满美乳xxx高潮www| 欧美日韩国产美| 日韩欧美国产成人一区二区| 欧美电视剧在线观看完整版| 精品成人一区二区| 国产日韩欧美电影| 国产精品入口麻豆原神| 亚洲免费av观看| 亚洲午夜在线视频| 青草av.久久免费一区| 精品在线播放午夜| 国产精品66部| 色欧美片视频在线观看| 一本高清dvd不卡在线观看 | 国产河南妇女毛片精品久久久| 久久国产日韩欧美精品| 国产一区二区三区在线观看免费视频| 韩国v欧美v亚洲v日本v| 国产成人精品免费网站| 91丨九色丨黑人外教| 欧美日本一区二区| 日韩精品一区二区三区swag| 精品国产精品网麻豆系列 | 欧美一区二区视频网站| 精品国产一二三区| 欧美激情中文字幕一区二区| 亚洲精品国产一区二区三区四区在线| 亚洲综合在线观看视频| 美日韩一区二区| 福利91精品一区二区三区| 欧美系列在线观看| 精品国产三级电影在线观看| 中文字幕免费不卡| 亚洲大片一区二区三区| 免费在线观看视频一区| 成人a级免费电影| 欧美高清一级片在线| 久久精品视频一区二区| 亚洲乱码日产精品bd| 免费国产亚洲视频| 99re视频这里只有精品| 欧美一级二级三级蜜桃| 国产精品不卡一区| 麻豆精品精品国产自在97香蕉| 成人av在线电影| 日韩欧美的一区| 亚洲愉拍自拍另类高清精品| 国产美女一区二区| 欧美嫩在线观看| 中文字幕亚洲欧美在线不卡| 日本成人中文字幕| 色狠狠综合天天综合综合| 国产亚洲精品免费| 日韩中文字幕麻豆| 91福利精品第一导航| 中文成人综合网| 精品一区二区av| 欧美三级乱人伦电影| 成人免费在线观看入口| 国产一本一道久久香蕉| 欧美一区二区不卡视频| 亚洲乱码精品一二三四区日韩在线| 777色狠狠一区二区三区| 亚洲国产岛国毛片在线| 国产精品一区二区91| 欧美精品tushy高清| 亚洲午夜三级在线| 不卡视频在线观看| 国产亚洲欧美日韩日本| 精品一区精品二区高清| 6080午夜不卡| 亚洲一线二线三线视频| 色婷婷av一区二区三区gif| 国产精品青草综合久久久久99| 国产一区二区三区不卡在线观看 | 色婷婷亚洲一区二区三区| 国产亚洲人成网站| 精品亚洲国内自在自线福利| 91精品综合久久久久久| 亚洲已满18点击进入久久| 色屁屁一区二区| 亚洲中国最大av网站| 高清不卡在线观看| 国产日韩欧美一区二区三区乱码| 国模娜娜一区二区三区| 精品剧情在线观看| 精品无人码麻豆乱码1区2区| 日韩欧美成人午夜| 精品一区二区日韩| 久久免费美女视频| 高清不卡一区二区在线| 国产精品亲子伦对白| 99re这里只有精品6| 亚洲一区二区三区视频在线播放| 在线视频一区二区三区| 亚洲h精品动漫在线观看| 亚洲色大成网站www久久九九| eeuss鲁片一区二区三区在线观看| 国产精品色一区二区三区| av色综合久久天堂av综合| 亚洲女性喷水在线观看一区| 欧美图片一区二区三区| 免费一区二区视频| 久久久久久久免费视频了| 成人精品免费看| 一二三区精品视频| 欧美男生操女生| 国产毛片精品视频| 欧美极品aⅴ影院| 色综合久久久久综合体| 日韩不卡免费视频| 国产性做久久久久久| 91麻豆免费在线观看| 日韩国产高清在线| 久久精品一级爱片| 91麻豆国产在线观看| 日韩电影在线观看电影| 国产午夜精品一区二区三区视频| 播五月开心婷婷综合| 丝袜亚洲另类欧美| 国产精品青草久久| 欧美一级国产精品|