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

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

?? asm.c

?? 一份加密算法的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*****************************************************************
*
* Reversed By yykingking (yykingking@126.com)
* 僅供學習交流使用
*****************************************************************/


#include "header.h"

extern BOOL g_IsMulProcesser;
extern DWORD g_KBIntEntry,g_KBIntEntry1,g_KBIntEntry2;//雙核CPU鍵盤中斷入口處...保存用來恢復..
extern PSTRUCT_17H g_Buffer17H;
extern PSTRUCT_12H g_Buffer12H;
extern DWORD g_DUnKnown1;
extern DWORD g_IntVector;
extern KIRQL g_Kirql;
extern bool g_IsNT4;
extern KDPC g_Kdpc; 
bool g_bAsm1,g_bAsm2,g_bAsm3,g_bAsm4;
BYTE g_r60LastRead,g_r60Last2Read,g_byteAsm3;
DWORD g_DR7;
DWORD g_DAsm1;



//  ****  Copy From SoBeIt ****//
// 	在HAL里雖然HalBeginSystemInterrupt仍然是IRQL機制的發動引擎,但是因為有APIC的支持,
// 	它和其它共同實現IRQL的函數要比PIC HAL里對應的函數功能簡單得多。
// 	HalBeginSystemInterrupt通過用IRQL做索引在HalpIRQLtoTPR數組中獲取該IRQL對應
// 	的任務優先級,用該優先級設置任務優先級寄存器TPR,并把TPR中原先的任務優先級/16做
// 	為索引在HalpVectorToIRQL數組中獲取對應的原先的IRQL然后返回。
// 	若IRQL是從低于DISPATCH_LEVEL提升到高于DISPATCH_LEVEL,
// 	還需要設置KPCR+0x95(0xffdff095)為DISPATCH_LEVEL(0x2),
// 	表示是從DISPATCH_LEVEL以下的級別提升IRQL。
// 	HalEndSystemInterrupt向本地APIC的EOI寄存發送0,表示中斷結束,
// 	可以接收新中斷。并還要判斷要降到的IRQL是否小于DISPATCH_LEVEL,
// 	若小于則進一步判斷KPCR+0x96(0xffdff096)是否置位,若置位則表示
// 	有DPC中斷在等待(在IRQL高于DISPATCH_LEVEL被引發,然后等待直到IRQL降到
// 	低于DISPATCH_LEVEL),則將KPCR+0x95和KPCR+0x96清0后調用KiDispatchInterrupt響
// 	應DPC軟中斷。否則做的工作就是和HalBeginSystemInterrupt一樣的過程:把要降到
// 	的IRQL轉換成任務優先級設置TRP,并把久的任務優先級轉成IRQL返回。
// 	KfRaiseIrql、KfLowerIrql之類的函數也是這么一回事,把當前IRQL轉成任務優先
// 	級修改TPR,并把原先TPR的值轉成原先的IRQL并返回。而現在軟中斷的產生也有
// 	了APIC支持,APIC通過產生一個發向自己的處理器間中斷,就可以產生一個軟中斷,
// 	因為可以指定該中斷的向量,所以軟中斷就可以區分優先級別,如APC_LEVEL、
// 	DISPATCH_LEVEL。產生軟中斷的函數一樣還是HalRequestSoftwareInterrupt,
// 	該函數會先判斷KPCR+0x95是否和要產生的軟中斷IRQL一樣,若是的話則
// 	置位KPCR+0x96并返回,表示現在IRQL大于DISPATCH_LEVEL所以不處理DPC中斷。
// 	否則以要產生的軟中斷的IRQL為索引從HalpIRQLtoTPRHAL取出對應任務優先級,
// 	并或上0x4000,表示是發向自身的固定處理間中斷,并用該值設置中斷命令
// 	寄存器ICW的低32位,然后讀取中斷命令寄存器ICW的低32位是否為0x1000,確定
// 	中斷消息已經發送后就返回,這時候軟中斷已經產生。值得注意的是APIC HAL里
// 	沒有HalEndSoftwareInterrupt這個函數。
__declspec(dllimport) HalBeginSystemInterrupt( DWORD, KIRQL, PKIRQL);
__declspec(dllimport) HalEndSystemInterrupt( KIRQL, DWORD);

#define RET_BEGIN_END_INT if ( g_IntVector != 0x31) \
{	HalBeginSystemInterrupt( 9, g_Kirql, &NewIrql); \
	HalEndSystemInterrupt( NewIrql, 0); \
	return 0; \
} 

__declspec (naked) Write64Port( BYTE code)
{
	__asm
	{
		mov al,code
		out 0x64,al
		retn
	}
}

__declspec (naked) Write60Port( BYTE code)
{
	__asm
	{
		mov al,code
		out 0x60,al
		retn
	}
}

BYTE Read64Port()
{
	BYTE code;
	__asm
	{
		in al,0x64
		mov code,al
	}
	return code;
}

BYTE Read60Port()
{
	BYTE code;
	__asm
	{
		in al,0x60
		mov code,al
	}
	return code;
}

void TestKBCIdl()  //測試KBC輸入寄存器已空,無限延時.如果不空就循環等待..
{
	int i=0;

	__asm
	{
LoopIfBusy:		
		xor     al, al
		in      al, 0x64        
		add     i, 1
		and     al, 2
		jnz     LoopIfBusy		
	}
}

void TestKBCOut() //測試KBC輸出寄存器非空
{
	BYTE result; 
	int delay1=0x2710;
	int delay2=0;
	__asm
	{
LoopNotNuLL:	
		xor     al, al
		in      al, 0x64        //; AT Keyboard controller 8042.
		add     delay2, 1
		sub     delay1, 1
		cmp     delay1, 0
		jz      Over		
		test    al, 1
		loope   LoopNotNuLL 
Over:
		mov     result, al
	}	
}

void TestKBCIdlWithNumber()  ////測試KBC輸入寄存器已空,在一定次數內測試...如果空就退出..
{
	BYTE result; 
	int delay1=0xea60;
	int delay2=0;
	__asm
	{
LoopIfBusy:
		xor     al, al
		in      al, 0x64			//; AT Keyboard controller 8042.
		add     delay2, 1
		sub     delay1, 1
		cmp     delay1, 0
		jz      Over
		test    al, 2
		loopne  LoopIfBusy
Over:
		mov     result, al
	}
}

__declspec (naked) SaveDR7()
{
	_asm
	{
		mov eax,dr7
		mov g_DR7,eax
		retn
	}
}
__declspec (naked) WriteDR7_400H()
{
	_asm
	{
		mov     eax, 400h
		mov     dr7, eax
		retn
	}
}

__declspec (naked) ReLoadDR7()
{
	_asm
	{
		mov     eax, g_DR7
		mov     dr7, eax
		retn
	}
}

typedef struct _CODE_STRUCT_
{
	char Ascii;			//0x0
	char r60;			//0x1
	char Reserved1;		//0x2
	char Reserved2;		//0x3	
}STRUCTCODE,*PSTRUCTCODE;

DWORD DispatchNewInt( DWORD param)
{
	KIRQL NewIrql;
	DWORD Number1,Number2,Number3,Number4,Number5,Number6,Number7,Number8,Number9,Number10;
	DWORD Number11,Number12,Number13,Number14,Number15,Number16,Number17,Number18,Number19;
	DWORD Dr7Tmp;
	DWORD Var_2C,Var_34,Var_24;
	STRUCTCODE Var_Code;
	bool NotDr7_400H=false;
	bool Input;
	BYTE r64Port,r60Port;
	
	if( g_IsMulProcesser)
	{
		// fs偏移51H處為當前運行的CPU??
		__asm	movzx   eax, byte ptr fs:0x51;
		__asm	mov     Number1, eax;
		if ( Number1 == 0)
		{
			g_bAsm1 = true;	
			if ( g_bAsm2)
				return g_KBIntEntry1;
		}
		else
		{
			__asm	movzx   eax, byte ptr fs:0x51;
			__asm	mov     Number2, eax;	
			if ( Number2 == 1)
				if( g_bAsm3)
					return g_KBIntEntry2;
		}
	}
	NewIrql = KfRaiseIrql( HIGH_LEVEL);
	__asm  mov  eax, dr7;	
	__asm  mov  Dr7Tmp, eax;
	if ( Dr7Tmp != 0x400)
		NotDr7_400H = true;
	if ( g_Buffer17H->Reserved3 == false)
		g_Buffer17H->Reserved3 = NotDr7_400H;
	if ( g_IsMulProcesser)
	{
		__asm	movzx   eax, byte ptr fs:0x51;
		__asm	mov     Number3, eax;	
		if ( Number2 != 0)	
			if ( g_bAsm1)
			{
				KfLowerIrql( NewIrql);
				return g_KBIntEntry2;
			}
	}
	if ( g_bAsm1)
		g_bAsm1 = false;
	SaveDR7();
	// 清除調試標記,清除全局斷點
	WriteDR7_400H();
	if ( !g_Buffer17H->Reserved6 && ! g_Buffer17H->Reserved11)
	{
		if ( g_Buffer17H->Reserved11)
		{
			TestKBCIdlWithNumber();
			r64Port = Read64Port();
			//最后一位為1表示輸出寄存器非空,?第5位為0表示數據源為鍵盤?
			if ( ( r64Port&1 ) != 1 || ( r64Port&0x20 ) == 0x20)
			{
				// 輸出寄存器空 或者 數據源不為鍵盤
				Var_2C = 0;
				r60Port = Read60Port();
				r64Port = Read64Port();
				ReLoadDR7();
				KfLowerIrql( NewIrql);
				if( g_IsMulProcesser)
				{
					__asm	movzx   eax, byte ptr fs:0x51;
					__asm	mov     Number4, eax;	
					if( Number4 == 0)
						return g_KBIntEntry1;
					else
						return g_KBIntEntry2;
				}
				else
					return g_KBIntEntry;
			}
// 			else if( ( r64Port&1 ) == 1 && ( r64Port&0x20 ) == 0x20)
// 			{
// 				Var_34 = 0;
// 				r60Port = Read60Port();
// 				r64Port = Read64Port();
// 				ReLoadDR7();
// 				if( g_IsMulProcesser)
// 				{
// 					__asm	movzx   eax, byte ptr fs:0x51;
// 					__asm	mov     Number10, eax;
// 				}	
// 				RET_BEGIN_END_INT;				
// 			}
			// 輸出寄存器非空 并且 數據源為鍵盤
			r60Port = Read60Port();
			if ( ( r60Port==0 ) || ( r60Port==0xfe ) )
			{
				// 為不處理的數據
				ReLoadDR7();
				KfLowerIrql( NewIrql);
				if( g_IsMulProcesser)
				{
					__asm	movzx   eax, byte ptr fs:0x51;
					__asm	mov     Number5, eax;	
					if( Number5 == 0)
						return g_KBIntEntry1;
					else
						return g_KBIntEntry2;
				}
				else
					return g_KBIntEntry;				
			}
			// 到了這里直接跳出整個if語句,到達 g_IsNt4的比較
		}
		else
		{
			if ( g_DUnKnown1 == 0)
			{
				ReLoadDR7();
				KfLowerIrql( NewIrql);
				if( g_IsMulProcesser)
				{
					__asm	movzx   eax, byte ptr fs:0x51;
					__asm	mov     Number6, eax;	
					if( Number6 == 0)
						return g_KBIntEntry1;
					else
						return g_KBIntEntry2;
				}
				else
					return g_KBIntEntry;				
			}
			if ( g_Buffer12H->Reserved6 || g_Buffer12H->Reserved7)
			{
				ReLoadDR7();
				KfLowerIrql( NewIrql);
				if( g_IsMulProcesser)
				{
					__asm	movzx   eax, byte ptr fs:0x51;
					__asm	mov     Number7, eax;	
					if( Number7 == 0)
						return g_KBIntEntry1;
					else
						return g_KBIntEntry2;
				}
				else
					return g_KBIntEntry;				
			}
			if ( g_Buffer12H->bDoletter && g_Buffer12H->Reserved10 )
			{
				ReLoadDR7();
				KfLowerIrql( NewIrql);
				if( g_IsMulProcesser)
				{
					__asm	movzx   eax, byte ptr fs:0x51;
					__asm	mov     Number8, eax;	
					if( Number8 == 0)
						return g_KBIntEntry1;
					else
						return g_KBIntEntry2;
				}
				else
					return g_KBIntEntry;					
			}
			if ( g_Buffer12H->Reserved11)
			{
				ReLoadDR7();
				KfLowerIrql( NewIrql);
				if( g_IsMulProcesser)
				{
					__asm	movzx   eax, byte ptr fs:0x51;
					__asm	mov     Number9, eax;	
					if( Number9 == 0)
						return g_KBIntEntry1;
					else
						return g_KBIntEntry2;
				}
				else
					return g_KBIntEntry;	
			}
			TestKBCIdlWithNumber();
			r64Port = Read64Port();
			//最后一位為1表示輸出寄存器非空,?第5位為0表示數據源為鍵盤?
			if ( ( r64Port&1 ) != 1 || ( r64Port&0x20 ) == 0x20 )
			{
				// 不空或者不是鍵盤
				Var_34 = 0;
				r60Port = Read60Port();
				r64Port = Read64Port();
				ReLoadDR7();
				if( g_IsMulProcesser)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人自拍在线| 欧美色手机在线观看| 色综合久久精品| 91精品国产黑色紧身裤美女| 国产精品欧美久久久久一区二区| 一区二区久久久久久| 国产乱人伦偷精品视频免下载| 在线这里只有精品| 中文文精品字幕一区二区| 日韩av电影天堂| 97久久精品人人做人人爽50路| 欧美一区二区黄色| 又紧又大又爽精品一区二区| 国产91丝袜在线18| 日韩精品一区在线| 性欧美疯狂xxxxbbbb| av电影天堂一区二区在线观看| 久久一区二区视频| 日韩国产成人精品| 欧美另类videos死尸| 一区二区三区丝袜| 91视频一区二区| 中文字幕久久午夜不卡| 国产精品综合二区| 精品成人在线观看| 久久精品99国产精品| 欧美精品vⅰdeose4hd| 一区二区三区美女| 色婷婷av一区| 亚洲午夜久久久久久久久电影院| 97久久人人超碰| 一区二区三区在线视频免费| 92精品国产成人观看免费| 国产精品免费免费| 99精品视频在线观看免费| 国产精品久久久久久久蜜臀 | 欧美一级精品在线| 爽爽淫人综合网网站| 欧美老肥妇做.爰bbww| 午夜激情综合网| 91精品综合久久久久久| 日韩成人dvd| 亚洲精品一区二区三区影院 | 午夜av区久久| 制服视频三区第一页精品| 日韩av不卡在线观看| 欧美成人a∨高清免费观看| 激情小说亚洲一区| 国产欧美日韩视频一区二区| 成人性生交大片免费 | 久久女同精品一区二区| 国产精品一区二区久久不卡| 国产日韩v精品一区二区| 成人毛片视频在线观看| 一区二区三区国产豹纹内裤在线| 欧美视频完全免费看| 国产一区二区0| 久久久精品中文字幕麻豆发布| 成人免费电影视频| 丝袜亚洲另类欧美| 国产视频911| 91麻豆高清视频| 日本视频在线一区| 国产亚洲一区二区在线观看| 一本久道中文字幕精品亚洲嫩| 五月婷婷综合激情| 国产欧美一区二区三区网站| 在线亚洲高清视频| 韩国毛片一区二区三区| 中文字幕色av一区二区三区| 欧美日韩国产首页| 国产白丝精品91爽爽久久| 亚洲午夜精品一区二区三区他趣| 精品久久久网站| 色综合天天性综合| 国产真实乱子伦精品视频| 自拍偷拍国产亚洲| 日韩欧美国产综合在线一区二区三区| 国产成人综合精品三级| 婷婷综合久久一区二区三区| 国产精品全国免费观看高清 | 日韩视频一区在线观看| voyeur盗摄精品| 天涯成人国产亚洲精品一区av| 国产丝袜美腿一区二区三区| 欧美三级中文字幕在线观看| 国产电影一区二区三区| 日韩福利电影在线观看| 亚洲欧洲日韩av| 精品久久国产字幕高潮| 欧美亚洲丝袜传媒另类| 成人a免费在线看| 久久国产福利国产秒拍| 亚洲成人精品影院| 日韩理论片在线| 国产午夜精品美女毛片视频| 日韩视频永久免费| 欧美日韩电影在线| 日本精品一级二级| 成人av网站免费| 国产成人在线视频免费播放| 美女在线一区二区| 日韩精品乱码av一区二区| 亚洲一区二区视频| 亚洲美女少妇撒尿| 国产精品久久毛片av大全日韩| 2023国产一二三区日本精品2022| 欧美日韩一区二区三区不卡| 91国产成人在线| 色视频一区二区| 日本乱人伦aⅴ精品| 一本一道久久a久久精品综合蜜臀| 国产91对白在线观看九色| 韩国精品主播一区二区在线观看 | 精品少妇一区二区三区视频免付费| 欧美性视频一区二区三区| 在线亚洲人成电影网站色www| 91麻豆精品秘密| 91麻豆成人久久精品二区三区| 99视频精品免费视频| av在线不卡免费看| 99久久伊人久久99| 一本大道久久a久久精品综合| 91丨九色丨蝌蚪富婆spa| 97久久超碰国产精品电影| 色综合视频在线观看| 一本大道久久精品懂色aⅴ| 一本到不卡免费一区二区| 色婷婷一区二区| 欧美日高清视频| 欧美videossexotv100| 国产三级一区二区| 中文字幕日韩一区| 亚洲bt欧美bt精品777| 久久精品噜噜噜成人av农村| 国产精品中文字幕欧美| av动漫一区二区| 欧美视频日韩视频| 亚洲精品在线观| 亚洲精品免费在线观看| 日本中文字幕一区二区视频 | 99久久精品免费看| 欧美亚洲动漫制服丝袜| 日韩午夜精品电影| 国产精品伦一区| 亚洲电影一区二区| 九九九精品视频| 99精品视频一区二区| 欧美麻豆精品久久久久久| 久久综合色婷婷| 自拍偷拍亚洲欧美日韩| 日本亚洲天堂网| 粉嫩av一区二区三区在线播放| 色94色欧美sute亚洲线路一久 | 欧美日韩在线三区| 精品国产电影一区二区| 中文字幕一区二区三区不卡在线 | 欧美一区二区免费观在线| 国产清纯美女被跳蛋高潮一区二区久久w| 综合激情网...| 狠狠色狠狠色合久久伊人| 色综合久久六月婷婷中文字幕| 日韩精品专区在线影院观看| 亚洲三级在线免费观看| 美腿丝袜亚洲综合| 欧美午夜电影在线播放| 欧美国产欧美综合| 日韩精品电影在线| 一本在线高清不卡dvd| 精品电影一区二区| 秋霞国产午夜精品免费视频| 在线一区二区三区四区五区| 国产日韩一级二级三级| 日本成人在线视频网站| 99精品国产91久久久久久| 精品国产一区二区三区忘忧草 | 激情五月激情综合网| 欧美日韩精品一区二区三区四区| 中文字幕乱码一区二区免费| 久久99国产精品免费网站| 欧美三级乱人伦电影| 日韩一区在线免费观看| 国产精品羞羞答答xxdd| 91麻豆精品国产91久久久久久| 夜夜爽夜夜爽精品视频| 99久久综合狠狠综合久久| 欧美国产日本视频| 丰满少妇在线播放bd日韩电影| 欧美电视剧在线看免费| 日韩二区在线观看| 欧美日韩国产小视频在线观看| 亚洲免费成人av| 一本大道久久a久久综合婷婷| 欧美极品aⅴ影院| 国产精品1区二区.| 久久婷婷国产综合精品青草| 看片的网站亚洲| 日韩欧美国产一二三区| 久久国内精品视频| 日韩精品中文字幕一区二区三区|