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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? memscan.c.svn-base

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

						};

						memoryregion[memoryregionentries].BaseAddress=baseaddress;
						memoryregion[memoryregionentries].Size=memorysize;
						memoryregionentries++;	

					}
		
		
					(ULONG)mempointer+=memorysize;
				}

				if (memoryregionentries>0)
				{
					DbgPrint("Adjusting regions\n");
					DbgPrint("before:TotalSize=%x\nmemoryregion[0].BaseAddress=%x\n",TotalSize,memoryregion[0].BaseAddress);
					//adjust start and stop
					if (memoryregion[0].BaseAddress<CurrentScan.Start)
					{
						memoryregion[0].Size-=CurrentScan.Start-memoryregion[0].BaseAddress;
						TotalSize-=CurrentScan.Start-memoryregion[0].BaseAddress;
						memoryregion[0].BaseAddress=CurrentScan.Start;
					}

					if (memoryregion[memoryregionentries-1].BaseAddress+memoryregion[memoryregionentries-1].Size>CurrentScan.Stop)
					{					
						TotalSize-=(memoryregion[memoryregionentries-1].BaseAddress+memoryregion[memoryregionentries-1].Size)-CurrentScan.Stop;
						memoryregion[memoryregionentries-1].Size-=(memoryregion[memoryregionentries-1].BaseAddress+memoryregion[memoryregionentries-1].Size)-CurrentScan.Stop;
					}

					DbgPrint("After:TotalSize=%x\nMemoryregion[0].BaseAddress=%x\n",TotalSize,memoryregion[0].BaseAddress);

				}
	
				/*
				//this works:
				mempointer=(PVOID)CurrentScan.Start;
				if (((PBYTE)mempointer)[0]==12)
					return;
				*/

				DbgPrint("Checking the TotalSize:%x\n",TotalSize);

				if ((TotalSize==0) || (TotalSize>0xf0000000))
				{
					//I don't accept 0 memory
					//and also not if there is more than 0xf0000000 bytes readable memory (more likely a signed underflow or other bug)
					DbgPrint("Error with memory regions\n");		
					ScanResultCount(SE_NoMemoryFound);
					return;
				}

				
	
				//now start the scan
				DbgPrint("Initializing the progressbar. Totalsize=%d (%x)\n",TotalSize,TotalSize);
				UpdateProgressBar(TotalSize,0); //max size of progressbar and the current pos (0) (both devided by 2)
				BytesRead=0;

				if (CurrentScan.Scantype==ST_Exact_value)
					DbgPrint("Scantype=Exact value\n");

				for (i=0; (i<memoryregionentries) && (CurrentScan.scanning);i++)
				{
					ULONG StopAddress;
					DbgPrint("Region %d\n",i);
					
					mempointer=(PVOID)(memoryregion[i].BaseAddress);
					StopAddress=memoryregion[i].BaseAddress+memoryregion[i].Size;

					//adjust the stopaddress so you dont scan unreadable memory
					StopAddress-=CurrentScan.scanvaluelength-1;

					UpdateProgressBar(TotalSize,BytesRead);


#define MemCheckAndHandle(nr,type,varsize,value) if ( /*it's faster to do this in a seperate code segment for each type, but lets try this first (less code)*/ \
	((CurrentScan.Scantype==ST_Exact_value) && (*(##type)mempointer==value)) ||\
	((CurrentScan.Scantype==ST_SmallerThan) && (*(##type)mempointer<value)) ||\
	((CurrentScan.Scantype==ST_BiggerThan) && (*(##type)mempointer>value))\
	)\
	{\
		/*found one*/ \
		DbgPrint("Found one!!!\n");\
		AddressList[found]=(ULONG)mempointer;\
		ValueList##nr[found]=*(##type)mempointer;\
		found++;\
		if (found==AddressListSize)\
		{\
			DbgPrint("Writing tempfile\n");\
			\
			/*write the addresses and values to disk*/ \
			CETC_Write(addressfile,AddressList,found*4,&iosb);\
			CETC_Write(valuefile,ValueList##nr,found*varsize,&iosb);\
\
			foundsaved+=found;\
			found=0;\
		}\
	}

				
					while ((ULONG)mempointer<StopAddress)
					{
						__try
						{
							switch (CurrentScan.Vartype)
							{
							case 0:
								{
									MemCheckAndHandle(0,PBYTE,1,bytevalue);
									((ULONG)mempointer)++;									
									break;
								}


							case 1: //2 byte
								{
									MemCheckAndHandle(1,PWORD,2,wordvalue);
									
									if (FastScan)
										((ULONG)mempointer)+=2;
									else
										((ULONG)mempointer)++;
									break;
								}

							case 2: //4 byte
								{
									MemCheckAndHandle(2,PDWORD,4,dwordvalue);
									
									if (FastScan)
										((ULONG)mempointer)+=4;
									else
										((ULONG)mempointer)++;
									break;
								}

							case 3: //float
								{
									MemCheckAndHandle(3,float*,4,floatvalue)
									
									if (FastScan)
										((ULONG)mempointer)+=4;
									else
										((ULONG)mempointer)++;
									break;
								}

							case 4: //double
								{
									MemCheckAndHandle(4,double*,8,doublevalue)
									
									if (FastScan)
										((ULONG)mempointer)+=8;
									else
										((ULONG)mempointer)++;
									break;
								}

							case 6: //int64
								{
									MemCheckAndHandle(6,PINT64,8,int64value)

									
									if (FastScan)
										((ULONG)mempointer)+=8;
									else
										((ULONG)mempointer)++;
									break;
								}


							case 7:
								{
									if (RtlCompareMemory(mempointer,stringvalue,CurrentScan.scanvaluelength)==CurrentScan.scanvaluelength)
									{
										found++;
										if (found==AddressListSize)
										{
											DbgPrint("Writing tempfile\n");
											
											/*write the addresses to disk*/ 
											CETC_Write(addressfile,AddressList,found*4,&iosb);																
											foundsaved+=found;
											found=0;
										}

										

									}


									break;
								}

							default:
								((ULONG)mempointer)++;

							}

						}
						__except(1)
						{
							//unreadable
							DbgPrint("unreadable %p\n",mempointer);
                            ((ULONG)mempointer)+=PAGE_SIZE; //try the next page
							//align on the base
							(ULONG)mempointer=(ULONG)mempointer/0x1000*0x1000; //shouldn't be neccesary, but lets do it anyhow
						}                       
						
					} //while


					BytesRead+=memoryregion[i].Size;

				}
				
				//now save the results
				if (found>0)
				{
					DbgPrint("Writing tempfile\n");

					ntStatus=CETC_Write(addressfile,AddressList,found*4,&iosb);
					switch (CurrentScan.Vartype)
					{
					case 0:
						{
							//write the addresses and values to disk
							ntStatus=CETC_Write(valuefile,ValueList0,found,&iosb);
							break;
						}

					case 1:
						{
							//write the addresses and values to disk
							ntStatus=CETC_Write(valuefile,ValueList1,found*2,&iosb);
							break;
						}

					case 2:
						{
							//write the addresses and values to disk
							ntStatus=CETC_Write(valuefile,ValueList2,found*4,&iosb);
							break;
						}

					case 3:
						{
							//write the addresses and values to disk
							ntStatus=CETC_Write(valuefile,ValueList3,found*4,&iosb);
							break;
						}

					case 4:
						{
							//write the addresses and values to disk
							ntStatus=CETC_Write(valuefile,ValueList4,found*8,&iosb);
							break;
						}

					case 6:
						{
							//write the addresses and values to disk
							ntStatus=CETC_Write(valuefile,ValueList6,found*8,&iosb);
							break;
						}


					}

					foundsaved+=found;
					found=0;
				}

				//and tell the client the results
				
				DbgPrint("found=%d and foundsaved=%d\n",found,foundsaved);
			    if ((found+foundsaved)<=MemscanOptions.max)
				{			
					
					//read the addresses and values and tell them to the client
					//first reposition the file pointer to the start
					IO_STATUS_BLOCK isb;
					FILE_POSITION_INFORMATION fpi;
					int j,k;					

					fpi.CurrentByteOffset.QuadPart=0;
					DbgPrint("Resetting the file position to 0\n");
					ntStatus=ZwSetInformationFile(addressfile,&isb,&fpi,sizeof(FILE_POSITION_INFORMATION),FilePositionInformation);
					DbgPrint("ntStatus=%d",ntStatus);

					//read the AddressFile
					i=0;
					while ((i<MemscanOptions.max) && (i<foundsaved))
					{	
						

						DbgPrint("Reading addressfile\n");
						DbgPrint("(foundsaved<AddressListSize)? (foundsaved*4):(AddressListSize*4)=%d\n",(foundsaved<AddressListSize)? (foundsaved*4):(AddressListSize*4));
						ntStatus=ZwReadFile(addressfile,NULL,NULL,NULL,&isb,AddressList,(foundsaved<AddressListSize)? (foundsaved*4):(AddressListSize*4),NULL,NULL);

						DbgPrint("ntStatus=%x\n",ntStatus);
						DbgPrint("isb.Information=%d\n",isb.Information);

						if (isb.Information>4)
						{						
							j=(int)isb.Information/4;
							for (k=0; k<j; k++)
							{
								switch (CurrentScan.Vartype)
								{
								case 0://byte
										ScanResult(AddressList[k],1);
										break;
								case 1:
										ScanResult(AddressList[k],2);
										break;

								case 2:
								case 3:
										ScanResult(AddressList[k],4);
										break;

								case 4:
								case 6:
										ScanResult(AddressList[k],8);
										break;

								case 7:
										ScanResult(AddressList[k],CurrentScan.scanvaluelength);
										break;								

								}
								//AddressList[k]


							}

							i+=j;
						}
						else
						{
							DbgPrint("Failed to read AddressList\n");
							break;
						}
						
					}

					FlushScanresultBuffer();
                   

				}		
				ScanResultCount(foundsaved);	
			}
			__finally
			{

				
			}
	
	
	
		}
		__finally
		{	
			DbgPrint("Detaching\n");
			KeDetachProcess();
		}

		DbgPrint("returning\n");
	}
	__finally
	{
		//End of the thread.
		//Free all the used memory and close the files		
		DbgPrint("Terminating\n");	
		DbgPrint("Free memory\n");	
		if (memoryregion!=NULL) ExFreePool(memoryregion);
		if (AddressList!=NULL) ExFreePool(AddressList);
		if (ValueList0!=NULL) ExFreePool(ValueList0);
		if (ValueList1!=NULL) ExFreePool(ValueList1);
		if (ValueList2!=NULL) ExFreePool(ValueList2);
		if (ValueList3!=NULL) ExFreePool(ValueList3);
		if (ValueList4!=NULL) ExFreePool(ValueList4);
		if (ValueList6!=NULL) ExFreePool(ValueList6);

		DbgPrint("Close files\n");
		if (addressfile!=0) ZwClose(addressfile);
		if (valuefile!=0) ZwClose(valuefile);
		
        
		CurrentScan.scanning=FALSE;
		CurrentScan.ThreadActive=FALSE;
		PsTerminateSystemThread(STATUS_SUCCESS);
	}
	return;
}

BOOLEAN FirstScan(PEPROCESS ActivePEPROCESS, DWORD start,DWORD stop,BYTE vartype,BYTE scantype,BYTE scanvaluesize,char *scanvalue,BYTE ScanOptions)
{
	BOOLEAN status=FALSE;
	CurrentScan.process=ActivePEPROCESS;
	CurrentScan.Start=start;
	CurrentScan.Stop=stop;
	CurrentScan.Vartype=vartype;
	CurrentScan.Scantype=scantype;
	CurrentScan.ScanOptions=ScanOptions;

	if (CurrentScan.scanvalue!=NULL)
	{
		//a leftover from last scan (e.g thread crashed...)
		ExFreePool(CurrentScan.scanvalue);
		CurrentScan.scanvalue=NULL;
	}
	CurrentScan.scanvalue=ExAllocatePoolWithTag(PagedPool,scanvaluesize,0);
	if (CurrentScan.scanvalue==NULL)
		return FALSE; //error

	RtlCopyMemory(CurrentScan.scanvalue,scanvalue,scanvaluesize);
	CurrentScan.scanvaluelength=scanvaluesize;

	__try
	{
		OBJECT_ATTRIBUTES oaCreateThread;
		HANDLE th;
		CurrentScan.scanning=TRUE;

		//start the scan
		
		if (scantype==ST_Advanced_Scan)
		{
			//unknown initial value scan
			InitializeObjectAttributes(&oaCreateThread, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
			DbgPrint("Creating scanthread\n");
			if (NT_SUCCESS(PsCreateSystemThread(&th,0L,&oaCreateThread,NULL,NULL,UnknownInitialValueScan,NULL)))
			{
				DbgPrint("Created thread\n");
				ZwClose(th); //I dont want this handle (useless anyhow except for setting priority)
			}
			else
				DbgPrint("Failed to create thread\n");
		}
		else
		{
			//first scan for value
			InitializeObjectAttributes(&oaCreateThread, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
			DbgPrint("Creating scanthread\n");
			if (NT_SUCCESS(PsCreateSystemThread(&th,0L,&oaCreateThread,NULL,NULL,FirstScanThread,NULL)))
			{
				DbgPrint("Created thread\n");
				ZwClose(th); //I dont want this handle (useless anyhow except for setting priority)
			}
			else
				DbgPrint("Failed to create thread\n");
		}

		//and resume the command listener
	}
	__except(1)
	{
		DbgPrint("Error\n");
	}

	return status;
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡电影一区二区三区| 91麻豆精品在线观看| 亚洲成a人v欧美综合天堂| 1区2区3区精品视频| 国产欧美精品一区二区色综合| 欧美成人精品二区三区99精品| 欧美年轻男男videosbes| 欧美三级中文字| 欧美日韩一区二区电影| 欧美日韩中文一区| 欧美日韩免费高清一区色橹橹| 91九色最新地址| 日本韩国欧美一区| 欧美日韩午夜在线| 在线播放日韩导航| 欧美xxx久久| 久久久亚洲国产美女国产盗摄| 国产日韩欧美在线一区| 中日韩av电影| 亚洲欧美激情插 | 亚洲激情图片qvod| 有坂深雪av一区二区精品| 亚洲国产视频网站| 蜜桃视频一区二区三区在线观看| 麻豆精品国产91久久久久久| 国产综合色精品一区二区三区| 国产一区91精品张津瑜| 成人动漫一区二区在线| 91免费看`日韩一区二区| 欧美午夜一区二区| 欧美xxxx在线观看| 国产精品网曝门| 亚洲综合图片区| 喷白浆一区二区| 国产精品一区二区果冻传媒| 95精品视频在线| 欧美人与禽zozo性伦| 精品久久久久久久久久久院品网| 国产欧美日韩卡一| 一区二区三区中文在线观看| 日本不卡在线视频| 成人一区二区在线观看| 91精品1区2区| 亚洲精品一区二区三区精华液| 国产亚洲欧美激情| 一区二区欧美精品| 国产在线精品一区二区| 97精品国产97久久久久久久久久久久| 欧美三电影在线| 久久久久久久久久久久久夜| 亚洲精品伦理在线| 久久国产人妖系列| 色哟哟一区二区三区| 欧美大片一区二区三区| 亚洲欧美aⅴ...| 狠狠色综合色综合网络| 色天天综合色天天久久| 精品国产三级电影在线观看| 亚洲最新视频在线观看| 老司机精品视频线观看86| 91麻豆国产自产在线观看| 欧美成人一区二区三区片免费| 亚洲欧美综合另类在线卡通| 九九视频精品免费| 色av综合在线| 欧美韩国日本一区| 美女网站在线免费欧美精品| 色综合久久天天| 久久久精品国产免费观看同学| 午夜视频在线观看一区二区| 成人激情图片网| 精品国产一区久久| 婷婷久久综合九色综合伊人色| 北岛玲一区二区三区四区| 精品欧美久久久| 午夜久久福利影院| 91久久精品日日躁夜夜躁欧美| 国产欧美精品在线观看| 国产综合色视频| 日韩欧美一区电影| 五月激情综合色| 色综合天天综合网国产成人综合天| 久久综合99re88久久爱| 蜜桃传媒麻豆第一区在线观看| 在线视频中文字幕一区二区| 欧美激情一区不卡| 国产精品99久久久| 精品国产三级电影在线观看| 日韩av电影免费观看高清完整版在线观看 | 国产精品免费视频观看| 黄网站免费久久| 日韩一区二区三| 视频一区二区不卡| 在线观看网站黄不卡| 国产精品久久久久久妇女6080| 国产美女主播视频一区| 欧美本精品男人aⅴ天堂| 蜜臀久久99精品久久久久宅男| 欧美三区在线观看| 亚洲福利国产精品| 欧美影院一区二区| 亚洲最大成人综合| 一本色道久久加勒比精品| 日韩美女视频19| 99re这里都是精品| 亚洲男同性恋视频| 欧美制服丝袜第一页| 亚洲黄色尤物视频| 欧美中文字幕一区二区三区 | 国产精品456露脸| 久久婷婷久久一区二区三区| 国内一区二区视频| 久久久久久久久久久黄色| 国产一区高清在线| 久久婷婷久久一区二区三区| 国产91精品一区二区麻豆网站| 国产午夜一区二区三区| 成人高清视频在线| 亚洲人快播电影网| 精品污污网站免费看| 日韩福利电影在线| 日韩美女主播在线视频一区二区三区| 国产一区欧美一区| 中文字幕日本不卡| 欧美最猛黑人xxxxx猛交| 天堂成人免费av电影一区| 日韩欧美视频一区| 国产成人精品免费一区二区| 亚洲三级在线免费观看| 91黄色小视频| 视频一区二区不卡| 国产亚洲一区二区三区| 成人妖精视频yjsp地址| 亚洲欧美日韩一区| 欧美日韩中字一区| 国产综合一区二区| 亚洲色图视频免费播放| 欧美精品乱码久久久久久按摩| 老司机精品视频线观看86 | 国产精品自拍网站| 国产精品久久久久久久久免费相片| 91日韩精品一区| 日韩高清在线一区| 久久精品人人做| 在线观看国产精品网站| 久久不见久久见中文字幕免费| 久久精品夜色噜噜亚洲a∨ | 中文字幕亚洲欧美在线不卡| 91久久精品一区二区三区| 久久成人免费网站| 国产精品美女久久久久高潮| 欧美人狂配大交3d怪物一区| 国产专区欧美精品| 一区二区三区四区激情 | 蜜桃视频在线观看一区| 国产精品久久久久一区二区三区| 欧美色图一区二区三区| 国产精品99久久久久久宅男| 亚洲动漫第一页| 国产亚洲精品超碰| 欧美日韩日日骚| 成人99免费视频| 美女视频一区在线观看| 亚洲欧美乱综合| 久久婷婷国产综合精品青草| 欧美专区亚洲专区| 成人一级黄色片| 久久99精品视频| 亚洲影院理伦片| 欧美国产乱子伦| 日韩免费视频一区| 欧美日韩中文字幕精品| 白白色亚洲国产精品| 老司机午夜精品| 亚洲不卡av一区二区三区| 国产精品私人影院| 精品国产一区二区亚洲人成毛片| 欧美亚洲丝袜传媒另类| 成人小视频在线| 极品少妇一区二区| 日本aⅴ免费视频一区二区三区| 1000部国产精品成人观看| 久久一留热品黄| 在线不卡免费av| 91高清在线观看| 成人午夜电影久久影院| 国产一区二区福利视频| 日韩电影在线一区二区| 一区二区三区在线观看国产| 国产精品欧美精品| 久久女同性恋中文字幕| 欧美一级日韩一级| 6080午夜不卡| 欧美中文字幕一区二区三区亚洲| 97se亚洲国产综合自在线| 成人av综合在线| 国产不卡免费视频| 国产成人在线视频免费播放| 韩国一区二区在线观看| 久久99精品一区二区三区 |