⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm.c

📁 一份加密算法的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
				{
					__asm	movzx   eax, byte ptr fs:0x51;
					__asm	mov     Number10, eax;
				}	
				RET_BEGIN_END_INT;
			}			
			r60Port = Read60Port();
			if ( r60Port == 0 || r60Port == 0xfe)
			{
				ReLoadDR7();
				if( g_IsMulProcesser)
				{
					__asm	movzx   eax, byte ptr fs:0x51;
					__asm	mov     Number11, eax;
				}
				RET_BEGIN_END_INT;
			}
			// 开始判断处理击键信息
			if ( IsLetterCode( r60Port) && g_Buffer12H->bDoletter)
				;
			// 右下方的数字键按下shift时为编辑键
			else if ( g_Buffer12H->ShiftDown && IsEditCtrlKey( r60Port))
				;
			// 以上直接跳出所有 if ,到主程序.
			else 
			{
				do
				{
					if ( g_IsNT4)
					{
						if ( IsEditCtrlKey( r60Port))
						{
							if ( g_r60LastRead != 0xe0 && g_r60Last2Read != 0xe0)
							{
								if ( g_Buffer12H->ConvertEditCtrl)
								{
									if ( g_r60LastRead != r60Port)
									{
										g_r60LastRead = r60Port;
										r60Port = ConvertLetter( r60Port);
									}
									else if ( g_byteAsm3 != 0xe0 )
									{
										g_r60LastRead = r60Port;
										r60Port = ConvertLetter( r60Port);
									}
									else 
										g_r60LastRead = r60Port;
									g_byteAsm3 = 0;
								}
								else ;
								// 跳出 while(FALSE)循环
							}
							else if ( r60Port == 0xe0)
							{
								g_r60Last2Read = 0xe0;
								g_r60LastRead = r60Port;
							}
							else if ( g_r60LastRead == g_r60Last2Read)
							{
								g_r60Last2Read = 0xe0;
								g_r60LastRead = r60Port;							
							}
							else if ( g_r60LastRead == 0xe0 && r60Port == 0x37 || r60Port == 0xb7)
							{
								// 读到的是 print screen
								g_r60LastRead = r60Port;
								g_r60Last2Read = 0;
								break;
								// 跳出整个if
							}
							else 
							{
								g_r60LastRead = r60Port;
								g_r60Last2Read = 0;					
							}
						}
						else
							g_r60LastRead = r60Port;
					}
					else
						// xp 2k 2k3
					{
						if ( g_r60LastRead != 0xe0 && g_r60Last2Read != 0xe0)
						{
							if ( g_Buffer12H->ConvertEditCtrl)
							{
								g_r60LastRead = r60Port;
								r60Port = ConvertLetter( r60Port);
							}
							else if( r60Port == 0xe0)
								g_r60LastRead = 0xe0;
							else ;
						}
						else if ( r60Port == 0xe0)
						{
							g_r60Last2Read = 0xe0;
							g_r60LastRead = r60Port;
						}
						else if ( g_r60LastRead == g_r60Last2Read)
						{
							g_r60Last2Read = 0xe0;
							g_r60LastRead = r60Port;						
						}
						else if ( g_r60LastRead == 0xe0 || (r60Port != 0x37 && r60Port != 0xb7))
						{
							g_r60LastRead = r60Port;
							g_r60Last2Read = 0;
						}
						else
						{
							g_r60LastRead = r60Port;
							g_r60Last2Read = 0;
							break;
						}
					}
					if ( g_Buffer17H->Reserved7 == false)
					{
						if ( !IsInputCode( r60Port))
							Input = true;	
						else
							Input = false;
					}
					else if ( g_Buffer17H->Reserved7 == true)
					{
						if ( !IsInputPlusCode( r60Port))
							Input = true;	
						else
							Input = false;				
					}
					if ( Input == true)
					{
						Var_Code.Ascii = 0;
						if ( g_Buffer17H->Reserved7 == false)
						{
							Var_Code.Ascii = (char)LookUpAsciiByIndex2( (int)r60Port);
							Var_Code.r60 = r60Port;
						}
						else if( g_Buffer17H->Reserved7 == true)
						{
							Var_Code.Ascii = (char)LookUpAsciiByIndex( (int)r60Port);
							Var_Code.r60 = r60Port;
						}
						Var_Code.Reserved1 = NotAndSHR7( r60Port);
						if ( Var_Code.Reserved1 != 0)
						{
							DoHash( (int*)&Var_Code);
							KeInsertQueueDpc( &g_Kdpc, 0, 0);
						}
						if ( g_IsNT4 != 0)
						{
							TestKBCIdl();
							Write60Port( 0);
							TestKBCIdlWithNumber();
							r60Port = Read60Port();
							KfLowerIrql( NewIrql);
							if ( g_IsMulProcesser)
							{
								__asm	movzx   eax, byte ptr fs:0x51;
								__asm	mov     Number12, eax;
								if ( Number12 == 0)
								{
									RET_BEGIN_END_INT;
								}
								else
									return g_KBIntEntry2;
							}
							else
								return g_KBIntEntry1;
						}
						TestKBCIdlWithNumber();
						// 模拟键盘,写输入寄存器将被送到输出寄存器....??
						Write64Port( 0xd2);
						TestKBCIdl();
						Write60Port(0);
						TestKBCOut();
						ReLoadDR7();
						KfLowerIrql( NewIrql);
						if ( g_IsMulProcesser)
						{
							if ( g_DAsm1)
							{
								__asm	movzx   eax, byte ptr fs:0x51;
								__asm	mov     Number13, eax;
								if ( Number13 == 0)
									g_bAsm3 = true;
								else
									g_bAsm2 = true;
							}
							g_DAsm1++;
							__asm	movzx   eax, byte ptr fs:0x51;
							__asm	mov     Number14, eax;	
							if ( Number14 == 0)
								g_bAsm3 = false;
							else
								g_bAsm2 = false;							
						}
						RET_BEGIN_END_INT;
					}
				}while(FALSE);	
			}
		}
	}
	else
	{
		TestKBCIdlWithNumber();
		r64Port = Read64Port();
		if ( (r64Port&1) != 1  || (r64Port&0x20) == 0x20  )
		{
			Var_24 = 0;
			r60Port = Read60Port();
			r64Port = Read64Port();
			ReLoadDR7();
			KfLowerIrql( NewIrql);
			if ( g_IsMulProcesser)
			{
				__asm	movzx   eax, byte ptr fs:0x51;
				__asm	mov     Number15, eax;	
				if ( Number15 == 0)	
					return g_KBIntEntry1;
				else
					return g_KBIntEntry2;
			}
			else 
				return g_KBIntEntry1;
		}
		r60Port = Read60Port(); 
		if ( r60Port == 0 || r60Port == 0xfe)
		{
			ReLoadDR7();
			KfLowerIrql( NewIrql);
			if ( g_IsMulProcesser)
			{
				__asm	movzx   eax, byte ptr fs:0x51;
				__asm	mov     Number16, eax;	
				if ( Number16 == 0)	
					return g_KBIntEntry1;
				else
					return g_KBIntEntry2;
			}
			else 
				return g_KBIntEntry1;		
		}
	}
	if ( g_IsNT4 != false)
	{
		if ( g_Buffer17H->Reserved6)
		{
			TestKBCIdl();
			Write64Port(0xd2);
			TestKBCIdl();
			Write60Port(0);
			TestKBCOut();
			TestKBCOut();
			if ( r60Port == 0xe0)
				g_bAsm3 = 0xe0;
			ReLoadDR7();
			KfLowerIrql( NewIrql);
			if ( g_IsMulProcesser)
			{
				__asm	movzx   eax, byte ptr fs:0x51;
				__asm	mov     Number16, eax;	
				if ( Number16 == 0)	
					return g_KBIntEntry1;
				else
					return g_KBIntEntry2;
			}
			else 
				return g_KBIntEntry1;			

		}
		TestKBCIdl();
		Write64Port(0xd2);
		TestKBCIdl();	
		Write60Port( r60Port);
		TestKBCOut();
		TestKBCOut();	
		if ( r60Port == 0xe0)
			g_bAsm3 = 0xe0;
		ReLoadDR7();
		KfLowerIrql( NewIrql);
		if ( g_IsMulProcesser)
		{
			__asm	movzx   eax, byte ptr fs:0x51;
			__asm	mov     Number16, eax;	
			if ( Number16 == 0)	
				return g_KBIntEntry1;
			else
				return g_KBIntEntry2;
		}
		else 
			return g_KBIntEntry1;	
	}
	if ( g_Buffer17H->Reserved6)
	{
		TestKBCIdl();
		Write64Port(0xd2);
		TestKBCIdl();
		Write60Port(0);
		TestKBCOut();
		ReLoadDR7();
		KfLowerIrql( NewIrql);
		if ( g_IsMulProcesser)
		{
			__asm	movzx   eax, byte ptr fs:0x51;
			__asm	mov     Number16, eax;	
			if ( Number16 == 0)	
				return g_KBIntEntry1;
			else
				return g_KBIntEntry2;
		}
		else 
			return g_KBIntEntry1;		
	}
	if ( g_Buffer17H->Reserved11 == true)
	{
		//  依次是: TAB /(???) DEL ALT CTRL ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 (F11 F12)??
		//  的扫描码
		if ( r60Port == 0xf || r60Port == 0x8f || r60Port == 0x35 || r60Port == 0xb5 ||
			r60Port == 0x53 || r60Port == 0xd3 || r60Port == 0x38 || r60Port == 0xb8 ||
			r60Port == 0x1d || r60Port == 0x9d || r60Port == 0x01 || r60Port == 0x81 ||
			r60Port == 0x3b || r60Port == 0xbb || r60Port == 0x3c || r60Port == 0xbc ||
			r60Port == 0x3d || r60Port == 0xbd || r60Port == 0x3e || r60Port == 0xbe ||
			r60Port == 0x3f || r60Port == 0xbf || r60Port == 0x40 || r60Port == 0xc0 ||
			r60Port == 0x41 || r60Port == 0xc1 || r60Port == 0x42 || r60Port == 0xc2 ||
			r60Port == 0x43 || r60Port == 0xc3 || r60Port == 0x44 || r60Port == 0xc4 ||
			r60Port == 0x5b || r60Port == 0x5c 
			)
		{
			TestKBCIdl();
			Write64Port(0xd2);
			TestKBCIdl();
			Write60Port(0);
			TestKBCOut();
			ReLoadDR7();
			KfLowerIrql( NewIrql);
			if ( g_IsMulProcesser)
			{
				__asm	movzx   eax, byte ptr fs:0x51;
				__asm	mov     Number16, eax;	
				if ( Number16 == 0)	
					return g_KBIntEntry1;
				else
					return g_KBIntEntry2;
			}
			else 
			return g_KBIntEntry1;			
		}	
	}
	g_bAsm4 = r60Port;
	TestKBCIdl();
	Write64Port(0xd2);
	TestKBCIdl();
	Write60Port( r60Port);
	TestKBCOut();
	if ( g_IsMulProcesser)
	{
		__asm	movzx   eax, byte ptr fs:0x51;
		__asm	mov     Number17, eax;	
		if ( Number17 == 0)	
			g_bAsm3 = true;
		else
		{
			__asm	movzx   eax, byte ptr fs:0x51;
			__asm	mov     Number18, eax;	
			if ( Number17 == 1)	
				g_bAsm2 = true;		
		}		
	}
	ReLoadDR7();
	KfLowerIrql( NewIrql);
	if ( g_IsMulProcesser)
	{
		__asm	movzx   eax, byte ptr fs:0x51;
		__asm	mov     Number19, eax;	
		if ( Number19 == 0)	
		{
			g_bAsm3 = false;
			return g_KBIntEntry1;
		}
		else
		{
			g_bAsm2 = false;
			return g_KBIntEntry2;
		}
	}
	else 
		return g_KBIntEntry1;		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -