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

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

?? square.idc

?? 《網絡滲透技術》一書所附源代碼
?? IDC
?? 第 1 頁 / 共 2 頁
字號:
		else if(opcode == "ldi" && GetOpnd(addr,1) == REG ) //ldil 0x55,%r
		{
			D_MSG(DEBUG_FLAG,addr,"ldi",REG);
			return VALUE+getValue(addr,0);
		}
		else if(opcode == "ldo"  && GetOpnd(addr,1) == REG) //ldo 0x456(%r),%r  / ldo  -0xc0 +var_23(%sp),%r
		{
			D_MSG(DEBUG_FLAG,addr,"ldo",REG);
			if(GetOpType(addr,0) !=4) //非相對尋址,出錯
				F_ERR(addr,VALUE);

			tmpStr = GetOpnd(addr,0);
			REG = getRegister(tmpStr);
			if(REG == "")
				F_ERR(addr,VALUE);

			if(REG == "%dp")
				return VALUE + REGDP;
			if(REG == "%r0")
				return VALUE + getValue(addr,0);
			if(REG == "%sp")
				F_STA(addr,VALUE);
			if(REG == "%r28")
				F_RET(addr,VALUE);

			VALUE = VALUE + getValue(addr,0);
		}
		else if(opcode == "or"  && GetOpnd(addr,2) == REG) //目前只能處理or的幾種特殊情形
		{
			auto type1,type2;
			auto str1,str2;
			D_MSG(DEBUG_FLAG,addr,"or",REG);

			type1=GetOpType(addr,0);
			type2=GetOpType(addr,1);

			str1 = GetOpnd(addr,0);
			str2 = GetOpnd(addr,1);

			if( (type1==5 || type1==7) && (type2==5 || type2==7) ) //or 0x45,0x23 ,%r
			{
				VALUE = VALUE + (getValue(addr,0) | getValue(addr,1));
			}
			else if(type1 == 1 && (str2=="0" || str2=="%r0") ) // or %r,0,%r  / or %r,%r0,%r
			{
				if(str1 == "%dp")
					return VALUE + REGDP;
				if(str1 == "%r0")
					return VALUE ;
				if(str1 == "%sp")
					F_STA(addr,VALUE);
				if(str1 == "%r28")
					F_RET(addr,VALUE);

				REG = str1;  //如果引用的是其他積存器則繼續回溯
			}
			else
				F_ERR(addr,VALUE);  //其他情形出錯


		}
		else if(opcode == "ldw"  && GetOpnd(addr,1) == REG) //ldw %r15(%r23),%r3 / ldw 4(%r1),%r2 / ldw -0x44+var_8(%sp,%r3)
		{
			D_MSG(DEBUG_FLAG,addr,"ldw",REG);
			type = GetOpType(addr,0);
			if(type != 4 ) //目前只能處理基址尋址
				F_ERR(addr,VALUE);

			tmpReg = getRegister(GetOpnd(addr,0));
			if(tmpReg == "")
				F_ERR(addr,VALUE);

			tmp = getValue(addr,0);

			if(tmpReg == "%dp") //ldw -0x4882(%dp),%r26
			{
				if(tmp == "ERR")
					F_ERR(addr,VALUE);
				tmpAddr = tmp + REGDP;
				return VALUE + Dword(tmpAddr);
			}
			if(tmpReg != "%sp" && tmp != "ERR" )//如果不是棧內變量試圖在前10條指令內找到 ldil 0x77,%dp,%r,如果沒有找到則出錯
			{
				//addil           -0x800, %dp, %r1
				// . . . . 
				//ldw             -0x150(%sr0,%r1), %r21 # ._write
				//ldw             -0x14C(%sr0,%r1), %r19 # dword_40024E74
				//該處理方式不是非常嚴謹,基本基于常見如上形勢,出現,如果沒有找到就將整個作為REG,試圖找到對應的stw
				auto n ;
				n=0;
				tmpAddr = addr;
				while(tmpAddr > FUNC_BEGIN &&  tmpAddr < FUNC_END && n < 30 && CLICK <PREVENT_UN_LOCK_CLICK )
				{
					tmpAddr =tmpAddr-4;//=RfirstB(tmpAddr);
					n++;
					CLICK++; //防止死循環

					if(GetMnem(tmpAddr) == "addil" && GetOpnd(tmpAddr,1) == "%dp" && GetOpnd(tmpAddr,2) == tmpReg)
					{
						tmpValue = getValue(tmpAddr,0);
						if(tmpValue == "ERR")
							F_ERR(tmpAddr,VALUE);
						return VALUE + Dword( tmp + tmpValue+REGDP );
					}
					else if(GetMnem(tmpAddr)=="ldil" || GetMnem(tmpAddr)=="ldi" && GetOpnd(tmpAddr,1) == tmpReg)
					{
						tmpValue =getValue(tmpAddr,0);
						if(tmpValue == "ERR")
							F_ERR(tmpAddr,VALUE);
						return VALUE + Dword( tmp + tmpValue);
					}
					else if(GetMnem(tmpAddr) == "copy" && GetOpnd(tmpAddr,1) == tmpReg)
					{
						tmpReg = GetOpnd(tmpAddr,0);
						if(GetOpType(tmpAddr,0) == 1)
						{
							if(tmpReg == "%r0")
								return VALUE + Dword(tmp);
							if(tmpReg == "%dp")
								return VALUE + Dword(tmp + REGDP);
							if(tmpReg == "%sp")
								break;
						}
						else
						{
							return VALUE + Dword(tmp + getValue(tmpAddr,0));
						}
					}
				}// END while  (指定范圍內尋找能迅速處理的指令)
			}

			//將整個字符串 -0x140+var_48(%sr0,%sp) 作為尋找對象,該目標只能由stw處理。
			REG = GetOpnd(addr,0);  //繼續回溯
		}
		else if(opcode == "stw" && GetOpnd(addr,1) == REG) //stw %r,sw  / stw 0x88,sw
		{
			D_MSG(DEBUG_FLAG,addr,"stw",REG);
			type = GetOpType(addr,0);
			if(type == 1) //寄存器
			{
				tmpReg = GetOpnd(addr,0);
				if(tmpReg == "%dp")
					return VALUE + REGDP;
				if(tmpReg == "%r0")
					return VALUE;
				if(tmpReg == "%sp")
					F_STA(addr,VALUE);
				if(tmpReg == "%r28")
					F_RET(addr,VALUE);
				REG = tmpReg;  //繼續回溯
			}	
			else if(type == 5 || type == 7)
				return VALUE + getValue(addr,0);
			else
				F_ERR(addr,VALUE);

		}
		else if(GetOpnd(addr,1)==REG)  //未實現相應處理的指令
		{
			if( opcode=="ldb" || opcode=="ldh" || opcode=="addib" || opcode=="movib")
				F_IMP(addr,VALUE);
		}
		else if(GetOpnd(addr,2)==REG)
		{
			if(opcode=="sub"||opcode=="and"||opcode=="add"||opcode=="subi")
				F_IMP(addr,VALUE);
			else if(opcode=="shrd"||opcode=="xor"||opcode=="uxor")
				F_IMP(addr,VALUE);
		}
		else if(GetOpnd(addr,3)==REG)
		{
			if(opcode=="depw" || opcode=="shladd" || opcode=="extrw")
				F_IMP(addr,VALUE);
		}


	} //END while(addr > FUNC_BEGIN)

	//現在已經找離開了函數區域
	if( CLICK == PREVENT_UN_LOCK_CLICK )
	{
		if(DEBUG_FLAG >=3)
			Message("ERROR: getDataResEx() 出現死循環 : 0x%x  0x%x!\n",_addr,addr);

		if(DEBUG_FLAG == 10) //如果調試等級為10則退出程序,退回到IDA
		{
			//沒有找到合適的功能函數 :(
		}

		F_ERR(3,0);
	}
	
	if(REG=="%r26")
		F_ARG(REG,VALUE);
	if(REG=="%r25")
		F_ARG(REG,VALUE);
	if(REG=="%r24")
		F_ARG(REG,VALUE);
	if(REG=="%r23")
		F_ARG(REG,VALUE);

	//仍然沒有判斷出來,出錯
	F_NOF(REG,VALUE);
}

/**
函數: long getDataRes(long,string,long)
說明: 取得數據來源 ,該函數是對getDataResEx()的包裝。
**/
static getDataRes(_addr,_reg,_debugFlag)
{
	auto tmp,tmpValue;

	tmpValue = getDataResEx(_addr,"%r26",_debugFlag);
	tmp = substr(tmpValue,0,3);

	if( !isDRValue(tmpValue) )
	{
		if(_debugFlag >=1)
			Message("Get DataResource Failed : %s\n",tmpValue);
		return "ERR";
	}
	return tmpValue;
}
/**
函數:string getDRFunName(string _drString)
說明:返回"RET xxxx xxxx"中第一個xxxx指定處的回溯路徑上小段范圍內的最近的一個函數調用名稱。出錯返回""。
**/
static getDRFunName(_drString)
{
	auto type,addr,opcode,opnd1,opnd0,tmp;
	auto n,MAX_NUMBER,FUNC_BEGIN,FUNC_END;

	MAX_NUMBER = 40; //在回溯路徑上40個指令內尋找函數調用

	type=getDRType(_drString) ;
	if(type!= "RET" )
		return "";
	tmp = getDRStr1(_drString);
	addr = xtol(tmp);

	if(addr == 0)
		return "";
	if( GetFunctionName(addr) == "")
		return "";
	if( SegName(addr) != "$CODE$")
		return "";

	FUNC_BEGIN = getFuncBeginEA(addr);
	FUNC_END   = FindFuncEnd(FUNC_BEGIN);
	if(FUNC_BEGIN == BADADDR || FUNC_END == BADADDR || FUNC_END <= FUNC_BEGIN)
		return "";

	addr=RfirstB(addr);
	n = 0;
	while(addr > FUNC_BEGIN && addr < FUNC_END &&  n < MAX_NUMBER)
	{
		addr=RfirstB(addr);
		n++;

		opcode = GetMnem(addr);
		opnd0  = GetOpnd(addr,0);
		opnd1  = GetOpnd(addr,1);
		if(opcode == "call" )
			return opnd0;
		if(opcode == "b" && opnd1 == "%r31")
			return opnd0;
	}

	return "";
}


/**
函數:string getDRStrFunName(string _drString)
說明:返回"STA xxxx xxxx"中第一個xxxx指定處的回溯路徑上小段范圍內的字符串操作函數調用名稱。出錯返回""。
**/
static getDRStrFunName(_drString)
{
	auto reg,flag,type,addr,opcode,opnd1,opnd0,tmp;
	auto n,MAX_NUMBER,FUNC_BEGIN,FUNC_END;

	MAX_NUMBER = 400; //在回溯路徑上指定范圍內尋找函數調用

	type=getDRType(_drString) ;
	if(type!= "STA" )
		return "";
	tmp = getDRStr1(_drString);
	addr = xtol(tmp);

	if(addr == 0)
		return "";
	if( GetFunctionName(addr) == "")
		return "";
	if( SegName(addr) != "$CODE$")
		return "";

	if(GetMnem(addr) != "ldo")
		return "";
	flag=GetFlags(addr);
	if(! isStkvar0(flag) )
		return "";
	reg=GetOpnd(addr,0);

	FUNC_BEGIN = getFuncBeginEA(addr);
	FUNC_END   = FindFuncEnd(FUNC_BEGIN);
	if(FUNC_BEGIN == BADADDR || FUNC_END == BADADDR || FUNC_END <= FUNC_BEGIN)
		return "";

	addr=RfirstB(addr);
	n = 0;
	while(addr > FUNC_BEGIN && addr < FUNC_END &&  n < MAX_NUMBER)
	{
		addr=RfirstB(addr);
		n++;

		opcode = GetMnem(addr);
		opnd0  = GetOpnd(addr,0);
		opnd1  = GetOpnd(addr,1);

		if(opcode == "ldo" && opnd0 == reg && opnd1 == "%r26") //目前僅處理給%r26賦值緊跟在call之后的情況
		{
			addr=RfirstB(addr);
			n++;
			opcode = GetMnem(addr);
			opnd0  = GetOpnd(addr,0);
			opnd1  = GetOpnd(addr,1);
			if(opcode == "call"  || (opcode == "b" && opnd1 == "%r31") )
			{
				if(opnd0=="strcpy"||opnd0=="strncpy"||opnd0=="strcat"||opnd0=="strncat")
					return opnd0;
				if(opnd0=="memcpy"||opnd0=="sprintf"||opnd0=="snprintf")
					return opnd0;
			}
		}//end opcode == "ldo" . . .
	}

	return "";
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看视频| 狠狠色丁香久久婷婷综合丁香| 国产99久久久精品| 国产精品精品国产色婷婷| 成人av电影在线| 一区二区视频在线| 欧美日韩国产电影| 久久精品噜噜噜成人av农村| 久久久久亚洲综合| 91一区在线观看| 天天影视涩香欲综合网| 精品国产一区二区三区四区四| 国产高清在线精品| 一个色在线综合| 精品美女在线播放| 色综合久久综合| 青青草国产精品亚洲专区无| 国产亚洲欧美中文| 91免费在线视频观看| 日韩电影免费在线看| 欧美激情综合五月色丁香小说| 色丁香久综合在线久综合在线观看| 爽爽淫人综合网网站| 久久精品视频一区二区| 欧美日韩一区国产| 国产91丝袜在线播放0| 亚洲五码中文字幕| 国产欧美精品一区aⅴ影院| 欧美色网站导航| 岛国精品在线播放| 日韩精品一二区| 亚洲欧洲精品一区二区精品久久久| 欧美精品在线观看一区二区| 粉嫩欧美一区二区三区高清影视 | 日韩三级高清在线| 99在线精品免费| 久久99精品国产| 亚洲一区二区偷拍精品| 国产精品久久看| 欧美精品一区二区三区一线天视频 | 成人av综合一区| 久久av资源网| 婷婷综合五月天| 亚洲美女偷拍久久| 亚洲国产精品成人久久综合一区| 欧美二区在线观看| 91色porny在线视频| 国产精品资源站在线| 日韩av在线发布| 亚洲色图在线播放| 国产欧美日本一区视频| 欧美成人video| 欧美一区二区在线播放| 欧美色国产精品| 91蜜桃传媒精品久久久一区二区| 国产福利91精品| 国产一级精品在线| 久久国产夜色精品鲁鲁99| 婷婷久久综合九色国产成人| 一区二区日韩电影| 亚洲人成网站影音先锋播放| 国产女主播一区| 中文字幕av不卡| 中文av一区特黄| 中文一区二区完整视频在线观看| 国产亚洲一区二区三区四区 | 91久久国产综合久久| 国产69精品久久777的优势| 久久成人综合网| 精品系列免费在线观看| 另类小说综合欧美亚洲| 精品一区二区三区视频在线观看| 日韩福利电影在线| 久久精品国产99| 久久精品国产一区二区| 精一区二区三区| 色综合亚洲欧洲| 99精品视频在线观看免费| 粉嫩av一区二区三区在线播放 | 日韩高清电影一区| 免费视频最近日韩| 久久99深爱久久99精品| 国产麻豆精品久久一二三| 国产成都精品91一区二区三| 国产suv精品一区二区883| 成人h动漫精品一区二| 色婷婷亚洲一区二区三区| 欧美日韩免费不卡视频一区二区三区| 欧美中文字幕一区| 日韩精品专区在线影院重磅| 精品国产成人系列| 国产精品每日更新在线播放网址| 亚洲三级在线免费| 视频一区视频二区中文字幕| 久久精品久久精品| www.欧美日韩国产在线| 欧美日韩免费一区二区三区 | 欧美精品1区2区3区| 日韩免费视频一区| 国产精品久久久久久久久图文区| 亚洲日本va在线观看| 婷婷久久综合九色综合绿巨人| 精品中文字幕一区二区| www.亚洲精品| 欧美一区二区美女| 欧美激情在线一区二区三区| 亚洲小说春色综合另类电影| 久久福利视频一区二区| 色综合天天视频在线观看| 欧美成人在线直播| ㊣最新国产の精品bt伙计久久| 亚洲成av人**亚洲成av**| 国产精品亚洲第一| 欧美特级限制片免费在线观看| 欧美电影免费观看高清完整版在线观看 | 亚洲妇熟xx妇色黄| 国产精品乡下勾搭老头1| 欧美在线一区二区三区| 精品国产麻豆免费人成网站| 综合欧美一区二区三区| 蜜臀av亚洲一区中文字幕| 99这里都是精品| 精品成人在线观看| 亚洲bdsm女犯bdsm网站| 国产风韵犹存在线视精品| 欧美肥妇bbw| 亚洲激情综合网| 粉嫩13p一区二区三区| 91精品国产色综合久久不卡电影| 国产精品久久三区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美性生活大片视频| 久久综合av免费| 秋霞成人午夜伦在线观看| 91免费在线播放| 久久久午夜电影| 麻豆精品视频在线| 欧美日韩小视频| 亚洲精品成人在线| 成人国产一区二区三区精品| 2020日本不卡一区二区视频| 日韩不卡手机在线v区| 欧美三级三级三级| 亚洲一区二区三区视频在线| gogo大胆日本视频一区| 久久综合久久综合亚洲| 美女视频一区在线观看| 欧美唯美清纯偷拍| 亚洲激情网站免费观看| 国产乱人伦偷精品视频免下载| 欧美一区二区三区视频| 午夜欧美一区二区三区在线播放| 97久久超碰国产精品| 中文字幕一区二区三区蜜月| 国产**成人网毛片九色| 日本一区二区三区高清不卡 | **欧美大码日韩| 懂色av一区二区三区免费观看| 欧美一区二区三区视频免费播放| 性做久久久久久免费观看 | 久久www免费人成看片高清| 9191久久久久久久久久久| 亚洲福中文字幕伊人影院| 精品视频123区在线观看| 亚洲第一久久影院| 欧美日韩1区2区| 日韩va亚洲va欧美va久久| 日韩午夜精品视频| 麻豆久久久久久| 国产亚洲欧美日韩俺去了| 成人丝袜18视频在线观看| 亚洲丝袜美腿综合| 91蝌蚪porny| 亚洲第一在线综合网站| 欧美久久一二三四区| 毛片基地黄久久久久久天堂| 精品久久国产字幕高潮| 国产麻豆欧美日韩一区| 亚洲国产精品成人综合色在线婷婷| 成人黄色在线看| 亚洲综合色成人| 欧美一区二区精品久久911| 国产综合一区二区| 中文字幕亚洲区| 欧美三级日韩三级| 极品少妇xxxx精品少妇| 国产精品美女久久福利网站 | 成人国产精品免费观看动漫 | 国产精品区一区二区三区| 91在线视频免费观看| 亚洲va韩国va欧美va| 久久亚洲精品小早川怜子| 成人免费的视频| 五月天中文字幕一区二区| 国产亚洲自拍一区| 欧美三级中文字幕在线观看| 国产剧情一区二区三区| 亚洲一区在线视频| 久久久午夜精品理论片中文字幕| 色久综合一二码|