久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何在Windows2000中動(dòng)態(tài)禁用/啟用Ctrl-Alt-Delete

瀏覽:136日期:2023-08-27 18:27:41

在Windows2000中Ctrl-Alt-Delete組合鍵的處理如下:

Winlogon初始化的時(shí)候,在系統(tǒng)中注冊(cè)了CTRL+ALT+DEL Secure Attention Sequence(SAS)熱鍵,并且在WinSta0 Windows 系統(tǒng)中創(chuàng)建三個(gè)桌面。

SAS熱鍵的注冊(cè)使得Winlogon成為第一個(gè)處理CTRL+ALT+DEL的進(jìn)程,所以保證了沒(méi)有其他應(yīng)用程序能夠處理這個(gè)熱鍵。

在 Windows;NT/Windows;2000/Windows;XP中, WinSta0 是表示物理屏幕、鼠標(biāo)和鍵盤的Windows系統(tǒng)對(duì)象的名字。Winlogon在WinSta0 Windows系統(tǒng)中創(chuàng)建了SAS窗口(窗口標(biāo)題是'SAS Window')和如下三個(gè)桌面。 Winlogon 桌面 應(yīng)用程序 桌面 屏幕保護(hù) 桌面當(dāng)用戶按下Ctrl-Alt-Delete組合鍵時(shí),Winlogon桌面上的SAS窗口收到它注冊(cè)的系統(tǒng)熱鍵消息(WM_HOTKEY) SAS Window窗口處理這個(gè)消息調(diào)用Graphical Identification and Authentication(GINA)動(dòng)態(tài)連接庫(kù)中的相關(guān)函數(shù)

要中斷Ctrl-Alt-Delete組合鍵的處理,可以有以下方式

從鍵盤驅(qū)動(dòng)層捕獲Ctrl-Alt-Delete 替換Winlogon 替換GINA Hook Winlogon 上SAS窗口的窗口過(guò)程(需要當(dāng)前登錄用戶有調(diào)試權(quán)限) Hook; GINA里邊的函數(shù)WlxLoggedOnSAS,然后返回WLX_SAS_ACTION_NONE(未研究)更多信息

鑒于系統(tǒng)的更新可能造成我們替換的系統(tǒng)文件和其他系統(tǒng)文件不兼容(著名的DLL地獄),所以不推薦替換Winlogon.exe和GINA的方法。這里我們討論Hook Winlogon 上的SAS窗口的窗口過(guò)程的方法。

因?yàn)镾AS窗口和我們的程序內(nèi)存地址空間不同,所以要寫一個(gè)動(dòng)態(tài)連接庫(kù),加載到SAS窗口的內(nèi)存空間中。下面是動(dòng)態(tài)連接庫(kù)的源代碼。

//---------------------------------------------------------------------------//作者 :韋覃武//網(wǎng)上呢稱:BCB_FANS(四大名捕之追殺令)(此為CSDN和www.driverdevelop.com之帳號(hào))//E-Mail :slwqw@163.com//日期 :2002-10-20////功能 :在2000下屏蔽Ctrl + Alt + Del組合鍵。(在Windows 2000 Professional SP3// 中文版平臺(tái)下面測(cè)試通過(guò))//原理 :采用遠(yuǎn)程線程注入技術(shù),裝載一個(gè)DLL到Winlogon進(jìn)程,然后截獲SAS窗口的窗// 口過(guò)程,接管WM_HOTKEY消息,以達(dá)到屏蔽Ctrl + Alt + Del之目的。//開發(fā)語(yǔ)言:Borland C++Builder 5.0 Patch2//技術(shù)比較:關(guān)于在2000下面如何屏蔽Ctrl + Alt + Del組合鍵,一種常被提到的解決方法就// 是使用自己寫的GINA去替換MSGINA.DLL,然后在WlxLoggedOnSAS里邊直接返回// WLX_SAS_ACTION_NONE。嘿嘿,說(shuō)到底這并不是真正地屏蔽了這個(gè)組合鍵,只是// 直接返回WLX_SAS_ACTION_NONE時(shí),Winlogon進(jìn)程又自動(dòng)從'Winlogon'桌面切換// 回原來(lái)的'Default'桌面了,而不是顯示安全對(duì)話框,所以看起來(lái)被屏蔽了:),// 使用那種方法明顯地看到桌面在閃爍!但是使用本文的方法時(shí),你不會(huì)看到任// 何閃爍!//鳴謝 :www.driverdevelop.com上的icube和lu0。//版權(quán) :轉(zhuǎn)載請(qǐng)注明原作者:)//---------------------------------------------------------------------------#include 'stdafx.h'#include <string>using namespace std;//---------------------------------------------------------------------------HWND hSASWnd;FARPROC FOldProc;LRESULT CALLBACK SASWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);//---------------------------------------------------------------------------HANDLE hThread = NULL;DWord dwThreadId;DWORD WINAPI ThreadFunc();//---------------------------------------------------------------------------BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){ switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH : hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc,NULL,0,&dwThreadId); break; case DLL_PROCESS_DETACH : if(FOldProc != NULL) { SetWindowLong(hSASWnd,GWL_WNDPROC,long(FOldProc)); } CloseHandle(hThread); break; } return TRUE;}//---------------------------------------------------------------------------DWORD WINAPI ThreadFunc(){ HDESK hDesk; hDesk = OpenDesktop('Winlogon',0,false,MAXIMUM_ALLOWED); FOldProc = NULL; hSASWnd = NULL; EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowsProc,0); if(hSASWnd != NULL) { FOldProc = (FARPROC)SetWindowLong(hSASWnd,GWL_WNDPROC,long(SASWindowProc)); } CloseHandle(hDesk); return 1;}//---------------------------------------------------------------------------//查找'Winlogon'桌面的窗口BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam){ char ClassBuf[128]; GetWindowText(hwnd,ClassBuf,sizeof(ClassBuf)); //我自己寫了一個(gè)系統(tǒng)服務(wù),然后在里邊查詢'Winlogon'桌面上的窗口,發(fā)現(xiàn)桌面上存在 //窗口'SAS window'。 string ClassName(ClassBuf); if(ClassName.find('SAS window') != -1) { hSASWnd = hwnd; return false; } return true;}//---------------------------------------------------------------------------//SAS窗口的窗口過(guò)程LRESULT CALLBACK SASWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){ //屏蔽Ctrl + Alt + Del if(uMsg == WM_HOTKEY) { WORD wKey = HIWORD(lParam); WORD wModifier = LOWORD(lParam); bool IsCtrlDown = ((wModifier & VK_CONTROL) != 0); bool IsAltDown = ((wModifier & VK_MENU) != 0); bool IsShiftDown = ((wModifier & VK_SHIFT) != 0); //按下Ctrl + Alt + Del組合鍵 if(IsCtrlDown && IsAltDown && wKey == VK_DELETE) { return 1; } //按下Ctrl + Shift + Esc組合鍵,這個(gè)組合鍵將顯示任務(wù)管理器,可根據(jù)需要是否屏蔽。 else if(IsCtrlDown && IsShiftDown && wKey == VK_ESCAPE) { // Do nothing } } return CallWindowProc((WNDPROC)FOldProc,hwnd,uMsg,wParam,lParam);}//---------------------------------------------------------------------------這樣,如果Winlogon加載了這個(gè)動(dòng)態(tài)連接庫(kù),那么就替換了SAS窗口的窗口過(guò)程。如果Winlogon卸載了這個(gè)動(dòng)態(tài)連接庫(kù),則恢復(fù)了SAS窗口的窗口過(guò)程。

為了讓W(xué)inlogon加載我們的動(dòng)態(tài)連接庫(kù),首先要找到Winlogon進(jìn)程,然后在進(jìn)程中分配空間存放我們的代碼,再通過(guò)創(chuàng)建遠(yuǎn)程線程賴執(zhí)行我們的代碼。下面是Hook部分的代碼

//---------------------------------------------------------------------------//作者 :韋覃武,jiangsheng//網(wǎng)上呢稱:BCB_FANS(四大名捕之追殺令)(此為CSDN和www.driverdevelop.com之帳號(hào))jiangsheng(此為CSDN帳號(hào))//E-Mail :slwqw@163.com//日期 :2002-10-20//2002-11-5 jingsheng修改//功能 :在2000下屏蔽Ctrl + Alt + Del組合鍵。(在Windows 2000 Professional SP3// 中文版平臺(tái)下面測(cè)試通過(guò))//原理 :采用遠(yuǎn)程線程注入技術(shù),裝載一個(gè)DLL到Winlogon進(jìn)程,然后截獲SAS窗口的窗// 口過(guò)程,接管WM_HOTKEY消息,以達(dá)到屏蔽Ctrl + Alt + Del之目的。//開發(fā)語(yǔ)言:Borland C++Builder 5.0 Patch2,Visual C++ 6.0 SP5//技術(shù)比較:關(guān)于在2000下面如何屏蔽Ctrl + Alt + Del組合鍵,一種常被提到的解決方法就// 是使用自己寫的GINA去替換MSGINA.DLL,然后在WlxLoggedOnSAS里邊直接返回// WLX_SAS_ACTION_NONE。嘿嘿,說(shuō)到底這并不是真正地屏蔽了這個(gè)組合鍵,只是// 直接返回WLX_SAS_ACTION_NONE時(shí),Winlogon進(jìn)程又自動(dòng)從'Winlogon'桌面切換// 回原來(lái)的'Default'桌面了,而不是顯示安全對(duì)話框,所以看起來(lái)被屏蔽了:),// 使用那種方法明顯地看到桌面在閃爍!但是使用本文的方法時(shí),你不會(huì)看到任// 何閃爍!//鳴謝 :www.driverdevelop.com上的icube和lu0。//版權(quán) :轉(zhuǎn)載請(qǐng)注明原作者:)//---------------------------------------------------------------------------#include 'stdafx.h'#include <tlhelp32.h>#include <lmerr.h>#include 'Hook.h'//add by jiangsheng 2002-11-5#include 'TaskKeyMgr.h'#include 'Wrappers.h'//復(fù)制自MSDN雜志W(wǎng)indows XP Escape from DLL Hell with Custom Debugging and Instrumentation Tools and Utilities的代碼extern BOOL Is_Terminal_Services () ;//復(fù)制自Platform SDK文檔: Windows System Information /Verifying the System Version//end add by jiangsheng 2002-11-5//---------------------------------------------------------------------------//錯(cuò)誤代碼格式化函數(shù)//replaced by jiangsheng 2002-11-5 //from Q149409 HOWTO: Get Message Text from Networking Error Codes

CString __fastcall SysErrorMessage(DWORD dwLastError ){ CString strRet(_T('Unknown error')); HMODULE hModule = NULL; // default to system source LPSTR MessageBuffer; DWORD dwBufferLength; DWORD dwFormatFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM ; // // If dwLastError is in the network range, // load the message source. // if(dwLastError >= NERR_BASE && dwLastError <= MAX_NERR) { hModule = LoadLibraryEx(TEXT('netmsg.dll'),NULL,LOAD_LIBRARY_AS_DATAFILE); if(hModule != NULL) dwFormatFlags |= FORMAT_MESSAGE_FROM_HMODULE; } // // Call FormatMessage() to allow for message // text to be acquired from the system // or from the supplied module handle. // if(dwBufferLength = FormatMessageA( dwFormatFlags, hModule, // module to get message from (NULL == system) dwLastError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // default language (LPSTR) &MessageBuffer, 0, NULL )) { // // Output message string on stderr. // strRet=CString(MessageBuffer,dwBufferLength); // // Free the buffer allocated by the system. // LocalFree(MessageBuffer); } // // If we loaded a message source, unload it. // if(hModule != NULL) FreeLibrary(hModule); return strRet;}//end replaced by jiangsheng 2002-11-5 //---------------------------------------------------------------------------#ifdef UNICODELPCSTR LoadLibraryFuncStr = 'LoadLibraryW';LPCSTR GetModuleHandleFuncStr = 'GetModuleHandleW';#elseLPCSTR LoadLibraryFuncStr = 'LoadLibraryA';LPCSTR GetModuleHandleFuncStr = 'GetModuleHandleA';#endifLPCSTR FreeLibraryFuncStr = 'FreeLibrary';LPCSTR GetProCADdressFuncStr = 'GetProcAddress';LPCSTR GetLastErrorFuncStr = 'GetLastError';//---------------------------------------------------------------------------//removed by jiangsheng 2002-11-5//const char* const RemoteDllName = 'RemoteDll.Dll';//end removed by jiangsheng 2002-11-5LPCTSTR szRemoteProcessName = 'Winlogon.exe';typedef HINSTANCE (WINAPI *PLOADLIBRARY)(LPCTSTR );typedef BOOL (WINAPI *PFREELIBRARY)(HINSTANCE);typedef HMODULE (WINAPI* PGETMODULEHANDLE)(LPCTSTR );typedef PVOID (WINAPI* PGETPROCADDRESS)(HINSTANCE,LPCSTR);typedef DWORD (WINAPI* PGETLASTERROR)(VOID);BOOL __fastcall EnablePrivilege(LPCTSTR lpszPrivilegeName,BOOL bEnable);DWORD __fastcall GetPIDFromName(LPCTSTR lpszProcName);//---------------------------------------------------------------------------typedef struct{ PLOADLIBRARY pfnLoadLibrary; PGETLASTERROR pfnGetLastError; TCHAR szDllName[1024]; DWORD dwReturnValue; } INJECTLIBINFO;typedef struct{ PFREELIBRARY pfnFreeLibrary; PGETMODULEHANDLE pfnGetModuleHandle; PGETLASTERROR pfnGetLastError; DWORD dwReturnValue; TCHAR szDllName[1024];} DEINJECTLIBINFO;//---------------------------------------------------------------------------//遠(yuǎn)程線程,用來(lái)裝載DLLstatic DWORD WINAPI ThreadFuncAttach(INJECTLIBINFO *pInfo){HINSTANCE hDll=NULL;pInfo->dwReturnValue = 0;hDll = (HINSTANCE)pInfo->pfnLoadLibrary(pInfo->szDllName);if(hDll == NULL)pInfo->dwReturnValue = pInfo->pfnGetLastError();return((DWORD)hDll);}//---------------------------------------------------------------------------//占位函數(shù),用來(lái)計(jì)算ThreadFuncAttach的大小static void AfterThreadFuncAttach(void){}//---------------------------------------------------------------------------//遠(yuǎn)程線程,用來(lái)卸載DLLstatic DWORD WINAPI ThreadFuncDetach(DEINJECTLIBINFO *pInfo){ HINSTANCE hDll = NULL; BOOL bResult=FALSE; BOOL bHasFoundModule = FALSE; pInfo->dwReturnValue = 0;//意味成功,如果這個(gè)值不是0,則是一個(gè)錯(cuò)誤代碼。 while((hDll = pInfo->pfnGetModuleHandle(pInfo->szDllName)) != NULL) { bHasFoundModule = TRUE; bResult = pInfo->pfnFreeLibrary(hDll); if(bResult == FALSE) { pInfo->dwReturnValue = pInfo->pfnGetLastError(); break; } } if(pInfo->dwReturnValue == 0 && !bHasFoundModule) { pInfo->dwReturnValue = pInfo->pfnGetLastError(); } return 1;}//---------------------------------------------------------------------------//占位函數(shù),用來(lái)計(jì)算ThreadFuncDetach的大小static void AfterThreadFuncDetach(void){}//---------------------------------------------------------------------------//修改本進(jìn)程的權(quán)限BOOL __fastcall EnablePrivilege(LPCTSTR lpszPrivilegeName,BOOL bEnable){ HANDLE hToken; TOKEN_PRIVILEGES tp; LUID luid; if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY | TOKEN_READ,&hToken)) return FALSE; if(!LookupPrivilegeValue(NULL, lpszPrivilegeName, &luid)) return TRUE; tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; tp.Privileges[0].Attributes = (bEnable) ? SE_PRIVILEGE_ENABLED : 0; AdjustTokenPrivileges(hToken,FALSE,&tp,NULL,NULL,NULL); CloseHandle(hToken); return (GetLastError() == ERROR_SUCCESS);}//---------------------------------------------------------------------------//通過(guò)進(jìn)程名稱得到進(jìn)程的ID(這里使用方法Toolhelp函數(shù),也可使用PSAPI)DWORD __fastcall GetPIDFromName(LPCTSTR lpszProcName){ HANDLE hSnapshot; PROCESSENTRY32 ProcStruct; DWORD dwProcessID = -1; //added by jiangsheng 2002-11-8 BOOL bIsTerminalServices=Is_Terminal_Services(); if(bIsTerminalServices){

//復(fù)制自MSDN雜志W(wǎng)indows XP Escape from DLL Hell with Custom Debugging and Instrumentation Tools and Utilities的代碼 //get current session ID CWTSWrapper WTS; if (WTS.IsValid()) { DWORD dwCurSessionID = -1; LPTSTR pSessionInfo=NULL; DWORD dwBytes; if(WTS.WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,WTS_CURRENT_SESSION, WTSSessionId, (LPTSTR*)&pSessionInfo, &dwBytes)){ dwCurSessionID =*((DWORD*)pSessionInfo); // enumerate processes PWTS_PROCESS_INFO pProcessInfo = NULL; DWORD ProcessCount = 0; BOOL bFound; if (WTS.WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pProcessInfo, &ProcessCount)){ for (DWORD CurrentProcess = 0; CurrentProcess < ProcessCount; CurrentProcess++){ CString strCurExePath(pProcessInfo[CurrentProcess].pProcessName); CString strRemoteProc(lpszProcName); strCurExePath.MakeLower(); strRemoteProc.MakeLower(); bFound = (strCurExePath.Find(strRemoteProc) != -1); if(bFound && dwCurSessionID==pProcessInfo[CurrentProcess].SessionId) { dwProcessID = pProcessInfo[CurrentProcess].ProcessId; break; } } } WTS.WTSFreeMemory(pSessionInfo); } } } else{ //end added by jiangsheng 2002-11-8 BOOL bResult; hSnapshot = CreateToolhelp32Snapshot((DWORD)TH32CS_SNAPPROCESS,0); ProcStruct.dwSize = sizeof(PROCESSENTRY32); bResult = Process32First(hSnapshot,&ProcStruct); while(bResult) { BOOL bFound; CString strCurExePath(ProcStruct.szExeFile); CString strRemoteProc(lpszProcName); strCurExePath.MakeLower(); strRemoteProc.MakeLower(); bFound = (strCurExePath.Find(strRemoteProc) != -1); if(bFound) { dwProcessID = ProcStruct.th32ProcessID; break; } bResult = Process32Next(hSnapshot,&ProcStruct); } CloseHandle(hSnapshot); } return dwProcessID;}//---------------------------------------------------------------------------// 插入代碼//---------------------------------------------------------------------------//InjectFuncvoid __fastcall InjectFunc(){ HANDLE hRemoteProcess=NULL; DWORD dwRemoteProcess=NULL; DWORD dwThreadSize=0; INJECTLIBINFO InjectLibInfo; PVOID pRemoteThread=NULL; PVOID pRemoteParam=NULL; DWORD dwWriten=0; DWORD dwRet=0; //提升本進(jìn)程權(quán)限然后打開目的進(jìn)程 //當(dāng)前用戶必須具有調(diào)試權(quán)限 EnablePrivilege(SE_DEBUG_NAME,true); dwRemoteProcess = GetPIDFromName(szRemoteProcessName); if(dwRemoteProcess == (DWORD)-1) { MessageBox(NULL,_T('Failed to Query Process ID.'),NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS,false,dwRemoteProcess); if(hRemoteProcess == NULL) { MessageBox(NULL,_T('Failed to Open Process. Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } //初始化參數(shù) ZeroMemory(&InjectLibInfo,sizeof(INJECTLIBINFO )); InjectLibInfo.pfnLoadLibrary = (PLOADLIBRARY)GetProcAddress(GetModuleHandle('Kernel32.dll'),LoadLibraryFuncStr); InjectLibInfo.pfnGetLastError = (PGETLASTERROR)GetProcAddress(GetModuleHandle('Kernel32.dll'),GetLastErrorFuncStr); lstrcpyn(InjectLibInfo.szDllName,CTaskKeyMgr::strRemoteDllName,CTaskKeyMgr::strRemoteDllName.GetLength()+1); //在遠(yuǎn)程線程分配內(nèi)存來(lái)存放參數(shù) pRemoteParam = VirtualAllocEx(hRemoteProcess,NULL,sizeof(INJECTLIBINFO),MEM_COMMIT,PAGE_READWRITE); if(pRemoteParam == NULL) { MessageBox(NULL,_T('Failed to Allocate Memory at Remote Process for Param.Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } dwRet = WriteProcessMemory(hRemoteProcess,pRemoteParam,(LPVOID)&InjectLibInfo,sizeof(INJECTLIBINFO),&dwWriten); if(dwRet == 0) { MessageBox(NULL,_T('Failed to Write Param to Remote Process.Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } //拷貝線程體 dwThreadSize = (int)AfterThreadFuncAttach - (int)ThreadFuncAttach + 1024 + sizeof(INJECTLIBINFO); pRemoteThread = VirtualAllocEx(hRemoteProcess,NULL,dwThreadSize,MEM_COMMIT,PAGE_READWRITE); if(pRemoteThread == NULL) { MessageBox(NULL,_T('Failed to Allocate Memory at Remote Process for Thread Code.Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } dwRet = WriteProcessMemory(hRemoteProcess,pRemoteThread,(LPVOID)ThreadFuncAttach,dwThreadSize,&dwWriten); if(dwRet == 0) { MessageBox(NULL,_T('Failed to Write Thread Code to Remote Process.Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } //啟動(dòng)遠(yuǎn)程線程 HANDLE hRemoteThread; hRemoteThread = CreateRemoteThread(hRemoteProcess,0,0,(DWORD(__stdcall *)(VOID*))pRemoteThread,(INJECTLIBINFO*)pRemoteParam,0,&dwWriten); ::WaitForSingleObject(hRemoteThread,INFINITE); if(hRemoteThread == NULL) { MessageBox(NULL,_T('Failed to create unload thread.Err=') + SysErrorMessage(GetLastError()),NULL,MB_OK |MB_APPLMODAL | MB_ICONWARNING); } else { ; } //讀卸載返回值 dwRet =ReadProcessMemory(hRemoteProcess,pRemoteParam,(LPVOID)&InjectLibInfo,sizeof(INJECTLIBINFO),&dwWriten); if(dwRet == 0) { MessageBox(NULL,_T('Unable to read load return value.Err=') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); } else { if(InjectLibInfo.dwReturnValue == 0) { ; } else { MessageBox(NULL,_T('Failed to load library to Winlogon.Err=') +SysErrorMessage(InjectLibInfo.dwReturnValue),NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); } } //恢復(fù)權(quán)限 EnablePrivilege(SE_DEBUG_NAME,false); CloseHandle(hRemoteProcess);}//---------------------------------------------------------------------------// 卸載線程//---------------------------------------------------------------------------//DeinjectFuncvoid __fastcall DeinjectFunc(){ HANDLE hRemoteProcess=NULL; DWORD dwRemoteProcess=0; DWORD dwThreadSize=0; DEINJECTLIBINFO DeinjectLibInfo; PVOID pRemoteThread=NULL; PVOID pRemoteParam=NULL; DWORD dwWriten=0; DWORD Ret=0; //提升本進(jìn)程權(quán)限然后打開目的進(jìn)程 EnablePrivilege(SE_DEBUG_NAME,true); dwRemoteProcess = GetPIDFromName(szRemoteProcessName); if(dwRemoteProcess == (DWORD)-1) { MessageBox(NULL,_T('Failed to Query Process ID.'),NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS,false,dwRemoteProcess); if(hRemoteProcess == NULL) { MessageBox(NULL,_T('Failed to Open Process. Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } //初始化參數(shù) ZeroMemory(&DeinjectLibInfo,sizeof(DEINJECTLIBINFO )); DeinjectLibInfo.pfnFreeLibrary = (PFREELIBRARY)GetProcAddress(GetModuleHandle('Kernel32.dll'),FreeLibraryFuncStr); DeinjectLibInfo.pfnGetModuleHandle = (PGETMODULEHANDLE)GetProcAddress(GetModuleHandle('Kernel32.dll'),GetModuleHandleFuncStr); DeinjectLibInfo.pfnGetLastError = (PGETLASTERROR)GetProcAddress(GetModuleHandle('Kernel32.dll'),GetLastErrorFuncStr); lstrcpyn(DeinjectLibInfo.szDllName,CTaskKeyMgr::strRemoteDllName,CTaskKeyMgr::strRemoteDllName.GetLength()+1); //在遠(yuǎn)程線程分配內(nèi)存來(lái)存放參數(shù) pRemoteParam = VirtualAllocEx(hRemoteProcess,NULL,sizeof(DEINJECTLIBINFO),MEM_COMMIT,PAGE_READWRITE); if(pRemoteParam == NULL) { MessageBox(NULL,_T('Failed to Allocate Memory at Remote Process.Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); } Ret = WriteProcessMemory(hRemoteProcess,pRemoteParam,(LPVOID)&DeinjectLibInfo,sizeof(DEINJECTLIBINFO),&dwWriten); if(Ret == 0) { MessageBox(NULL,_T('Failed to Write Param to Remote Process.Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } //拷貝線程體 dwThreadSize = (int)AfterThreadFuncDetach - (int)ThreadFuncDetach + 1024 + sizeof(DEINJECTLIBINFO); pRemoteThread = VirtualAllocEx(hRemoteProcess,NULL,dwThreadSize,MEM_COMMIT,PAGE_READWRITE); if(pRemoteThread == NULL) { MessageBox(NULL,_T('Failed to Allocate Memory at Remote Process for Thread Code.Err = ') +;;SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } Ret = WriteProcessMemory(hRemoteProcess,pRemoteThread,(LPVOID)ThreadFuncDetach,dwThreadSize,&dwWriten); if(Ret == 0) { MessageBox(NULL,_T('Failed to Write Thread Code to Remote Process.Err = ') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); return; } //啟動(dòng)遠(yuǎn)程線程 HANDLE hRemoteThread; hRemoteThread = CreateRemoteThread(hRemoteProcess ,0,0,(DWORD(__stdcall *)(VOID*))pRemoteThread,(DEINJECTLIBINFO*)pRemoteParam,0,&dwWriten); if(hRemoteThread == NULL) { MessageBox(NULL,_T('Failed to create remote unload thread.Err=') + SysErrorMessage(GetLastError()),NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); } else { CloseHandle(hRemoteThread); } //讀卸載返回值 Ret = ReadProcessMemory(hRemoteProcess,pRemoteParam,(LPVOID)&DeinjectLibInfo,sizeof(DEINJECTLIBINFO),&dwWriten); if(Ret == 0) { MessageBox(NULL,_T('Unable to read unload return value.Err=') + SysErrorMessage(GetLastError()), NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); } else { if(DeinjectLibInfo.dwReturnValue == 0) { } else { MessageBox(NULL,_T('Failed to unload .Err=')+ SysErrorMessage(DeinjectLibInfo.dwReturnValue),NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING); } } //恢復(fù)權(quán)限 CloseHandle(hRemoteProcess); EnablePrivilege(SE_DEBUG_NAME,false);}//---------------------------------------------------------------------------//使用方法 

BOOL CTaskKeyMgr::IsCtrlAltDeleteDisabled(){return bInjectFuncLoaded;} 

if (dwFlags & CTRLALTDEL) { if(bDisable&&!IsCtrlAltDeleteDisabled()){ InjectFunc(); bInjectFuncLoaded=TRUE; } if(!bDisable&&IsCtrlAltDeleteDisabled()){ DeinjectFunc(); bInjectFuncLoaded=FALSE; }}

注意

如果Windows的后續(xù)版本更改了Ctrl+Alt+Delete的處理,本文所提供的技術(shù)可能不再工作。如果你在你的代碼中使用了本文的技術(shù),請(qǐng)注意你可能必須在未來(lái)修改你的代碼。

已知問(wèn)題尚無(wú)Unicode版本 VirtualAllocEx分配的內(nèi)存沒(méi)有用VirtualFreeEx釋放 在Debug方式下運(yùn)行會(huì)造成Winlogon出錯(cuò)(出錯(cuò)后請(qǐng)不要確認(rèn)或取消那個(gè)出錯(cuò)對(duì)話框,然后保存打開的所有文檔,關(guān)閉所有程序,通過(guò)正常的途徑關(guān)機(jī),否則Windows會(huì)立刻關(guān)機(jī))
標(biāo)簽: Windows系統(tǒng)
主站蜘蛛池模板: 天天躁人人躁人人躁狂躁 | 激情久久av一区av二区av三区 | 久久精品国产一区二区电影 | 成人在线一区二区 | 亚洲国产午夜视频 | 在线日韩欧美 | 亚洲国产天堂久久综合 | 欧美亚洲激情 | 欧美韩日 | 国产欧美综合一区二区三区 | 日韩欧美手机在线 | 久久综合入口 | 91视频日韩 | 久久久99精品免费观看 | av网站免费观看 | 精品久久久精品 | 亚洲免费网站在线观看 | 日韩成人国产 | 国产中文字幕在线播放 | 久久久久国产 | 久久久精品一区二区 | 国产精品福利在线观看 | 亚洲精品一区二区三区在线观看 | 久久精品久久久久久久久久久久久 | 天天天干夜夜夜操 | 欧美日一区二区 | 欧美亚洲综合久久 | 精品96久久久久久中文字幕无 | www.国产精品 | 国产黄网 | 欧美精品一区三区 | 日韩免费高清视频 | av中文字幕在线播放 | 午夜爽视频| 久久国产欧美日韩精品 | 日韩美香港a一级毛片免费 国产综合av | 亚洲精品自在在线观看 | 成人欧美一区二区三区色青冈 | 精品天堂| 亚洲第一视频 | 亚洲伊人成人 | 中文字幕免费看 | 精品欧美一区二区三区 | 一区二区在线视频免费观看 | 欧美一区二区三区视频在线观看 | 国产黄色一级片 | 91精品国产乱码久久久久久 | 久久精品一区二区三区四区 | 免费观看欧美一级 | 欧日韩不卡在线视频 | 国产精品久热 | 成年人性视频 | 欧美一区二区三 | 免费观看羞羞视频网站 | 欧美成年网站 | 91中文字幕在线 | 伊人久久综合 | 在线精品国产一区二区三区 | 亚洲精品一区二区三区蜜桃下载 | 久久精品二区 | 亚洲国产精品久久 | 免费黄色大片 | 亚洲tv国产 | 国产一区二区三区在线视频 | 国产欧美精品一区二区 | 天天av网 | 国产乱淫av片 | 国产黄色影视 | 高清av网站 | 一级毛片免费播放 | 99re在线| 国产亚洲视频在线观看 | 国产最新视频在线 | 欧美一区二区三区在线观看视频 | 久久久久免费观看 | 成人在线免费视频 | 亚洲 成人 av| 精品亚洲成a人片在线观看 国产高清在线 | 精品中文字幕在线 | 欧美11一13sex性hd | 欧美三级网址 | 中文字幕在线电影 | 激情五月婷婷综合 | 欧美日韩一级电影 | 亚洲精品视频在线免费播放 | www.国产在线 | 岛国伊人 | 久久国产欧美日韩精品 | 成人性视频在线播放 | 国产午夜精品一区二区三区免费 | 国产精品夜色一区二区三区 | 自拍在线| 国产男女做爰免费网站 | 欧美视频二区 | 91精品国产一区二区 | 欧美成人高清视频 | 欧美国产三级 | 天天操天天干视频 | 色小妹一二三区 | 日本综合视频 | 成人在线播放 | 日韩在线不卡 | 国产精品观看 | 中文久久 | 久久久亚洲 | 玖玖爱视频在线 | 久久久亚洲一区 | 日本激情在线 | 国产综合精品一区二区三区 | 久久久久久久成人 | 欧美日韩一区二区三区视频 | 可以免费看黄的网站 | 日韩手机专区 | 国产精品无码久久久久 | 岛国免费 | 精品视频久久久 | 免费黄色看片 | 成人亚洲精品 | 在线视频中文字幕 | 精品国产一区二区三区性色av | 免费一级黄色电影 | 成年人网站在线免费看 | 91精品国产乱码久久久久久久久 | 色婷婷在线视频观看 | 亚洲香蕉在线观看 | 欧美一级毛片免费看 | 国产日韩欧美一区二区在线观看 | 日韩av免费 | 亚洲二区视频 | 婷婷综合激情 | 成人午夜电影在线 | 91精品国产一区二区三区免费 | 看亚洲a级一级毛片 | youjizz国产 | 中文字幕一区二区三区不卡 | 三级黄色片在线播放 | 天天拍天天操 | 国产亚洲精品精品国产亚洲综合 | 国产欧美在线观看 | 岛国视频| 亚洲二区视频 | 一区二区三区国产在线观看 | 91综合网| 91色在线| 精品成人久久 | 国产免费av大片 | 亚洲电影一区二区三区 | 久热精品在线视频 | 中文字幕精品一区久久久久 | 亚洲综合无码一区二区 | 欧美日韩视频在线 | 最近免费中文字幕大全免费版视频 | 国产成人精品免费 | 欧美日产国产成人免费图片 | 青草精品 | 99久久视频 | 一区福利视频 | 成年网站在线 | 亚洲日本午夜 | 国产精品99久久 | 在线观看国产高清视频 | 色av综合| 亚洲精选久久 | 国产成人91| 国产伦精品一区二区三区四区视频 | 一区久久| 精品欧美乱码久久久久久 | 亚洲视频在线观看视频 | 欧美www.| 欧美激情精品久久久久 | 国产男人天堂 | 免费在线一区二区三区 | 久草视频国产 | 人人干网站| 欧美一级在线 | 国产在线中文字幕 | 欧美国产激情 | www.狠狠干 | 一级免费视频 | 精品一二三区在线观看 | 久久国产区 | 欧美大片一区 | 欧美在线亚洲 | 欧美成人精品在线观看 | 亚洲香蕉精品 | 狠狠夜夜| 亚洲精品自在在线观看 | 精品美女在线观看视频在线观看 | 亚洲高清一区二区三区 | 国产精品999 | 欧美不卡 | 久久精品亚洲精品国产欧美kt∨ | 一级在线看 | 天天操网址 | 伊人91| 欧美日韩精品电影 | 亚洲97色 | 国产一区在线视频 | 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 国产99久久久久久免费看农村 | 91精品免费在线观看 | 日韩综合色 | 6080亚洲精品一区二区 | 亚洲一区播放 | 亚洲91精品 | 青青久在线视频 | 欧美男人天堂网 | vagaa欧洲色爽免影院 | 久久亚洲国产精品日日av夜夜 | 91免费看| 中文字幕av第一页 | 久久九九国产 | 欧美精品久久久久久久久久丰满 | 日韩成人一区二区 | 久久第一区 | 国产亚洲欧美精品永久 | 日韩不卡 | av一区在线观看 | 不卡视频一区 | 精品三级在线观看 | 日韩av高清在线 | 国产精品视频专区 | 欧美成人激情视频 | 国产综合精品一区二区三区 | 国产乱淫av片 | 伊人伊人伊人 | 人人插人人干 | 亚洲自拍偷拍av | 亚洲福利视频在线 | 久久都是精品 | 天天干天天添 | 精品国产区| 国产91久久久 | 欧美自拍视频在线 | www久久精品 | 男女小网站 | 精品成人佐山爱一区二区 | 精品在线视频一区 | 亚洲一区成人在线观看 | 一区二区视频网 | 一级电影免费看 | 日本一区二区三区视频免费看 | 欧美肉体xxxx肉交高潮 | 特级黄一级播放 | 国产在线精品一区二区三区 | 伊人久麻豆社区 | 97视频久久 | 午夜精品一区二区三区四区 | 久久夜精 | 99re6在线视频精品免费 | 在线观看国产www | 国产一区精品电影 | 国产精品一区二区在线观看 | 欧美一区二区三区电影 | 国产精品久久久久久吹潮 | 亚洲一区二区在线看 | 久久精品国产视频 | 一区二区三区欧美在线 | 99在线精品视频 | 国产黄色播放 | 亚洲二区在线 | 99精品久久| 一二三区在线 | 精品一级 | 丝袜久久 | 大象视频成人在线观看 | 国产一区二区三区久久 | 国产精品高清一区二区 | 在线99| 国产久| 亚洲视频中文字幕 | 国产aaaaav久久久一区二区 | 午夜国产一区 | 国产欧美精品一区二区 | 久久精品亚洲精品国产欧美 | 日韩一区欧美 | 在线观看国产视频 | 国产一区二区亚洲 | 久久男人天堂 | 无码少妇一区二区三区 | 男女羞羞视频网站 | 日韩性猛交 | 97久久精品 | 91日日 | 人妖天堂狠狠ts人妖天堂狠狠 | 精品久久一区二区 | 色婷婷综合久久久中文字幕 | 中文字幕一区二区在线观看 | 免费亚洲精品 | 日韩伦理一区二区 | 北条麻妃一区二区三区在线观看 | 黄色片网站视频 | 久久久亚洲成人 | 亚洲 欧美 日韩 丝袜 另类 | av国产精品 | 久久99久久99精品免观看粉嫩 | 成人免费高清 | 在线观看免费视频日韩 | 日韩欧美一区二区三区 | 日韩欧美在线不卡 | 久久激情五月丁香伊人 | 山岸逢花在线观看 | 国产精品一区一区三区 | 亚洲欧美日韩国产综合 | www.一区二区三区 | 欧美第一页 | 天天操天天干天天 | 婷婷国产成人精品视频 | 99久久婷婷国产精品综合 | 91精品综合久久久久久五月天 | 国产中文在线 | 人人草人人干 | 99精品欧美一区二区三区 | 欧美黄视频在线观看 | 精品久久久久久久久福利 | 亚洲第一免费视频网站 | 日韩av免费在线观看 | 日本视频中文字幕 | 久久精品国产久精国产 | 91看片网站 | 成人在线 | 亚洲一区中文字幕 | 亚洲国产成人精品女人 | 欧美成人精品一区二区男人看 | 在线免费国产视频 | 日韩精品2区 | 日韩在线二区 | 亚洲欧美日韩另类精品一区二区三区 | 亚洲www啪成人一区二区 | 四虎影院观看 | 国内精品视频在线观看 | 久久综合狠狠综合久久 | 久久一二区 | 久久com | 在线免费观看成年人视频 | 久久综合爱 | 中文字幕精品三区 | 青青草久 | 免费av片网站 | 成人不卡在线 | 亚洲视频综合 | 国产精品美女久久久久久免费 | 亚洲+变态+欧美+另类+精品 | 91精品国产高清一区二区三区 | 日日想日日干 | 午夜视频大全 | 日韩精品免费在线观看 | 午夜男人网| 日本三级在线视频 | 国产超碰人人爽人人做人人爱 | 狠狠操夜夜操 | 免费午夜电影 | 中文一二区 | 伦理一区| 精一区二区 | 91社区在线观看高清 | 久久精品色欧美aⅴ一区二区 | 精品无码三级在线观看视频 | 波多野结衣 一区二区 | 成人午夜激情 | 精品护士一区二区三区 | 九色91在线 | 综合久久综合 | 国产精品自产av一区二区三区 | 日韩欧美在线观看视频 | 色综合色综合网色综合 | 欧美久久久久 | 不卡视频一二三区 | 欧美欧美欧美 | 一区二区久久 | 久草免费在线 | 九色视频在线播放 | 99久久精品一区二区 | 日韩城人免费 | 欧美精品综合 | 国产农村妇女精品久久 | 久久久久久一区 | 麻豆产精国品免费入口 | 精品免费一区二区 | 福利一区二区 | 成人免费看黄 | 精品久久久久久国产 | 91精品国产日韩91久久久久久 | 在线视频中文字幕 | 国产欧美日韩综合精品一区二区 | 在线观看亚洲一区二区三区 | 久草高清 | 欧美一区二区免费 | 午夜欧美一区二区三区在线播放 | 欧美日韩中文字幕 | 久久精品小视频 | 亚洲视频一区在线 | 久久一二 | 狠狠撸在线 | 91精品国产九九九久久久亚洲 | 杨门女将寡妇一级裸片看 | 欧美日一区二区 | 成人午夜精品一区二区三区 | 91亚洲日本aⅴ精品一区二区 | 亚洲高清免费视频 | 不卡一区二区三区四区 | 欧美日韩国产一区二区三区 | 欧美日韩a v | 91精品国产高清一区二区三区 | 香蕉久久久久久 | 最新日韩一区 | 日韩av免费在线观看 | 日本在线观看网站 | 国产乱码精品一区二区三区中文 | 国产精品精品久久久 | 亚洲精品自在在线观看 | 超碰人人爱| 精品视频久久 | 黄色av网站在线免费观看 | 午夜天堂精品久久久久 | 一级色网站 | 日韩成人 | 色婷婷综合久久久中文字幕 | 99免费视频| 亚洲人人 | 亚洲欧美日韩精品久久亚洲区 | 欧美一区二区三区在线观看视频 | 毛片网 | 自拍视频在线播放 | 日韩精品一二三区 | 欧美成在线视频 | 超碰天天 | 国产97在线 | 亚洲 | 99免费在线观看视频 | 精品久久久av | 国产男女做爰免费网站 | 狠狠操一区二区三区 | 亚洲一区二区三区四区在线 | 日韩在线精品视频 | 日本免费黄色 | 国产精品毛片 | 91久久久久| 天天亚洲综合 | 99久久精品免费 | 久久精品二区 | 久综合网| 亚洲一区亚洲二区 | 在线三级电影 | 成人国产精品免费网站 | 午夜欧美精品久久久久 | 色九九九 | 成人精品福利视频 | 亚洲性网 | 精品国产不卡一区二区三区 | 国产综合av| 午夜影院在线观看免费 | 99re在线视频 | 成人片免费看 | 久久久蜜桃 | 天天干天天搞天天射 | 日韩激情网| 中文字幕高清在线 | 91激情在线 | 伊人逼逼| 不卡一二区 | 欧美在线一区二区三区 | 国产精品毛片一区二区三区 | 日韩精品久久 | 最新日韩欧美 | 波多野结衣一二三 | 亚洲国产精品精华液com | 亚洲一区二区 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲av毛片一级二级在线 | 深夜成人小视频 | 亚洲 欧美 日韩在线 | 欧美一区二区在线视频 | 中文字幕在线观看不卡视频 | 国产午夜精品久久久久久久 | 精品一二三区 | jlzzjlzz亚洲日本少妇 | 国产亚洲视频在线观看 | 国产丝袜在线 | 激情久久久久 | 免费国产一区 | 欧美日韩国产精品一区二区亚洲 | www久| www.色综合 | 蜜桃av人人夜夜澡人人爽 | 欧美成人专区 | 国产中文字幕一区 | 香蕉久久一区二区不卡无毒影院 | 国产日韩精品一区二区 | 久草成人网 | 国产精品一任线免费观看 | av免费观看在线 | 欧美国产伦久久久久久 | 欧美一区二区三区 | 久久99视频 | 天天操天天草 | 精品1区2区| 一区二区久久 | 国产精品乱码一区二区三区 | 亚洲人成人一区二区在线观看 | 97精品视频在线 | 色综合视频 | 国产成人一级片 | 国产激情在线观看视频 | 久久久一区二区 | 九色91视频| 日韩高清中文字幕 | 国产在线观看一区 | 成人午夜视频网 | 欧美精品综合在线 | 国产精品久久久久久久午夜片 | 久久福利 | 91精品综合久久久久久五月天 | 亚洲一区二区三区四区在线观看 | 国产精品毛片久久久久久久 | 99热这里有精品 | 精品久久久一区 | 久久国产精品首页 | 国产精品久久久久久吹潮 | 日韩在线电影 | 精品视频在线播放 | 久久精品国产久精国产 | 在线看片成人 | 午夜在线免费观看 | 99国产精品99久久久久久 | 欧美一级全黄 | 波多野结衣一区三区 | 中文字幕在线精品 | 成人深夜小视频 | 久热热热 | 玖玖视频 | 日本 国产 欧美 | av一区二区在线观看 | 日韩精品在线免费 | 国产精品久久久久久福利一牛影视 | 国产精品久久久久久久美男 | 在线观看免费视频日韩 | 久久久久国产 | 日本亚洲欧美 | 亚洲综合视频一区 | 国产拍揄自揄精品视频麻豆 | 成人国产精品一级毛片视频 | 欧美人成在线观看 | 久久久精选 | 亚洲国产精品一区二区久久 | 91在线视频播放 | 欧洲精品一区 | 中文字幕亚洲一区二区va在线 | 无码日韩精品一区二区免费 | 91精品区 | 天天澡天天狠天天天做 | 精品免费视频 | 91色电影| 久久精品99 | 91短视频版在线观看www免费 | 日本激情视频一区二区三区 | 美女一区二区三区在线观看 | av一区二区三区四区 | 国产精品久久久久久亚洲调教 | 中文字幕乱码一区二区三区 | 亚洲高清精品视频 | 成人欧美一区二区三区黑人孕妇 | 一级片网 | 午夜免费网 | 免费操片| 国产一区视频网站 | 欧美成人一区二免费视频软件 | 美女一区二区三区四区 | 成人网址在线观看 | 成人国产精品视频 | 欧美视频精品在线观看 | 91精品国产乱码久久久久久久久 | www.国产.com| 国产成人精品一区二区在线 | 999久久久 | av网站观看 | 中文字幕日韩视频 | 麻豆成人在线 | 色播久久久 | 一区二区三区四区在线 | 卡通动漫第一页 | 天堂精品| 一区二区在线免费观看 | 欧洲亚洲精品久久久久 | 日韩精品专区 | 亚洲伊人久久综合 | 久久免费精品视频 | 亚洲九九九 | 欧美成年黄网站色视频 | 午夜精| 国产精品久久久久久久久 | 不卡日韩在线 | 日本黄色a级 | 黄色国产一级片 | 成人片免费看 | 亚洲精品国产第一综合99久久 | 97成人精品视频在线观看 | 久久伊人av | 国产在线精品一区二区三区 | 欧美日韩视频在线 | 亚洲国产精品99久久久久久久久 | www久久99 | 99久久婷婷国产综合精品 | 久久成人一区二区 | 久久久亚洲| 国产成人在线一区二区 | 99久久久免费视频 | 亚洲国产一区二区三区, | 精品久久久久久久久久久院品网 | 精品国产一区一区二区三亚瑟 | 精品欧美一区二区精品久久久 | 欧美成人综合在线 | 亚洲欧美国产精品专区久久 | 国产精品久久久久一区二区三区 | 国产最新网址 | 日韩精品视频在线观看一区二区 |