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

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

?? disasm.c

?? 反匯編工具原代碼,從sourceforge上下的
?? C
?? 第 1 頁 / 共 5 頁
字號:
		strcpy(strBuffer,"eax");
		return;
	case 1:
		strcpy(strBuffer,"ecx");
		return;
	case 2:
		strcpy(strBuffer,"edx");
		return;
	case 3:
		strcpy(strBuffer,"ebx");
		return;
	case 4:
		strcpy(strBuffer,"esp");
		return;
	case 6:
		strcpy(strBuffer,"esi");
		return;
	case 7:
		strcpy(strBuffer,"edi");
		return;
	}
};


void GetSIBScaledIndex(unsigned char SIB, char *strBuffer, int cbBuffer)
{
	unsigned char SS;
	unsigned char Index;
	unsigned char ucTemp;

	SS = (unsigned char)((SIB & 0xC0) >> 6);
	Index = (unsigned char)((SIB & 0x38) >> 3);

	ZeroMemory(strBuffer,cbBuffer);
	switch(SS)
	{
	case 0:
		switch(Index)
		{
		case 0:
			strncpy(strBuffer,"eax",cbBuffer);
			return;
		case 1:
			strncpy(strBuffer,"ecx",cbBuffer);
			return;
		case 2:
			strncpy(strBuffer,"edx",cbBuffer);
			return;
		case 3:
			strncpy(strBuffer,"ebx",cbBuffer);
			return;
		case 5:
			strncpy(strBuffer,"ebp",cbBuffer);
			return;
		case 6:
			strncpy(strBuffer,"esi",cbBuffer);
			return;
		case 7:
			strncpy(strBuffer,"edi",cbBuffer);
			return;
		};
		return;
	case 1:
	case 2:
	case 3:
		/* play some trick - prepare and reuse code for case 0 above */
		ucTemp = (unsigned char)(SIB & 0x3F);
		GetSIBScaledIndex(ucTemp,strBuffer,cbBuffer);
		if(Index != 4) /* otherwise we would get blank */
			_snprintf(strBuffer + strlen(strBuffer),cbBuffer - strlen(strBuffer),"*%d",((unsigned char)1)<<SS);
		return;
	};
};


int DecodeMemory32SIB(DefaultOperationSizeAttrib DSize, unsigned char *pStart, int iOpIndex, IA32InstructionDecode *pIA32Decode)
{
	unsigned char SIB;
	unsigned char ModRM;
	unsigned char ucD8;
	unsigned int uiD32;	
	char strBase[64];
	char strIndex[64];
	char *strOutput;
	char cTemp = '+';
	char strOpSize[20];

	if(!pIA32Decode->SIA32InstructionHelper.boolSIBExists)
		return 0;
	if(!pIA32Decode->SIA32InstructionHelper.boolModRMExists)
		return 0;
	ModRM = pIA32Decode->SIA32RawInstruction.ModRM;
	SIB = pIA32Decode->SIA32RawInstruction.SIB;
	if(!GetOutputBuffer(iOpIndex,&strOutput,pIA32Decode))
		return 0;
	GetMemoryOperandSizeStr(strOutput,strOpSize,DSize,pIA32Decode);
	if(strlen(strOpSize))
		strcat(strOpSize," ");
	GetSIBBase(SIB,strBase,sizeof(strBase));
	GetSIBScaledIndex(SIB,strIndex,sizeof(strIndex));
	if(!strlen(strBase))
	{
		/* decode operand according to Mod field of ModRM byte */
		switch(ModRM>>6)
		{
		case 0:
			uiD32 = *((unsigned int*)(pStart + 
						pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
						pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
						pIA32Decode->SIA32InstructionHelper.boolModRMExists +
						pIA32Decode->SIA32InstructionHelper.boolSIBExists));
			*((unsigned int*)pIA32Decode->SIA32RawInstruction.URawDisplacement.ca4ByteRawDisplacement) = uiD32;
			pIA32Decode->SIA32InstructionHelper.cbRawDisplacement = 4;
			sprintf(strOutput,"%s[%s+0x%08X]",strOpSize,strIndex,uiD32);
			return 1;
		case 1:
			ucD8 = pStart[pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
						pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
						pIA32Decode->SIA32InstructionHelper.boolModRMExists +
						pIA32Decode->SIA32InstructionHelper.boolSIBExists];
			pIA32Decode->SIA32RawInstruction.URawDisplacement.cByteRawDisplacement = ucD8;
			pIA32Decode->SIA32InstructionHelper.cbRawDisplacement = 1;
			if(ucD8 & 0x80)
			{
				cTemp = '-';
				ucD8 = (unsigned char)(((short)-ucD8) & 0x00FF);
			}
			if(strlen(strIndex))
				sprintf(strOutput,"%s[ebp+%s%c0x%02X]",strOpSize,strIndex,cTemp,ucD8);
			else
				sprintf(strOutput,"%s[ebp%c0x%02X]",strOpSize,cTemp,ucD8);
			return 1;
		case 2:
			uiD32 = *((unsigned int*)(pStart + 
						pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
						pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
						pIA32Decode->SIA32InstructionHelper.boolModRMExists +
						pIA32Decode->SIA32InstructionHelper.boolSIBExists));
			*((unsigned int*)pIA32Decode->SIA32RawInstruction.URawDisplacement.ca4ByteRawDisplacement) = uiD32;
			pIA32Decode->SIA32InstructionHelper.cbRawDisplacement = 4;
			sprintf(strOutput,"%s[ebp+%s+0x%08X]",strOpSize,strIndex,uiD32);
			return 1;
		};
	}
	else
	{
		uiD32 = *((unsigned int*)pIA32Decode->SIA32RawInstruction.URawDisplacement.ca4ByteRawDisplacement);
		ucD8 = pIA32Decode->SIA32RawInstruction.URawDisplacement.cByteRawDisplacement;
		switch(pIA32Decode->SIA32InstructionHelper.cbRawDisplacement)
		{
		case 0:
			if(strlen(strIndex))
				sprintf(strOutput,"%s[%s+%s]",strOpSize,strBase,strIndex);
			else
				sprintf(strOutput,"%s[%s]",strOpSize,strBase);
			return 1;
		case 1:
			if(ucD8 & 0x80)
			{
				cTemp = '-';
				ucD8 = (unsigned char)(((short)-ucD8) & 0x00FF);
			}
			if(strlen(strIndex))
				sprintf(strOutput,"%s[%s+%s%c0x%02X]",strOpSize,strBase,strIndex,cTemp,ucD8);
			else
				sprintf(strOutput,"%s[%s%c0x%02X]",strOpSize,strBase,cTemp,ucD8);

			return 1;
		case 4:
			if(strlen(strIndex))
				sprintf(strOutput,"%s[%s+%s+0x%08X]",strOpSize,strBase,strIndex,uiD32);
			else
				sprintf(strOutput,"%s[%s+0x%08X]",strOpSize,strBase,uiD32);
			return 1;
		default:
			return 0;
		}
	}

	return 0;
};


int DecodeMemoryOperand32(DefaultOperationSizeAttrib DSize, unsigned char *pStart, int iOpIndex, IA32InstructionDecode *pIA32Decode)
{
	unsigned char ModRM;
	unsigned char SIB;
	unsigned char ucD8;
	unsigned int uiD32;
	char *strOutput;
	char cTemp = '+';
	char strSegOverride[10];
	char strOpSize[20];
	unsigned char ucSegOverride;

	if(!pIA32Decode->SIA32InstructionHelper.boolModRMExists)
		return 0;
	if(!GetOutputBuffer(iOpIndex,&strOutput,pIA32Decode))
		return 0;
	GetMemoryOperandSizeStr(strOutput,strOpSize,DSize,pIA32Decode);
	if(strlen(strOpSize))
		strcat(strOpSize," ");

	ModRM = pIA32Decode->SIA32RawInstruction.ModRM;
	ucSegOverride = GetSegmentOverride(pIA32Decode);
	GetSegmentOverrideStr(ucSegOverride,strSegOverride,sizeof(strSegOverride));
	if(strlen(strSegOverride))
		strcat(strSegOverride,":");
	switch((ModRM & 0xC0) >> 6)
	{
	case 0:
		switch(ModRM & 0x07)
		{
		case 0:
			sprintf(strOutput,"%s%s[eax]",strOpSize,strSegOverride);
			return 1;
		case 1:
			sprintf(strOutput,"%s%s[ecx]",strOpSize,strSegOverride);
			return 1;
		case 2:
			sprintf(strOutput,"%s%s[edx]",strOpSize,strSegOverride);
			return 1;
		case 3:
			sprintf(strOutput,"%s%s[ebx]",strOpSize,strSegOverride);
			return 1;
		case 4:
			/* we got a SIB byte following the ModRM byte */
			SIB = pStart[	pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
							pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
							pIA32Decode->SIA32InstructionHelper.boolModRMExists];
			pIA32Decode->SIA32InstructionHelper.boolSIBExists = 1;
			pIA32Decode->SIA32RawInstruction.SIB = SIB;
			return DecodeMemory32SIB(DSize, pStart,iOpIndex,pIA32Decode);
		case 5:
			/* we just got a disp32 */
			uiD32 = *((unsigned int*)(pStart +	pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
								pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
								pIA32Decode->SIA32InstructionHelper.boolModRMExists));
			if(!strlen(strSegOverride))
				strcpy(strSegOverride,"ds:");
			sprintf(strOutput,"%s%s[0x%08X]",strOpSize,strSegOverride,uiD32);		
			pIA32Decode->SIA32InstructionHelper.cbRawDisplacement = 4;
			*((unsigned int*)pIA32Decode->SIA32RawInstruction.URawDisplacement.ca4ByteRawDisplacement) = uiD32;
			return 1;
		case 6:
			sprintf(strOutput,"%s%s[esi]",strOpSize,strSegOverride);
			return 1;
		case 7:
			sprintf(strOutput,"%s%s[edi]",strOpSize,strSegOverride);
			return 1;
		};
	case 1:
		/* we got a disp8, needs to sign-extended */
		if((ModRM & 0x7) == 4)
			ucD8 = pStart[	pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
							pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
							pIA32Decode->SIA32InstructionHelper.boolModRMExists + 1];
		else
			ucD8 = pStart[	pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
							pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
							pIA32Decode->SIA32InstructionHelper.boolModRMExists];
		
		pIA32Decode->SIA32InstructionHelper.cbRawDisplacement = 1;
		pIA32Decode->SIA32RawInstruction.URawDisplacement.cByteRawDisplacement = ucD8;
		
		if(ucD8 & 0x80)
		{
			cTemp = '-';
			ucD8 = (unsigned char)(((short)-ucD8) & 0x00FF);
		}
		switch(ModRM & 0x07)
		{
		case 0:
			sprintf(strOutput,"%s%s[eax%c0x%02X]",strOpSize,strSegOverride,cTemp,ucD8);
			return 1;
		case 1:
			sprintf(strOutput,"%s%s[ecx%c0x%02X]",strOpSize,strSegOverride,cTemp,ucD8);
			return 1;
		case 2:
			sprintf(strOutput,"%s%s[edx%c0x%02X]",strOpSize,strSegOverride,cTemp,ucD8);
			return 1;
		case 3:
			sprintf(strOutput,"%s%s[ebx%c0x%02X]",strOpSize,strSegOverride,cTemp,ucD8);
			return 1;
		case 4:
			/* we got a SIB byte following the ModRM byte */
			SIB = pStart[	pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
							pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
							pIA32Decode->SIA32InstructionHelper.boolModRMExists];
			pIA32Decode->SIA32InstructionHelper.boolSIBExists = 1;
			pIA32Decode->SIA32RawInstruction.SIB = SIB;
			return DecodeMemory32SIB(DSize,pStart,iOpIndex,pIA32Decode);
		case 5:
			sprintf(strOutput,"%s%s[ebp%c0x%02X]",strOpSize,strSegOverride,cTemp,ucD8);
			return 1;
		case 6:
			sprintf(strOutput,"%s%s[esi%c0x%02X]",strOpSize,strSegOverride,cTemp,ucD8);
			return 1;
		case 7:
			sprintf(strOutput,"%s%s[edi%c0x%02X]",strOpSize,strSegOverride,cTemp,ucD8);
			return 1;
		};
	case 2:
		/* we got a disp32, assign it to the raw instruction, with possibility of SIB in mind */
		if((ModRM & 0x7) == 4)
			/* we have SIB */
			uiD32 = *((unsigned int*)(pStart +pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
							pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
							pIA32Decode->SIA32InstructionHelper.boolModRMExists + 1));

		else
			uiD32 = *((unsigned int*)(pStart +pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
							pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
							pIA32Decode->SIA32InstructionHelper.boolModRMExists));
		pIA32Decode->SIA32InstructionHelper.cbRawDisplacement = 4;
		*((unsigned int*)pIA32Decode->SIA32RawInstruction.URawDisplacement.ca4ByteRawDisplacement) = uiD32;
		switch(ModRM & 0x07)
		{
		case 0:
			sprintf(strOutput,"%s%s[eax+0x%08X]",strOpSize,strSegOverride,uiD32);
			return 1;
		case 1:
			sprintf(strOutput,"%s%s[ecx+0x%08X]",strOpSize,strSegOverride,uiD32);
			return 1;
		case 2:
			sprintf(strOutput,"%s%s[edx+0x%08X]",strOpSize,strSegOverride,uiD32);
			return 1;
		case 3:
			sprintf(strOutput,"%s%s[ebx+0x%08X]",strOpSize,strSegOverride,uiD32);
			return 1;
		case 4:
			/* we got a SIB byte following the ModRM byte */
			SIB = pStart[	pIA32Decode->SIA32InstructionHelper.cbRawPrefixes +
							pIA32Decode->SIA32InstructionHelper.cbRawOpcode +
							pIA32Decode->SIA32InstructionHelper.boolModRMExists];
			pIA32Decode->SIA32InstructionHelper.boolSIBExists = 1;
			pIA32Decode->SIA32RawInstruction.SIB = SIB;
			return DecodeMemory32SIB(DSize,pStart,iOpIndex,pIA32Decode);
		case 5:
			sprintf(strOutput,"%s%s[ebp+0x%08X]",strOpSize,strSegOverride,uiD32);
			return 1;
		case 6:
			sprintf(strOutput,"%s%s[esi+0x%08X]",strOpSize,strSegOverride,uiD32);
			return 1;
		case 7:
			sprintf(strOutput,"%s%s[edi+0x%08X]",strOpSize,strSegOverride,uiD32);
			return 1;
		};
	};

	return 0;
}


int DecodeMemoryOperand(unsigned char *pStart, DefaultOperationSizeAttrib DSize, int iOpIndex, IA32InstructionDecode *pIA32Decode)
{
	int iRet;
	/* if the instruction has an address-size attribute we use non-default addressing mode */
	if(DSize == OpSize32)
	{
		if(IA32InstructionPrefixExists(0x67,pIA32Decode))
			iRet = DecodeMemoryOperand16(DSize,pStart,iOpIndex,pIA32Decode);
		else
			iRet = DecodeMemoryOperand32(DSize,pStart,iOpIndex,pIA32Decode);
	}
	else
	{
		if(!IA32InstructionPrefixExists(0x67,pIA32Decode))
			iRet = DecodeMemoryOperand16(DSize,pStart,iOpIndex,pIA32Decode);
		else
			iRet = DecodeMemoryOperand32(DSize,pStart,iOpIndex,pIA32Decode);
	};
	return iRet;
};


int GetOutputBuffer(int iOpIndex, char** strOutput,IA32InstructionDecode *pIA32Decode)
{
	switch(iOpIndex)
	{
		case 1:
			*strOutput = pIA32Decode->SIA32InstructionDescription.strOperandA;			
			return 1;
		case 2:
			*strOutput = pIA32Decode->SIA32InstructionDescription.strOperandB;
			return 1;
		case 3:
			*strOutput = pIA32Decode->SIA32InstructionDescription.strOperandC;
			return 1;
		default:
			return 0;
	};
};


int strIsFPRegister(const char* str)
{
	if(strlen(str) != 5)
		return 0;
	if(strstr(str,"st(") == str)
	{
		if(str[strlen(str)-1] != ')')
			return 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天亚洲美女在线视频| 亚洲欧洲三级电影| 欧美日韩一级片在线观看| 99久久er热在这里只有精品15| 激情成人综合网| 国内久久精品视频| 国产精品中文有码| 国产传媒日韩欧美成人| 国产成人综合亚洲网站| 国产高清在线精品| 成人av中文字幕| 色婷婷综合久久久中文一区二区 | 粉嫩嫩av羞羞动漫久久久| 国产精品一卡二卡| 成人午夜在线免费| 色综合天天综合色综合av| 色综合一区二区| 欧美日韩亚洲国产综合| 日韩一区二区视频在线观看| 26uuu国产一区二区三区| 欧美极品xxx| 亚洲欧美视频在线观看视频| 亚洲高清视频在线| 蜜臀va亚洲va欧美va天堂| 国模大尺度一区二区三区| 成人免费观看视频| 91色视频在线| 91精品国产全国免费观看| 日韩三区在线观看| 中文字幕欧美国产| 亚洲一区二区三区四区不卡| 美日韩一级片在线观看| 成人18视频日本| 欧美片在线播放| 国产精品乱码一区二三区小蝌蚪| 一区二区三区毛片| 国产一区二区免费在线| 色噜噜狠狠成人中文综合| 欧美一区二区视频在线观看2020 | 久久亚洲免费视频| 亚洲免费在线视频一区 二区| 偷拍自拍另类欧美| 国产激情视频一区二区三区欧美 | 中文字幕av在线一区二区三区| 亚洲一区二区欧美日韩| 精品写真视频在线观看| 99久久久无码国产精品| 日韩女优电影在线观看| 亚洲欧美日韩久久| 国产麻豆精品视频| 91 com成人网| 亚洲乱码中文字幕| 国产高清精品网站| 日韩欧美一二三四区| 亚洲高清免费在线| 成人18视频在线播放| 久久久久99精品国产片| 日韩av电影免费观看高清完整版在线观看| 成人网页在线观看| 精品国产91久久久久久久妲己| 亚洲高清视频的网址| 99精品欧美一区二区三区小说| 久久九九久久九九| 久久疯狂做爰流白浆xx| 正在播放一区二区| 日本欧美一区二区三区乱码| 欧美日韩在线三级| 亚洲最新在线观看| 91传媒视频在线播放| 亚洲日本护士毛茸茸| 成人精品视频一区二区三区 | 欧美亚洲综合久久| 一区二区三区在线视频免费观看 | 婷婷综合在线观看| 欧美午夜一区二区三区 | 精品人伦一区二区色婷婷| 午夜精品123| 宅男噜噜噜66一区二区66| 天天爽夜夜爽夜夜爽精品视频| 欧美巨大另类极品videosbest | 色婷婷激情综合| 亚洲一区二区三区中文字幕在线| 欧美在线观看视频一区二区三区| 一区二区三区在线观看动漫| 欧美系列日韩一区| 日本色综合中文字幕| 精品免费一区二区三区| 国产东北露脸精品视频| 亚洲欧洲综合另类在线| 欧美日韩中文字幕一区| 偷窥国产亚洲免费视频| 欧美精品一区二区高清在线观看 | 色天使久久综合网天天| 国产精品污www在线观看| 欧美日韩五月天| 看电影不卡的网站| 久久久精品天堂| 成人手机在线视频| 亚洲欧美色综合| 日韩欧美色综合网站| 床上的激情91.| 亚洲一区二区三区爽爽爽爽爽| 欧美一区二区三区免费| 国产91丝袜在线18| 亚洲午夜精品网| 久久综合九色综合久久久精品综合| 国产成人啪免费观看软件| 亚洲美女偷拍久久| 91麻豆精品久久久久蜜臀| 国产成人aaa| 日本美女一区二区| 中文成人av在线| 欧美影视一区在线| 国产91丝袜在线播放| 亚洲va欧美va人人爽午夜| 久久久国产综合精品女国产盗摄| 色综合久久久网| 国产在线不卡一区| 亚洲bdsm女犯bdsm网站| 国产欧美日本一区二区三区| 欧美精品亚洲二区| 色综合亚洲欧洲| 国产一区二区三区免费播放| 亚洲美女屁股眼交3| 久久久99精品久久| 欧美一区二区三区爱爱| 色婷婷久久一区二区三区麻豆| 国产精品1024| 精品一区二区三区不卡| 亚洲电影中文字幕在线观看| 国产精品嫩草影院av蜜臀| 精品免费日韩av| 日韩一区二区在线观看| 精品视频一区 二区 三区| av欧美精品.com| 国产成人亚洲综合色影视| 麻豆精品一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲无线码一区二区三区| 国产精品久久久久久久第一福利| 2024国产精品| 欧美成人女星排名| 日韩一区二区三区视频| 欧美日韩国产美女| 欧美日韩激情一区二区三区| 色偷偷88欧美精品久久久| 色88888久久久久久影院野外| 国产suv精品一区二区三区| 国产麻豆91精品| 国产在线播精品第三| 国产一区美女在线| 国产一区视频在线看| 国产成人啪午夜精品网站男同| 黑人巨大精品欧美一区| 国产一区二区在线电影| 国产乱子伦视频一区二区三区| 看国产成人h片视频| 激情五月激情综合网| 国内国产精品久久| 成人av片在线观看| 91浏览器入口在线观看| 欧美日韩在线免费视频| 在线综合+亚洲+欧美中文字幕| 日韩一区二区三区电影在线观看| 精品三级在线观看| 国产欧美视频在线观看| 国产精品理论在线观看| 亚洲欧美日韩国产手机在线| 亚洲一区二区五区| 久久99久国产精品黄毛片色诱| 精品制服美女丁香| av在线不卡网| 欧美久久一区二区| 国产午夜精品在线观看| 17c精品麻豆一区二区免费| 亚洲国产精品尤物yw在线观看| 日韩有码一区二区三区| 激情综合五月天| 91亚洲精品乱码久久久久久蜜桃| 欧美在线一二三| 日韩视频中午一区| 亚洲婷婷在线视频| 毛片不卡一区二区| 成人黄色小视频| 538prom精品视频线放| 日本一区免费视频| 亚洲成人av电影在线| 国产成人鲁色资源国产91色综| 91麻豆国产福利精品| 日韩欧美成人一区二区| 亚洲欧美日韩中文字幕一区二区三区| 天使萌一区二区三区免费观看| 国产精品一二三四区| 欧洲精品一区二区| 国产视频视频一区| 日韩av一级电影| 欧美午夜寂寞影院| 日本一区二区免费在线| 全部av―极品视觉盛宴亚洲| 99re这里都是精品|