99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

手動映射加載EXE:內(nèi)存中運行程序的實現(xiàn)源碼解析

手動映射加載EXE:內(nèi)存中運行程序的實現(xiàn)源碼解析 簡介一套圍繞內(nèi)存DLL與內(nèi)存加載EXE的完整源碼包面向熟悉Windows編程、希望深入進程注入與PE加載原理的開發(fā)者可用于學(xué)習(xí)如何擺脫傳統(tǒng)磁盤路徑直接在內(nèi)存中加載并執(zhí)行EXE同時以DLL接口形式對外提供調(diào)用。包內(nèi)共17個文件主要包含cpp、h源碼和rc資源腳本另有dsp、dsw工程文件、def導(dǎo)出定義、lib/exp鏈接文件及一個可運行的樣例DLL/EXE整體約942KB。已有192人學(xué)習(xí)過。源碼展示了從內(nèi)存中解析PE結(jié)構(gòu)、處理重定位、申請內(nèi)存并創(chuàng)建線程執(zhí)行入口點的關(guān)鍵步驟也給出了封裝接口函數(shù)的具體實現(xiàn)參考價值較高。通過閱讀工程代碼讀者可掌握CreateRemoteThread、VirtualAllocEx等API的典型用法并為自行開發(fā)內(nèi)存加載或安全分析工具打下基礎(chǔ)。1. 從磁盤啟動到內(nèi)存執(zhí)行這份DLL源碼到底在解決什么問題有一次我在排查一個進程頻繁閃退的問題查了半天發(fā)現(xiàn)根本不是程序自身的問題——是有人把另一個EXE當(dāng)成DLL直接塞進了這個進程的地址空間里執(zhí)行。當(dāng)時我就意識到內(nèi)存DLL、內(nèi)存加載EXE這套玩法在實際項目中遠比教科書寫得要復(fù)雜得多。這份“DLL源碼啟動”壓縮包就是這么一套完整的工程調(diào)用方宿主、被加載的EXE、簽名庫全配齊適合想做PE加載器、調(diào)試注入邏輯、研究手動映射技術(shù)的人。它的核心價值在于讓你不再依賴 CreateProcess 去拉起一個新進程而是把 EXE 當(dāng)作一組二進制數(shù)據(jù)在當(dāng)前進程里完成裝載、修復(fù)、執(zhí)行。這套技能在接口封裝、功能改造、逆向調(diào)試和特殊場景部署里都繞不開。2. 為什么不用 LoadLibrary手動映射的原理與選型2.1 LoadLibrary 的硬限制路徑、落盤和加載回調(diào)傳統(tǒng)的 LoadLibrary / LoadLibraryEx必須給一個磁盤路徑。Windows 會沿著這個路徑找到文件讀入系統(tǒng)緩存再交給裝載器做映射。在這個過程中文件路徑會出現(xiàn)在進程模塊列表里DLL 的加載事件會被 ETW 記錄而且 DLL 里的 DllMain 會因為進程線程狀態(tài)的變化被多次調(diào)用參數(shù)從 DLL_PROCESS_ATTACH 到 DLL_THREAD_ATTACH 輪番上陣。如果你只是想“在當(dāng)前進程里跑一段現(xiàn)成的 EXE 邏輯”LoadLibrary 這條路根本行不通——它只能加載 DLL加載不了 EXE。就算你把 EXE 強行改名成 DLL裝載器會因為校驗 PE 頭、檢查 Subsystem 字段等原因拒絕加載。就算你用 LoadLibraryEx 加 LOAD_LIBRARY_AS_DATAFILE 把它當(dāng)數(shù)據(jù)文件讀入那也只是把二進制讀進內(nèi)存并不能執(zhí)行。這就要一個更底層的方案手動映射也就是業(yè)內(nèi)常說的 Manual Map。手動映射的本質(zhì)是繞開系統(tǒng)的加載流程自己把 PE 文件的每個節(jié)區(qū)復(fù)制到內(nèi)存里修復(fù)重定位表和導(dǎo)入表然后直接跳到入口點。整個過程里磁盤上可以沒有這個 EXE。2.2 手動映射的六個標(biāo)準(zhǔn)步驟第一步讀取文件內(nèi)容。直接用 CreateFile ReadFile 把 EXE 的二進制讀進一塊緩沖區(qū)這塊緩沖區(qū)只是原始數(shù)據(jù)不參與執(zhí)行。第二步解析 DOS 頭和 PE 頭。校驗 e_magic 是否為 MZ、Signature 是否為 PE\0\0從這里拿到節(jié)區(qū)表、可選頭的入口點地址、鏡像基址、數(shù)據(jù)目錄。第三步按 SizeOfImage 分配一塊可讀可寫可執(zhí)行的內(nèi)存。這里有個容易踩的坑分配粒度要按 SectionAlignment 對齊不能直接拿文件大小來分配。第四步按節(jié)區(qū)表的 VirtualAddress 和 PointerToRawData把每個節(jié)區(qū)從文件偏移復(fù)制到內(nèi)存偏移同時把文件頭復(fù)制到鏡像起始位置。第五步判斷模塊被加載到的新地址是否和 ImageBase 一致。不一致就遍歷重定位表把所有絕對地址加上一個 Delta 值。第六步遍歷導(dǎo)入表逐個 LoadLibrary 和 GetProcAddress把導(dǎo)入地址表 IAT 替換成真實函數(shù)地址。最后跳到 AddressOfEntryPoint 執(zhí)行。整個流程看起來不復(fù)雜但每一步都有很多細節(jié)。一旦某一步寫錯程序不會給你報錯只會靜默崩潰。而且崩潰點往往不在出錯的那一步而是拖到執(zhí)行入口點之后才爆發(fā)排查起來非常難受。我做這個功能時習(xí)慣在每個步驟后加一個狀態(tài)輸出把 Section 數(shù)量、ImageBase、入口點地址、重定位表大小這些關(guān)鍵參數(shù)先打出來確認(rèn)每一步都有據(jù)可查。2.3 三個關(guān)鍵選型點入口點、重定位、導(dǎo)入表入口點要不要作為線程啟動常見做法是 CreateThread傳入入口地址作為起始地址。好處是加載器線程可以立即返回不會阻塞調(diào)用方壞處是如果 EXE 的 WinMain 里做了大量初始化線程生命周期就脫離了加載器的控制。我一般傾向用 CreateThread 啟動然后 WaitForSingleObject 等待入口點函數(shù)返回這樣不會出現(xiàn)加載器線程已經(jīng)退出、入口點還在另一個線程里跑的情況。但要注意如果目標(biāo) EXE 內(nèi)部調(diào)用了 ExitProcess那整個進程還是會結(jié)束這一點沒得商量。重定位是否必須做如果 EXE 的 ImageBase 和 VirtualAlloc 分配到的地址恰好一致重定位理論上可以跳過。但這么想的基本都會翻車——VirtualAlloc 能分到的地址由系統(tǒng)決定不能保證一致。尤其是開啟了 ASLR 的系統(tǒng)EXE 頭里聲明的 ImageBase 基本不可能被滿足。所以重定位處理是所有內(nèi)存加載器里最不能省的邏輯。導(dǎo)入表修復(fù)則是另一個生死線它決定了 EXE 里能不能調(diào)用系統(tǒng) API。如果導(dǎo)入表不修復(fù)加載出來的 EXE 只要碰到一個外部函數(shù)調(diào)用就會瞬間崩掉而且崩在 ntdll 里看起來像是系統(tǒng)問題。2.4 手動映射和進程注入的區(qū)別很多人把手動映射和進程注入混為一談。實際上進程注入強調(diào)的是“把代碼放進別人的進程空間”手法可以是 CreateRemoteThread、SetWindowsHookEx、APC 注入而手動映射強調(diào)的是“不通過系統(tǒng)加載器來裝載 PE”兩者可以結(jié)合使用。比如把手動映射出來的 DLL 通過遠程線程注入到目標(biāo)進程那就是一套完整的注入方案。但如果只是在自己進程里加載一個 EXE那只需要手動映射不需要遠程線程。這份資源里的做法更接近后者宿主和加載目標(biāo)都在同一進程里。3. 壓縮包內(nèi)的文件布局PotPlayer 工程、HWSignature 與 SGDownload 的分工打開這個壓縮包第一眼看上去文件很多其實大部分是編譯生成物。怎么把它們分層、找出來源是能不能看懂這份源碼的關(guān)鍵。3.1 文件清單與角色判斷從文件后綴和命名看這是基于 Visual C 6.0 工程.dsp / .dsw的一套方案。我把文件分成幾類分類文件角色宿主源碼PotPlayer.dsp / PotPlayer.dsw / PotPlayer.cpp / StdAfx.cpp / StdAfx.h調(diào)用方工程主體資源與定義Potplayer.rc / resource.h / Potplayer.def界面資源與導(dǎo)出符號定義編譯生成物Release\HWSignature.exp / HWSignature.lib / HWSignature.dll簽名庫的導(dǎo)入庫和 DLL目標(biāo)與臨時Bin\HWSignature.dll / Bin\temp / Release\SGDownload.exe運行時依賴與目標(biāo)加載對象清理腳本刪除臨時文件.bat清理運行后殘留PotPlayer 是這個工程的宿主名字。為什么叫 PotPlayer一種可能是它借了播放器的外殼實際干的卻是加載器的活。PotPlayer.cpp 是主入口里面應(yīng)該封裝了內(nèi)存加載邏輯和接口調(diào)用。注意 Potplayer.def 這個文件它在 DLL 工程里用來聲明哪些函數(shù)可以被外部程序調(diào)用如果一個 EXE 工程里出現(xiàn)了 .def很可能是想讓 EXE 也導(dǎo)出函數(shù)給別的模塊使用或者用它來重定向入口點。HWSignature.dll 從名字看是“硬件簽名”相關(guān)模塊可能的作用是校驗被加載的 EXE 是否合法或者在加載完成后做簽名檢查。這一塊在調(diào)試時可以直接忽略但務(wù)必保證它存在因為宿主程序加載時很可能通過 LoadLibrary 依賴了它。SGDownload.exe 是典型的目標(biāo)程序——被加載者。從命名看它可能是一個下載器程序這里被當(dāng)成內(nèi)存加載的對象。在真實使用場景里這個文件不應(yīng)該常駐磁盤而是由宿主程序在內(nèi)存中直接執(zhí)行。3.2 調(diào)用方與被加載方的連接方式內(nèi)存加載和普通 DLL 調(diào)用最大的不同在于DLL 可以通過 GetProcAddress 找導(dǎo)出函數(shù)而內(nèi)存加載的 EXE 沒有標(biāo)準(zhǔn)的導(dǎo)出機制。那么調(diào)用方怎么和 SGDownload.exe 溝通常見做法是在調(diào)用方里定義接口結(jié)構(gòu)體。比如定義一個結(jié)構(gòu)體 SGDOWNLOAD_INTERFACE里面放函數(shù)指針。然后調(diào)用方在內(nèi)存加載完成后找到 EXE 的入口點給它傳一個結(jié)構(gòu)體地址讓它把自身的函數(shù)指針填入這個結(jié)構(gòu)體。這樣調(diào)用方就能像調(diào)用本地函數(shù)一樣調(diào)用加載到內(nèi)存中的 EXE 功能。這個思路在工程里可能以 PotPlayer.cpp 里的一段全局結(jié)構(gòu)體形式存在// InterfaceDef.h typedef struct _SGDOWNLOAD_INTERFACE { int nStructSize; // 結(jié)構(gòu)體大小用于版本協(xié)商 DWORD dwFunctionFlags; // 支持的功能位掩碼 BOOL (*SetSourceURL)(const char* lpszUrl); // 設(shè)置下載地址 BOOL (*StartDownload)(const char* lpszSavePath, DWORD dwTimeout); BOOL (*StopDownload)(void); DWORD (*GetProgress)(void); // 返回下載進度百分比 void (*Release)(void); // 釋放內(nèi)部資源 } SGDOWNLOAD_INTERFACE;這段代碼定義了調(diào)用方和內(nèi)存中 EXE 之間的接口契約。nStructSize 用于版本協(xié)商避免兩邊結(jié)構(gòu)體對齊方式不一致導(dǎo)致字段錯位dwFunctionFlags 讓調(diào)用方在調(diào)用前先確認(rèn)目標(biāo)支持哪些功能。SetSourceURL 和 StartDownload 是業(yè)務(wù)函數(shù)。通過這種結(jié)構(gòu)體傳參方式內(nèi)存加載的 EXE 也能像 DLL 一樣提供清晰的函數(shù)入口。參數(shù)里我沒有寫路徑和文件句柄因為內(nèi)存模式下不依賴落盤所有地址都是函數(shù)指針。3.3 哪些文件是源碼、哪些是生成物去掉 Release、Debug、Bin 這些目錄后純凈的源碼其實只有十來個文件。當(dāng)你拿到這樣的壓縮包時第一件事是重建工程結(jié)構(gòu)新建一個目錄從 dsp / dsw 恢復(fù) VC6 工程把 cpp / h / rc / def 放進去再編譯。編譯時注意 HWSignature.lib 要能鏈接上否則會報“無法解析的外部符號”。Release 目錄下那幾個 .exp / .lib 是為了和 HWSignature.dll 一起鏈接用的如果只是看加載器的邏輯不需要深究它的簽名算法。還要留意 PotPlayer.plg 這個文件它是 VC6 的編譯日志記錄的是某一次編譯的輸出信息。這個文件基本沒有保留價值但有時能從里面看到工程文件的編譯順序和依賴關(guān)系比如要不要先編譯 HWSignature 再編譯 PotPlayer。刪除臨時文件.bat 這個文件值得多說一句。它清理的是 Bin\temp 目錄下的臨時文件。內(nèi)存加載雖然不需要目標(biāo) EXE 常駐磁盤但在某些方案里為了配合下載流程會先把 EXE 寫到臨時目錄再立即用內(nèi)存方式讀入并刪除。這個批處理就是把沒刪干凈的殘骸清理掉。4. 手寫一版內(nèi)存加載器從 PE 解析到入口點執(zhí)行這一章是落地章節(jié)用 C 把整個手動映射流程拆開寫一遍。代碼以 Windows API 為主編譯環(huán)境可以是 VS2022也可以退回 VC6核心邏輯不變。4.1 把 EXE 讀進內(nèi)存并校驗 PE 頭// LoadFile.cpp HANDLE hFile CreateFileA(SGDownload.exe, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (hFile INVALID_HANDLE_VALUE) { return FALSE; // 文件不存在或沒有權(quán)限 } DWORD fileSize GetFileSize(hFile, NULL); BYTE* pBuffer new BYTE[fileSize]; DWORD bytesRead 0; ReadFile(hFile, pBuffer, fileSize, bytesRead, NULL); CloseHandle(hFile); // 校驗 DOS 頭和 PE 頭 IMAGE_DOS_HEADER* pDos (IMAGE_DOS_HEADER*)pBuffer; if (pDos-e_magic ! IMAGE_DOS_SIGNATURE) { // MZ delete[] pBuffer; return FALSE; } IMAGE_NT_HEADERS* pNt (IMAGE_NT_HEADERS*)(pBuffer pDos-e_lfanew); if (pNt-Signature ! IMAGE_NT_SIGNATURE) { // PE\0\0 delete[] pBuffer; return FALSE; }這里把 EXE 整體讀成一塊緩沖區(qū)然后強轉(zhuǎn)成 IMAGE_DOS_HEADER 并校驗 e_magic再通過 e_lfanew 跳轉(zhuǎn)到 NT 頭校驗 Signature。注意 e_lfanew 這個字段是 DOS 頭里指向 PE 頭的文件偏移不能直接假設(shè)它固定是 0x80。用 ImageNtHeaders 宏也能做轉(zhuǎn)換但這里手動寫更直觀也方便打印中間變量。讀文件時我用了 FILE_SHARE_READ這樣即使目標(biāo) EXE 被其他進程打開了也不會因為共享沖突讀失敗。4.2 按節(jié)區(qū)分配內(nèi)存并復(fù)制數(shù)據(jù)// AllocImage.cpp IMAGE_OPTIONAL_HEADER32* pOpt pNt-OptionalHeader; BYTE* pImageBase (BYTE*)VirtualAlloc(NULL, pOpt-SizeOfImage, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (pImageBase NULL) { delete[] pBuffer; return FALSE; } // 復(fù)制文件頭部分 memcpy(pImageBase, pBuffer, pOpt-SizeOfHeaders); // 遍歷節(jié)區(qū)表并按節(jié)區(qū)實際數(shù)據(jù)大小復(fù)制 IMAGE_SECTION_HEADER* pSec IMAGE_FIRST_SECTION(pNt); for (int i 0; i pNt-FileHeader.NumberOfSections; i) { memcpy(pImageBase pSec[i].VirtualAddress, pBuffer pSec[i].PointerToRawData, pSec[i].SizeOfRawData); }分配內(nèi)存用的是 VirtualAlloc分配大小是 SizeOfImage 而不是文件大小。SizeOfImage 是加載到內(nèi)存后整個鏡像的虛擬大小包含節(jié)區(qū)對齊后的空隙和頭部對齊所以它一般會比文件大小大。如果只分配文件大小PE 頭里所有基于 VirtualAddress 的地址都會越界等執(zhí)行到入口點附近就會觸發(fā)訪問沖突。節(jié)區(qū)復(fù)制時用 PointerToRawData 去文件里取數(shù)據(jù)寫入 VirtualAddress 對應(yīng)的位置。這里特意用了 PAGE_EXECUTE_READWRITE是為了避免節(jié)區(qū)權(quán)限不同導(dǎo)致后續(xù)寫入時崩潰正常做法是后面按節(jié)區(qū)屬性重新設(shè)置保護屬性。4.3 修復(fù)重定位表// FixReloc.cpp DWORD delta (DWORD)((BYTE*)pImageBase - pOpt-ImageBase); if (delta ! 0) { DWORD relocRVA pOpt-DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress; DWORD relocSize pOpt-DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size; if (relocRVA ! 0) { DWORD offset 0; while (offset relocSize) { IMAGE_BASE_RELOCATION* pReloc (IMAGE_BASE_RELOCATION*)(pImageBase relocRVA offset); DWORD count (pReloc-SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD); WORD* entries (WORD*)((BYTE*)pReloc sizeof(IMAGE_BASE_RELOCATION)); for (DWORD j 0; j count; j) { if ((entries[j] 0x3000) IMAGE_REL_BASED_HIGHLOW) { DWORD* pAddr (DWORD*)(pImageBase pReloc-VirtualAddress (entries[j] 0x0FFF)); *pAddr delta; } } offset pReloc-SizeOfBlock; } } }delta 是實際加載地址和 PE 頭里聲明的首選基址之間的差。重定位表里的每一項都是一個塊結(jié)構(gòu)VirtualAddress 指明這個塊作用于哪個頁面SizeOfBlock 是這個塊的總字節(jié)數(shù)后面的 WORD 數(shù)組每一項的高 4 位表示重定位類型低 12 位是頁面內(nèi)的偏移。HIGHLOW 類型表示這是一個 32 位地址需要加上 delta。如果 EXE 沒有重定位表也就是 Base Relocation Directory 的 Size 為 0那這個 EXE 就只能加載到它的 ImageBase 上否則一定會崩。這種情況在 VC6 編譯的 Release EXE 里比較常見遇到時不要硬加載要么用 LoadLibrary 走正常路要么給工程加上 /DYNAMICBASE 重新編譯。4.4 修復(fù)導(dǎo)入表// FixImport.cpp DWORD importRVA pOpt-DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; if (importRVA ! 0) { IMAGE_IMPORT_DESCRIPTOR* pImp (IMAGE_IMPORT_DESCRIPTOR*)(pImageBase importRVA); for (; pImp-Name ! 0; pImp) { char* dllName (char*)(pImageBase pImp-Name); HMODULE hDll LoadLibraryA(dllName); if (hDll NULL) { continue; // 依賴的 DLL 不在系統(tǒng)路徑或當(dāng)前目錄 } IMAGE_THUNK_DATA* pThunk (IMAGE_THUNK_DATA*)(pImageBase pImp-FirstThunk); IMAGE_THUNK_DATA* pOrig (IMAGE_THUNK_DATA*)(pImageBase pImp-OriginalFirstThunk); for (; pThunk-u1.AddressOfData ! 0; pThunk, pOrig) { if (pOrig-u1.AddressOfData 0x80000000) { // 按序號導(dǎo)入的函數(shù) DWORD ordinal pOrig-u1.AddressOfData 0x7FFFFFFF; pThunk-u1.Function (DWORD)GetProcAddress(hDll, (char*)ordinal); } else { // 按名稱導(dǎo)入的函數(shù) IMAGE_IMPORT_BY_NAME* pName (IMAGE_IMPORT_BY_NAME*)(pImageBase pOrig-u1.AddressOfData); pThunk-u1.Function (DWORD)GetProcAddress(hDll, pName-Name); } } } }導(dǎo)入表修復(fù)的邏輯是把 EXE 里聲明的導(dǎo)入函數(shù)從“函數(shù)名稱”替換為實際加載到進程空間的函數(shù)地址。OriginalFirstThunk 指向原始導(dǎo)入名稱表FirstThunk 是 IAT兩者在編譯時可能指向同一塊數(shù)據(jù)但修復(fù)時只能改 IAT不能動 OriginalFirstThunk 指向的內(nèi)容。按序號導(dǎo)入時AddressOfData 的最高位為 1低位就是函數(shù)序號GetProcAddress 可以直接用序號查找。按名稱導(dǎo)入則要解析 IMAGE_IMPORT_BY_NAME里面是 Hint 加函數(shù)名字符串。如果 LoadLibrary 返回 NULL說明目標(biāo) EXE 依賴的這個 DLL 不在系統(tǒng)的搜索路徑里這時候要自己先 LoadLibrary 一個絕對路徑或者把 DLL 目錄加到當(dāng)前進程的搜索路徑中。4.5 執(zhí)行入口點并管理線程生命周期// RunEntry.cpp BYTE* entryPoint pImageBase pOpt-AddressOfEntryPoint; HANDLE hThread CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)entryPoint, (LPVOID)pInterface, // 傳給入口點的參數(shù) 0, NULL); if (hThread NULL) { VirtualFree(pImageBase, 0, MEM_RELEASE); delete[] pBuffer; return FALSE; } WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); // 線程結(jié)束后再釋放鏡像 VirtualFree(pImageBase, 0, MEM_RELEASE); delete[] pBuffer;入口點地址是 AddressOfEntryPoint 相對于鏡像基址的偏移。對于 EXE 來說這個入口點一般會經(jīng)過 C 運行時初始化最終調(diào)用 WinMain。用 CreateThread 而不是直接函數(shù)調(diào)用的好處是線程有自己的棧空間入口點里即使對棧做了大量操作也不會污染加載器所在線程的棧。另一個好處是可以在外部等待線程結(jié)束便于管理生命周期。這里我傳入了 pInterface 結(jié)構(gòu)體指針也就是上一章定義的接口結(jié)構(gòu)目標(biāo) EXE 在入口點階段往里面填充函數(shù)指針。注意VirtualFree 釋放鏡像內(nèi)存必須在所有相關(guān)線程退出之后否則就是在代碼還沒有停止執(zhí)行的時候先把代碼卸載了。4.6 參數(shù)怎么傳、返回值怎么拿傳參數(shù)給內(nèi)存加載的 EXE 是一個容易忽略的問題。CreateProcess 可以通過命令行傳參數(shù)而內(nèi)存加載的入口點函數(shù)簽名理論上只有一個參數(shù)也就是我們常說的 lpParameter。這個自由度其實很大——你可以傳一個整數(shù)可以傳一個字符串指針也可以傳一個結(jié)構(gòu)體指針。我一般把所有參數(shù)包成一個結(jié)構(gòu)體里面放業(yè)務(wù)需要的 URL、保存路徑、超時時間、回調(diào)函數(shù)等。返回值通過結(jié)構(gòu)體里的指針帶回來比如結(jié)構(gòu)體里放一個 int* pResult目標(biāo)程序執(zhí)行完把結(jié)果寫到這個地址。如果目標(biāo) EXE 的入口點是標(biāo)準(zhǔn) WinMain那它的返回值要通過 ExitProcess 或者 return 返回。在線程場景下入口點 return 的值會變成線程退出碼可以通過 GetExitCodeThread 拿到。注意拿返回值要在 WaitForSingleObject 之后調(diào)用線程沒結(jié)束就拿退出碼結(jié)果是不確定的。5. 常見問題與排錯加載器翻車的五條血淚經(jīng)驗5.1 加載后進程活著但主窗口沒出現(xiàn)現(xiàn)象加載返回成功線程也創(chuàng)建了但目標(biāo) EXE 的主窗口沒彈出來進程卻在后臺跑著任務(wù)管理器里能看到進程存在。原因最常見的是入口點用的不是正常的 WinMain 入口流程。很多 EXE 在 WinMain 被調(diào)用前有一大段 CRT 初始化邏輯包括解析命令行、初始化全局變量、設(shè)置錯誤模式。如果直接跳到 AddressOfEntryPoint這些初始化步驟就被跳過了導(dǎo)致窗口創(chuàng)建失敗或者窗口類沒有注冊。解決確認(rèn)目標(biāo) EXE 是否使用動態(tài)鏈接 CRT。如果是它的入口點通常是 mainCRTStartup 或 wWinMainCRTStartup這類入口點會調(diào)用 _cexit 清理邏輯。在調(diào)試器里設(shè)斷點看第一次異常發(fā)生在哪一步如果停在 CRT 源碼里就說明初始化路徑不對。另一個排查方向是檢查目標(biāo) EXE 是否依賴當(dāng)前目錄下的 DLL如果 DLL 沒找到入口點可能在 LoadLibrary 階段就失敗返回了。5.2 一執(zhí)行就報 0xC0000005 崩潰定位到重定位段現(xiàn)象加載成功但入口點執(zhí)行不到三行就崩潰調(diào)試器停在一條 mov 指令上崩潰地址指向一個明顯不屬于任何模塊的地址。原因大概率是重定位被跳過了。如果 EXE 的 ImageBase 是 0x400000而 VirtualAlloc 返回的是 0x1A0000那么所有絕對地址都指向了錯誤的位置。還有一種情況是重定位表解析循環(huán)寫錯了比如 SizeOfBlock 計算錯誤導(dǎo)致跳過了某些塊修復(fù)了錯誤地址。解決打印 delta 值確認(rèn)它不為 0。同時在重定位修復(fù)后把導(dǎo)入表地址隨機抽幾個打印出來和 GetProcAddress 的結(jié)果比對。如果發(fā)現(xiàn) AddressOfData 指向的地址不在 pImageBase 到 pImageBase SizeOfImage 的范圍內(nèi)基本就是重定位沒修對。還有一種玄學(xué)情況目標(biāo) EXE 是 x64 的你用了 32 位重定位邏輯去解析類型值根本匹配不上。遇到這種就先確認(rèn)目標(biāo)架構(gòu)和加載器架構(gòu)一致。5.3 頁面權(quán)限導(dǎo)致的訪問沖突RWX 段被 DEP 攔截現(xiàn)象重定位和導(dǎo)入表都修了運行時依然會偶發(fā)崩潰尤其是調(diào)用一些全局變量或者回調(diào)函數(shù)的時候。有時候加載器自己沒問題換了臺機器就崩。原因有的 EXE 代碼段和數(shù)據(jù)段對權(quán)限要求不同。全部用 PAGE_EXECUTE_READWRITE 雖然能跑但某些 API 比如 VirtualProtect 或 DEP 策略會對 RWX 段做特殊處理導(dǎo)致執(zhí)行到代碼段時被強制攔截。尤其是開啟了 CFG控制流保護的系統(tǒng)對間接調(diào)用目標(biāo)有校驗RWX 內(nèi)存塊不在白名單里就會被拒絕。解決按節(jié)區(qū)屬性分別設(shè)置內(nèi)存權(quán)限。節(jié)區(qū)表里每個 Section 有 Characteristics 字段IMAGE_SCN_MEM_EXECUTE 表示可執(zhí)行IMAGE_SCN_MEM_READ 表示可讀IMAGE_SCN_MEM_WRITE 表示可寫。分配內(nèi)存時先用 MEM_RESERVE 保留整個 SizeOfImage 地址空間再按節(jié)區(qū)用 MEM_COMMIT 逐段提交然后根據(jù) Characteristics 用 VirtualProtect 設(shè)置對應(yīng)權(quán)限。這樣代碼段是 PAGE_EXECUTE_READ數(shù)據(jù)段是 PAGE_READWRITE更接近系統(tǒng)正常加載的行為。5.4 殺毒軟件隔離 Bin 目錄下的 DLL 和 EXE現(xiàn)象編譯好的 Bin 目錄里HWSignature.dll 和 SGDownload.exe 偶爾會神秘消失或者被隔離到病毒隔離區(qū)。重新編譯后過一陣子又出現(xiàn)同樣情況。原因手動映射是一種高級監(jiān)控技術(shù)很多殺毒軟件會把“在內(nèi)存中分配 RWX 內(nèi)存 寫入代碼 跳轉(zhuǎn)到入口”識別為后門行為。工程里的 HWSignature.dll 如果做了簽名校驗邏輯也容易被靜態(tài)特征誤判。這不算加載器的邏輯錯誤但會直接影響復(fù)現(xiàn)。解決本地做加載器研發(fā)時把整個工程目錄加入殺毒軟件白名單或者干脆在虛擬機里做測試。不要在裝有重要資料的機器上反復(fù)編譯這類工程。如果你的目標(biāo)是做正常的功能封裝建議優(yōu)先考慮標(biāo)準(zhǔn) LoadLibrary GetProcAddress只有確實需要內(nèi)存加載時才動用這套方案。5.5 刪除臨時文件.bat 把正在運行的目標(biāo) EXE 刪了現(xiàn)象加載器運行過程中執(zhí)行一次批處理之后目標(biāo)程序突然閃退或者下次運行提示找不到 SGDownload.exe。原因批處理清理的是 Bin\temp 目錄。如果加載器把 EXE 寫進 temp 后還沒來得及讀入批處理就先把它刪了加載自然就失敗。如果加載器運行完后批處理立刻清理又可能刪掉一個還在被映射到內(nèi)存的文件。更隱蔽的問題是第一次加載沒有釋放文件句柄批處理刪不掉文件但把它標(biāo)記為“待刪除”進程退出后文件就消失了第二次運行就找不到。解決延遲清理時機。批處理里加一段 timeout 等待加載器完全退出或者讓加載器自己負(fù)責(zé)刪除臨時文件而不是依賴外部腳本。我現(xiàn)在的習(xí)慣是凡是需要落盤再讀入的場景文件刪除統(tǒng)一放在加載函數(shù)返回之后用 try-finally 的結(jié)構(gòu)保證任何分支退出時都會執(zhí)行清理同時清理前校驗句柄已關(guān)閉。6. 進階用法把加載器封裝成帶接口的 DLL到這一步手動加載已經(jīng)能跑通了。但實際項目里不會把加載邏輯寫死在 EXE 里而是封裝成 DLL對外暴露接口讓宿主程序通過普通 LoadLibrary 調(diào)用。這樣既方便復(fù)用也讓內(nèi)存加載的黑匣子只對調(diào)用方開一個小口。接口設(shè)計大概是這樣// MemLoader.h typedef struct _MEMLOADER_PARAMS { const char* lpFilePath; // 目標(biāo) EXE 路徑 void* lpReserved; // 保留參數(shù) HANDLE hThread; // 返回的主線程句柄 DWORD dwLoadFlags; // 0 表示只用內(nèi)存加載1 表示加載后落盤清理 } MEMLOADER_PARAMS; BOOL __stdcall MemLoadExe(MEMLOADER_PARAMS* pParams); BOOL __stdcall MemUnloadExe(HANDLE hThread);MemLoadExe 內(nèi)部完成整條加載鏈路成功返回 TRUE同時把主線程句柄存到參數(shù)里。MemUnloadExe 負(fù)責(zé)通知目標(biāo) EXE 退出并等待線程結(jié)束。如果需要更復(fù)雜的狀態(tài)反饋可以再加一個回調(diào)函數(shù)指針讓宿主主動感知加載進度。調(diào)用方只需要HMODULE hLoader LoadLibraryA(MemLoader.dll); typedef BOOL(__stdcall *PFN_Load)(MEMLOADER_PARAMS*); PFN_Load pfnLoad (PFN_Load)GetProcAddress(hLoader, MemLoadExe); MEMLOADER_PARAMS params {0}; params.lpFilePath SGDownload.exe; params.dwLoadFlags 0; BOOL bOK pfnLoad(params);封裝之后還有一個好處可以把接口結(jié)構(gòu)體版本化。如果目標(biāo) EXE 升級了函數(shù)指針數(shù)量變化了通過 nStructSize 判斷兩邊版本是否匹配不匹配直接返回錯誤而不是等到調(diào)用時崩潰。這些話聽起來簡單但真去封裝的時候你會發(fā)現(xiàn)內(nèi)存加載和 DLL 生命周期管理糾纏在一起。比如卸載時不能在目標(biāo) EXE 的線程內(nèi)部調(diào)用 VirtualFree 釋放鏡像否則會先把自己正在執(zhí)行的代碼釋放掉。正確做法是從外部線程釋放而且要先讓目標(biāo) EXE 的所有子線程退出。從那以后我每次封裝加載器都會強制走一遍“加載 → 運行 → 卸載 → 再次加載”的回歸測試特別是卸載后馬上再加載同一份鏡像的場景。這個流程能暴露絕大多數(shù)內(nèi)存管理問題希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
激情综合五月| 丁香色影院| 日韩在线婷婷五月天综合| 91色吧网| 婷婷五月超碰| 97超喷视频在线观看| 综合色播| 思思热在线观看| 91热er| Www.久久| 91狼友视频网页更新| 极品五月天| 日本色图综合| 2020日日干| 五月丁香六月婷婷在线小说视频| 丁香五月天啪啪| WWW色色色COM| 五月丁香色色色| 色色五月婷| 国产激情av| 操丝袜视频影院导航| 久久色天堂| 亚洲成人丁香花| 成功精品影院| 色色色99| 极品人妻VIDEOSSS人妻| 熟妇人妻中文字幕无码老熟妇 | 精品无码久久久久久久久| 激情婷婷综合五月少妇| 五月天天丁香婷婷| 91九色最新视频| 九九av| 色播五月婷婷| 婷婷五月天无码| 亚洲乱码成人| 五月丁香花激情综合网| 国产成人99久久亚洲综合精品| 欧美丁香婷婷天天操| 在线天堂9| 91在线观看www| 成人国产欧美大片一区| 亚洲六月综合激情久久下卡| 久久网址99热| 91精品综合久久婷婷九色| 97久久超视频| 亚洲第一成人无码A片| 99国产这里只有精品| 亚洲 激情 中文| 色婷婷五月天激情| 婷婷五月激情片| 日日爱678| www.91.com黄| 天天色伊人| 五月色婷婷亚洲| 丁香五月大香蕉| 九九热中文| 综合色影院| WWW.久久久久久久| 伊人大香五月天| 狠狠舔| 99色综合网| 只有精品视频在线观看| 五月色丁香国产在线视频| 五月丁香六月激情欧美综合| 99噜噜噜在线播放| 在线日韩av| 婷婷久久色| AV成人在线播放| 欧美激情伊人| VA日本视频| 午夜青草资源| 久久久人妻| 狼人婷婷综合| 成人国产欧美大片一区| 婷婷狠狠狠爱| 另类专区在线观看| 啪啪啪五月天| 九九精品综合| 天天揷综合网| www.婷婷.com| 国内自拍97在线| 日韩AC在线免费观看| 国内熟女黄色系列| 婷婷永久在线| 九九热在线视频观看| 秋霞AV淫| 人人妖人人97| 日本a片网址| 婷久看人爽| 五月开心深深爱激情综合| 天天摸天天舔天天天天爽| 狠狠综合久久| 综合日本婷婷| 五月开心激情网| 天天色天天日| 亚洲无码影音| 丁香婷婷射| 婷婷深爱五月天| 大香蕉人妻| 99国产小视频2013| 99亚洲精品| 丁香五月天视频| 色婷婷成人色网| 亚洲综合视频网| 色亚洲中文| 婷婷五月花| 欧美人妻一区二区| 超级碰碰碰97免费| 狠狠狠色激情综合适合| 亚洲精品第一国产综合亚AV | 日日射天天射| 五月激情在线| 超碰碰碰碰| 天天干天天干天天干天天干天| 色999亚洲人成色| 色约约视频一区二区三区四区五区| 狠狠狠狠狠狠色| 第一区久久网站| 中文字幕AV在线| 97伦色婷婷| 538午夜激情| 久久婷婷一级片| 婷婷五月丁香花综合| 欧美婷婷五月天综合| www久久99| 婷婷天天五月天| www.色窝| 激情小说色五月| 超碰免费人人| 五月丁香综合啪啪| 色色五月丁香婷婷| 97人人干| 日韩欧美一区二区三区四区| 色婷婷狠狠| 9热在线视频| 五月丁香六月婷婷玖玖| 狠狠干五月| 538午夜激情| 丁香五月区| 成人va在线| 天天做天天爱| 欧日韩AV| 性做爰1一7伦| 人妻操在线看| 日本三级99人妇网站| 婷婷伊人激情婷婷| 国产av一区二区三区| 六月丁香婷婷视频综合在线观看| 色婷婷丁香五月天| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 丁香六月色婷婷欧美| 9热在线观看| 91人妻九色大屁股| 精品久久艹| 99视频精品全部免费观看| 99热这里只有精品16| 精品99视频| 婷婷五月天小说网| 久Se视频在线观看| 天天干电影| aⅤ79成人片| 婷婷激情综合| 日日操,天天操| Aaa久久| 人人噜天天上| 影视av久久久噜噜噜噜噜三级| 婷婷五月天网| 天天综合情| 色综合婷婷| 精品人妻久久久| 丁香五月婷婷色综合| 五月天另类小说久久小说网| 婷婷欧美激情综合| 无码少妇高潮喷水A片免费| 五月婷丁香久久久| 超碰国产AV| 丁香婷婷色色| 婷婷五月天xxx| 色一色综合| 99热无码| 婷婷色五月激情| 午夜色婷婷| 丁香五月天天日| 蜜桃成语时李时珍 免费| 激情久久天天| www久久艹| 99re热在线视频| Se.婷婷五月天| 国外亚洲成AV人片在线观看| 激情 婷婷| 五月婷婷AV| 超碰AV在线| 天天粽合合合合| 天天操天天干天天射| 99久热这里只有精品| 啪啪黄页网| 婷婷五月激情中文字幕| 精品久久66| 色天堂在线| 婷婷激情四射| 久久99综合网| 丁香五月六月激情久久| 五月丁香六月在线欧美| 六月丁香天堂| 九九精品网| 亚洲激情无码久久| 丁香影院五月综合| 狠狠干夜夜干| 九九综合久久| 天天色中文字幕女优AV| 黄色成人网站在线播放| 五月丁香少妇网| 激情婷婷在线| 丁香五月欧美| 色色色色色色色色色色色色色色,网站| 69人人操人人爽| 激情五月综合网最新| 久热只有这里有精品| 俺也去五月婷婷丁| 91大神操美女| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 人妻videos人妻高清| 激情色五月天| 丁香五月婷婷色| 欧美成人网婷婷综合在线| 欧洲区自拍| 欧美精品99久久久| 99re这里| 天天干夜夜b| 激情婷婷综合网| 99热免费观看| 99色在线视频| 五月丁香六月情婷婷久久| av在线免费网站 | 婷婷丁香六月天| 久久综合99| 国产av网| 国产伦亲子伦亲子视频观看| 五月丁香综合激情网| 婷婷丁香六月影视| 91se在线视频| www91久久| 日日日日日| 99热在线播放| 人人人舔人人人操人人人摸人人人97 | 九九热av| 久久久精品人妻| 六月婷婷狠狠| 九九热这里有精品视频| 色色丁香婷婷综合| 九月婷婷综合网| 熟妇人妻中文字幕无码老熟妇| 天天插综合网| 新伍月婷婷| 丁香五月天激情五月天激情五月天激情网| 亚洲色图五月丁香| 色婷婷精品视频| 亚洲精品字幕| 1000部毛片A片免费观看| 丁香五月婷婷视频| 婷婷激情五月色综合| 天堂爱爱| 日韩一区二区在线播放| www,五月天com| 秋霞少妇毛片| 丁香五月天亚洲综合| 丁香六月啪| 色五月色图| 天天日天天干天天插天天射| 五月亭亭六月激情| 天天日天天摸天天| \\五月天婷婷激情| 亚洲激情五月婷婷日日| 激情综合网,婷婷| 日韩无码专区| 热九九精品| 99精品久久久久| 殴美97色| 婷婷五月丁香综合桃花色网| 人操人人| 国产精品视频免费看| 91九色PORNY中文啦| 丁香五月激情久久麻豆| 影音先锋AV资源男人站| 九九色video| 蜜桃五月天| 国内外色色色色色成人视频| 亚洲综合另类| 五月天激情小说网| 人与禽A片啪啪| 欧美久热| 欧美日本韩国亚洲| 在线观看视频1区| 99热 精品在线| 免费看欧美成人A片无码| 色婷五月天| 色五月激情网| 少妇人妻偷人精品无码视频新浪| 96自拍视频九色在线观看| 国产美女无遮挡裸体毛片A片| 五月丁香综合激情| 丁香五月激情综合| 色五月婷婷777| 亚洲V国产V欧美V久久久久久| 99热66| 国产乱妇无乱码大黄AA片| 婷婷天堂站| 狠狠精品干练久久久无码中文字幕 | 综合久久9| 人人综合久| PORNY九色9l自拍视频成人| 丁香五月影视| 日韩人妻无码专区| WW婷婷五月天com| 久久婷婷五月综合色丁香花| 九月av在线| 大香蕉人在线65| 亚韩在线视频| 五月婷婷天天色| 襙逼网| 久热这里只有精品99re| 99精品在线播放| 婷婷五月丁香五月| 精品视频二级九九| 久久色五月| 色综合网址| 九九99精品视频在线观看| 色五月激情五月| 国产亚洲99久久精品| 在线观看国产高清视频免费网站| 99婷婷综合| 日本欧特黄色刺激一区影视久精品无码| www.日本91| 婷婷久久网| 久久网站观看免费欧洲国产| 激情五月天伊人影院| 看全色黄大色大片| 影音先锋女人AA鲁色资源| 五月日韩中文字幕| 五月天婷网| 婷婷综合亚洲| 五月丁香色狠狠干大屄| 久久精品系列| 99在线精品免费视频| AV在线免费观看不卡| 中文字幕成| 91丨熟女丨首页| 天天日天天做天天操| 少妇综合网| 丁香六月婷婷色XXXXX| 九七色色六月丁香| 日本九九九九| 激情亚洲网| 天天日,天天插| 午夜精品久久久久久久爽| 五月丁香888| 五月婷婷深深的爱| www,天天干| 色婷婷久久| 五月婷婷狠狠久久| 五月丁香网站在线播放| AV在线免费播放| 久久久国产精品黄毛片| 亚洲精品国产成人AV在线| 久久午夜理论| 色色亚洲五月天| 亚洲无码影片| 密乳视频| 婷婷五月六月丁香| www.99热在线| 另类激情网| 色色五月天婷婷| wwww.9免费视频| 国产色色在线| 久超超碰| 久久五月天免费网站| 日韩人妻无码一区二区| 五月丁香婷婷中文| 黄久久久| 婷婷久久色| 男男野外做爰全过程69| 色婷婷丁香网| 啪啪综合| 婷婷激情四射网| 天天夜天天色天天| 久久久99精品免费观看| 26uuu.| 色噜噜97视频在线观看| se.久久视频在线观看| 啄木鸟黑丝一区二区| 9热精品| 亚洲图片 丁香婷婷| 成人视频九九| 日韩成人网址| 97久久超碰| 国产美女视频久| 狠狠一日| 严洲天天插| 亚洲亚洲人成综合网络| 六月色伊人婷婷| 狠狠色色| 超碰成人电影| 乱码操操| 色五月综合在线| 天天日天天爽| 五月天激情网址| 97丁香五月| 99热8在线| 色综合天天网| 色欲一区二区三区精品A片| 99色综合| 婷婷色色网| 成人五月天综合网| 六月丁丁香| 五月激情丁香久久综合网| 五月天亭亭俺也| 99ri视频| 九九热精品| 天天做天天爱天天爽夜夜揉| 色婷婷狠狠18禁| 丁香六月激情综合| 天天射影院| 99思思在线视频| 综合五月婷婷| 另类激情五月| 西西4r午夜剧场| 五月天伊人手机在线播放AV| 久久久五月天婷婷成人网| 激情色视频| 极品五月天| 草五月| www.久久爱.com| 婷婷久久五月| 综合久色五月| 婷婷色综合网日韩国产| 日本五月天网站| 久99久精品视频| 另类图片天天影视在线观看| 这里只有精品,日韩视频| a网站免费观看| 日韩av干| 99内射视频| 婷婷中文无码| 国产色婷婷亚洲| 色婷青青| 婷婷五月天网址| 99日在线视频| 久久er99热精品一区二区| 99久久精品网| 五月丁香毛片| 色五月综合网| 99热只有这里才是精品| 欧洲一区二区| BBWCUCKOLD精品熟妇| 亚洲AV成人无码久久精品老人法拉利| 久久婷婷夜| 色婷婷av在线观看| 开心五月丁香啪| 激情骚五月| 伊人久久婷婷| 人人舔天天| 婷婷五月天网址| 亚洲激情综合| 欧美激情综合五月色丁香| 日本激情91| 成人综合网站| 色色色网站| 婷婷激情五月天综合| 伊人久久大香线蕉精品| 大香蕉天堂| 97婷婷丁香五月天激情图片| 久久综合色五月| 99热免费| 99超级碰碰| 五月天婷婷自拍图片在线观看| WWW色色色COM| 99这里都是精品| 色激情五月| 婷婷丁香五月天哟啪| 91狼友视频在线观看| 丁香五月首页| 久久婷婷五月综合色和| 天天弄天天爽| 亚洲AV综合网| 五月婷婷久久爱| 91精品综合久久久久久五月丁香| 第五色色色婷婷| 99热6这里只有精品6| 婷婷六月色情| 婷婷狠狠干| 婷色五月| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 婷婷五月天AV在线| 俺去啦综合网| 色婷婷五月天天天做| 日韩99视频| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 亚洲V国产V欧美V久久久久久| 天堂综合久| www.五月天。com| 99色视频在线观看最新| 五月天丁香花婷婷| 久草婷婷网 | 丁香六月婷婷综合在线| 97婷婷丁香五月天激情图片| 大香网伊人久久综合| 99ri国产精品| 狠狠色噜噜狠| 亚洲精品白浆高清久久久久久| 五月天操逼网| 久久婷婷视频| 色婷婷五月天视频在线| 婷婷五月天日日日干干干| 九九精品网站| www.婷婷亚洲基地| 色色五月婷婷久久| 99碰在线视频| 超碰永久在线| 久久久五月天婷婷| 九色在线五月婷婷网址| 无码少妇高潮喷水A片免费| 99热官网| 99热这里只有精品3| 九九大香蕉黄色影院| 六月丁香影院| 丁香婷婷十月| 色狠狠色综合| 五月花激情| 天堂AV在线看| 91wwmm导航| 操操操操操电影网| 五月丁香黄色| 思思久久99热只有频精品66| www.开心激情| 俺也高清无码高清视频| 天天爽天天爽视频| 五月天播播| 天天爽,夜夜爽| 丁香五月区| 综合色色色色色色| 五月婷婷六月丁香在线| 欧美性色视频| 五月婷婷与六月丁香图片激情| 丁香 亚洲 久久| 精品人妻伦一二三区久久| 五月丁香亭亭| 人妻人人操| 欧美精品999| 九九视频这里只有精品| 99无码精品| A片试看120分钟做受视频红杏 | 色五月色图| 青青草tp| 婷婷精品| 97超美国视频在线观看| 亚洲成Av人片乱码色第1集| 伊人三级激情| 91seav| 激情丁香婷婷六月天| 色综合久久88色综合天天人守婷| 另类图片婷婷五月天| 丁香五月婷综合网| 欧美五月婷婷| 99这里有精品| 欧美激情-区二区三区| 人妻激情视频| 伊人五月天日日夜夜久久久天天| 天天操夜夜肏| 久久婷婷五月综合啪| 久久精品99| 免费视频WWW在线观看网站| 在线播放 精品| 色 五月 天 婷婷 丁香 九月| 91久久综合亚洲鲁鲁五月天| 婷婷五月天无码视频| 婷婷五月综合视频| 狠狠丁香| 伊人五月婷| 五月婷婷丁香啪啪| 在线VA视频| 99这里只有精品|v| 日本丁香五月| 亚洲欧美国产A片免费观看| 7超碰自拍| hd五月婷婷在线| 成人va在线播放| 26uuu精品国产| 99热国产在线| 丁香五月影院| 开心五月深爱婷婷| 久久精彩免费视频| 91干网| 国产99美少妇| 五月天婷婷丁香| 五月色综合| 亚洲婷婷综合视频| 秋霞午夜理论| 久久狠狠干| 91夫妻视频| 99九九在线观看免费| 开心激情久久久久久久| 九九热九九| 开心五月婷婷伊人| 可以免费看av网站| 婷婷久久免费| 亚洲天堂婷婷| 夜夜爽天天| 久久天天| 亚洲黄色操逼| 99热久久这里只有精品| 婷婷射综合| 五月激情综合婷婷| 九热在线这里有精品6| 婷婷五月丁香超碰| 中文字幕综合色| 婷婷5月色| 玖玖在线| 牛牛色av| 99成人小视频| 69精品人人人人| 婷婷精品在线| 色婷婷久久| a级毛片一区二区免费视频| www。狠狠干。com| 日本99久久| 97人妻碰碰碰久久| 六月婷婷九月丁香亚洲综合| 成人综合网站| 婷婷激情五月天天天开心| 日本WWW九九九| Caoporn公开| 森林影视大全,最好看的2019年视频 | 超碰在线日夜| 99超在线| 激情婷婷六月天| 亚洲色图五月丁香| 精品色色| 九9九9无码| 色99欧洲色19| 婷婷视频在线碰| 久久五月婷综合网| 欧美顶级少妇做爰HD| 久久综合丁香五月| 开心深爱激情网| 九九色综合网| 99热青青草| 激情综合色婷婷啪啪六月天| 九九热在线视频观看| 91狼友视频网页更新| 狠狠色五月| 亚洲欧美在线观看| 79色色免费| 国产婷婷色综合AV蜜臀AV | 国产色色网址网站| 人妻丰满精品一区二区A片| 狠狠五月激情在线| 丁香五月社区| 色情五月天首页| 色伊人91在线视频| 欧美激情综合色综合色| 国产AV网页| 久久六月天| 欧美毛卡| 婷婷的99视频网站| 五月色综合| 婷婷中文字幕| www天天干| av高清无码| 天天看夜夜看| a色婷婷| 亚洲人妻Av| www.婷婷五月天.com| 五月婷综合| 欧美日韓成人亚洲精品另类| 国产婷婷婷| 婷婷欧美激情| 色噜噜狠狠色综合网| 91久久婷婷| 丁香婷婷综合精品六月初| 国自产拍偷拍精品啪啪一区二区| 99热精品一| 久久五月天丁香| 天天日日夜夜| 99色精品视频| 丁香,开心成人,久久| 五月天啪啪| 久久综合婷婷五月| 婷婷亚洲综合| 五月花亭亭| 色九九七七| 色欲一区二区三区精品A片| 婷婷五六日| 97超碰色| 天天综合五月| 久久精品天| 中文字幕在线免费观看视频| 午夜青草资源| 超碰精品国产首页| 久久九九国产精品怡红院| 天天操天天谢| 啪啪99| 强辱丰满人妻HD中文字幕| 婷婷欧美激情| 噜噜噜噜婷婷五月天| 色婷婷呢狠禁久禁| 激情婷婷丁香五月天| 欧美激情丁香五月天久久婷婷一区| 狠狠色综合图片| 成人在线不卡| 人妻操操色| 久久婷婷婷| 丁香五月五月婷婷欧美大香蕉| 久久怕怕视频| 嫩草综合网| 日日操夜夜操无码免费| 99精品偷自拍| 五月激情婷婷综合| 丁香五月色情av| 99精品在线播放| 夜夜爽天操| 五月婷婷六月丁香免费| 九九精品re免费视频| AAA久久| 色婷婷五月天偷拍| 丁香婷婷六月激情| 色~性~乱~伦~噜| 婷婷亚洲在线| 天天干天天做| 丁香五月婷婷亚洲色图| 婷婷五月婷婷五月| 亚洲精品网站色视频| 午夜日韩久久久网站| 风流少妇A片一区二区蜜桃 | CAOBIBI| 欧美S码亚洲码精品M码| caop在线视频| 99热手机在线精品| 五月开心婷婷| 亚洲日本激情| 丁香五月首页| 麻豆精品| 欧美五月婷婷综合| 亚洲国产精品VA在线看黑人| 人妻熟妇国产精品| 久久人妻视频| ji'qi'luan'ren'lun| 五月丁香天堂网婷婷| 91精品久久久久| 色五月自偷自拍婷婷婷婷| 91无码一区人妻A片蜜| 色婷婷丁香五月| 亚洲另类婷婷综合| 九九无码| 开心五月网| 99热99这里只有精品| 五月丁香综合伦理片| 九九这里只有精品在线视频| 九色自拍| 超碰99久久| 色婷婷狠狠久久YY| 五月丁香六月婷婷综合| 五月婷婷综合天天操| 2025超碰| 95精品区一区二| 五月天社区| 天天干一干| 色色a| av中文在线| 五月丁香欧美综合| 天天操中文字幕| 色婷婷精品视频| 五月天激情图片| 久久久久人妻网址| 亚洲综合五月天| 激情六月丁| 五月色影院| 性色五月天| 一本色道久久综合狠狠躁小说| 99热6色| 婷婷五月天高清无码| 99热在线观看精品免费| 成人丁香五月天| 亚洲这里只有精品| 色五月激情五月开心五月| www.天天干| 超碰不卡在线| 四虎成人精品永久免费AV九九| 婷婷射丁香| www.yw尤物| 婷婷五月天在线观看| 丁香六月婷| 日日躁夜夜躁狠狠久久AV| 亚洲字幕AV一区二区三区四区| 亚洲国产精品VA在线看黑人| 艹B高清无码| 99视频综合网| 美欧成人视频| 九九九九综合| 久久久精品99亚洲综合| 色综合色综合色综合高潮| 东北婷婷五月天| 五月天婷婷丁香社区| 亚洲色网址| 久草大| 67194国产| 99热 精品在线| 色婷婷91激情小说| 婷婷色操| 天天日日夜夜爽| 综合激情五月丁香| 日本VA视频| 亚洲黄色精品| 色噜噜婷婷| 色婷婷狠狠禁18久久| 人妻中文av| 色婷婷婷婷| 亚洲婷婷月丁香五月| 激情九九这里只有精品| 国产精品色婷婷久久久精品| 日日色综合| 色五月丁香A欧美com| 秋霞丝袜啪啪啪| 噜噜噜噜婷婷五月天| 天天色天天舔天天爱天天爽| 人人操AV| 婷婷色导航| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 久久只这里有精品| 五月天六月色| 日日噜噜夜夜狠狠久久丁香六月| seuuu婷婷| 久久免费操| 丁香五月天婷婷久久| 97热这里只有精品| 亚洲中文字幕av| 超级碰碰99| 超碰人人色| 99这里是精品| 丁香五月天啪啪| 操操综合网婷婷| 色综合久久综合中文综合网| 秋霞电影理论| 亚洲六月色婷婷| 国产乱子轮XXX农村| 欧美在线视频免费播放| 婷婷色播六月无码| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 天天操夜夜玩!| 97九色视频| 综合色五月亭亭| 久久五月激情综合| 99精品7| 99久久9| 热久91| 久久久久久草黄色片AV在线观看| 九九無妻| 久久色六月| 色噜噜婷婷| 色99在线视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| aa久久| 综合一本道| 色色99| 伊人色综合影院视频| 涩涩涩.com| 91久久99久久91熟女精品| 亚洲AV无码影院| 玖久精品视频9| 99热这里有精力| 久久久久婷| 婷婷五月天电影在线| 天天爽夜夜操| 亚洲综合色色| 日本五月天网站| 91久女| 激情伊人六| 五月天激情电影| 六月婷婷色色色| 色五月天 丁香| 开心久久五月天| 色噜噜狠狠色综合成人99| 久草视频大香蕉99| 久久 这里只有精品1| 五月天婷婷成人网| 99在线热| 玖玖婷婷五月| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 五月天婷婷乱论小说| 欧美 色婷婷| 婷婷五月天激情偷拍| 亚洲成人在线播放| 亚洲情色一区| 五月天婷综合| 男人天堂AV在线一区二区| 这里只有精品视频一区| 少妇人妻丰满做爰XXX| 久这里只有精品99| 色五月激情婷婷| 五月婷婷av| 日本久热| 人人妻人人澡| 激情床戏| 色婷婷成人网| 五月婷婷狠狠干| 婷婷久久性爱| 九艹在线| 五月婷婷色综图片| 人人妻人人澡| 五月婷啪啪| 色婷婷操逼| 91vip在线观看| 97狠狠色| 9久久精品| 六月丁香啪啪| 丁香五月成人| 九九精品片一| 亚洲视频一区| tingtingzonghewang| 伊人热在线大香蕉| 五月丁香欧美在线| 96精品国产综合久久久久久| 色五XX| 成人在线观看一区| www,com,五月色色| 国产ava| 99视频在线| 婷婷偷拍网| www.夜夜| 99精品网站| 丁香婷婷综合影院| 五月婷婷婷丁香播| www.婷婷六月天| 色色色99| 久久机热这里只有 | WWW.久久久久久久| 可以看的AV| 5月婷婷6月丁香aV| 久草婷婷在线| 色亭亭五月天丁香综合AV - 百度 - 百度| 一起草aV| 亚洲综合99| 深情六月婷婷综合久久| 91在线操逼视频| 精品久久久人妻| 五月婷六月| 久久亚洲婷婷| 五月婷婷丁香色吧网| 婷婷六月色情| 激情综合网五月激情| 日日天天操| 五月丁香天堂| 久久婷婷五月综合伊人| 99热色无码| 天天操天天干天天射| 亚洲婷婷五月天| 六月99天天婷婷激情综合| 日逼AV影音先锋男人资源站| 五月天亭亭俺也| 亚洲色啪| 婷婷丁香综合网| 久久亚洲天堂| 思思99热热热99| 99只有精品9| 啪啪 综合网| 色婷婷丁香五月天在线视频| www.久操| 激情网站五月| 欧美综合激情| 亚洲天堂啪啪| 天天综合.com| 色五月婷婷激情基地| 丁香五月综合| 精品五月天| 婷婷五月天在线看| 就爱日五月天| 婷婷另类小说| 五月天另类小说| 色噜噜狠狠色综合AV兰草影视| 中文字幕丰满乱孑伦无码专区 | 99热在线观看| 五月综合激情网| 天天成人综合| 欧美三级黄色片久久| 成人午夜视频精品一区| 五月婷婷色| 丁香六月视频| 日本欧美国产| 婷婷中文字幕网站| 99熟女| 超碰熟女拍拍| 亚洲一色色色色色色色色| 人人综合91网| 欧美槡BBBB槡BBB少妇| 五月色丁香| 日韩欧美骚货| 日韩免费乱轮网站| 亚州综合色| 大香蕉AV电影在线| 婷婷爱五月天| 啪啪色区| 天天舔天天摸视频| 99热国产国产| 97在线综合| Av免费网站在线| 办公室少妇激情呻吟A片在线观看| 婷婷人人操| 亚洲亚洲永久无码777777| 99热久久这里只有精品| 婷婷五月天Av| 中文成人在线| 五月婷婷黄色网址| 五月丁香综合| 婷婷五月天av| 色五月亚洲| 色婷婷狠狠干芒果TV| 亚洲五月婷婷在线| 五月丁香色色网| 桃色五月天| 国产色五月| RenRenSe在线视频网站| 久久久久久久综合狠狠综合| 丁香九月综合激情| 九九人人看| 色婷婷丁香AV综合| 婷婷99视频在线| 丁香久久| 婷婷激情图片| 亚洲精品亚洲人成人网| 五月天激情国产综合婷婷婷| 激情综合色播| www.ppypp| 人人干AV| 亚洲AAAA网| 激情婷婷综合| 888精品福利地址| 91碰碰碰| 久久久久9| 中文资源在线a | 五月婷婷天天色| 天天色情站| 国产1区2区3区在线观| 99熟女| 五月丁香香蕉| 五月婷婷AV| 综合网色| 婷婷综合| 99热在线观看免费中文| 91超碰在线观看| 99热这里只有精品1025| 欧美激情综合色综合啪啪五月| 色婷婷精品视频| 久热伊人9| 五月天婷综合| 激情图片婷婷| 五月丁香久人妻中文| 狠狠狠狠狠狠色| 六月99天天婷婷激情综合| 大香蕉九操| 亚洲成人网站在线观看| 伊人久久婷婷| 9九热视频| 天天网站天天爽| 激情五月丁香在线观看直播| 丁香五月网| 五月天俺去也| 五月丁香六月婷婷操操操| 丁香六月久久| 久久99久久99精品免观看粉嫩| 中美月韩免费A片| 色五月色五天色情网| 五月丁香成人网| 五月天婷婷三级黄| 五月丁香六月婷婷色| 伊人色综在线| 裸体美女丁香五月天。| www.91婷婷| 久久国产色| 天堂成人A片永久免费网站| 日韩黄色影院| 五月丁香婷婷色播无码| www一起操| 久久大香蕉| 青草久久五月婷伊人| 日日夜夜小色哥| 天天做天天爱天天玩| 操99| 精国产品一区二区三区A片| 在线视频婷婷| 日本99视频精品免费播放| 99精品在线播放| 激情婷婷丁香色五月综合| www.亭亭五月天| www.99精品在线| 91狠狠综合久久| 久久性都花花世界成人免费视频| 4438国产免费看| 怡红院 久久| 五月丁香六月婷婷玖玖| 夜夜躁爽日日| 九九这里有精品| 超碰免费人人肏| 久天综合| 另类丁香五月天区图| 婷婷激情视频欧美视频自拍视频欧美剧| 91热在线| 国产人妻777人伦精品HD| 色婷婷综合在线| 色色综合色视频| 婷婷五月天偷拍| 99综合免费视频| 婷婷五月天天| 色欲九区| 婷婷五月开心中文字幕在线| 四月婷婷五月丁香| 97在线视频观看| 色原狠狠综合| 丁香六月婷婷综合色| 九九99视频| 色色色99| 日本少妇AA一级特黄大片| site:xiongshengzz.com| 五月丁香人妻| 婷婷中文字幕| 99热一本| 天天草天天舔| 色五月婷婷91| 国产高清av黄色看片| 人妻久热| 五月综合缴情网| 第五色婷婷| 激情五月婷婷啪啪| 激情综合网婷婷久久| 国产亚洲精品久久一区二区三区| 欧美槡BBBB槡BBB少妇| 99精品高潮| 五月天性色| 久久五月天婷婷| Av在线资源| 婷婷黄色五月天在线视频| 免费97碰碰| 久综合4| 人妻久久做| 久久狠狠干| 99热伊人综合| 2025最新亚洲激情在线| 一起草Av| 人人干人人操外国| 天色综合网站| 色五月婷婷综合| 极品另类| 亚洲小视频| 少妇熟女视频一区二区三区| se99高清无码| 五月婷婷久久激情 | 人妻久久婷婷| av婷婷丁香| AV天堂淫乩| 婷婷色五月天在线观看| 久久在线大香蕉| 色狠狠色噜噜噜a天堂一区| 狠狠干狠狠色| www.久久久.com| 色播五月婷婷| 狠狠爱丁香婷| 婷婷在线午夜| 九九色综合| 丁香婷婷色五月| 久久网日本| 五月天婷婷AV| 99在线精品视频在线观看| 色婷青青| 一本道综合网| 激情综合色| 婷婷五月天国产精品| 五月婷婷熟女| 国产无人区大片| 五月婷婷视频在线观看| 国产黄色大片| 五月天激情社区| 2025超碰| AⅤ色区| tingtingzonghewang| 色综合色色| 色呦呦免费观看| 中文字幕av在线| 超碰男人色| 亚洲性爱电影| 成人综合视频在线| 99热资源在线| 五月99久久| 色婷婷五月综合在线| 99热狠狠操| 五月天婷婷基地| 久99久视频免费观看| 类似婷婷激情综合网站| 欧美日韩国产一区二区| 99热8| 91精品久久久久久久久| 婷婷六月天天| 九九99精品视频| 日韩另类| 99无码视频| 天天综合精品| 丁香婷婷免费| 国产在线网| 婷婷五月天美女视频| 182无码| 六月丁香VA| 在线视频99| 亚洲av综合网| 伊人婷婷青青cao| 五月天精品| www.五月激情红色| 欧美三级视频| 99色视频在线| 丁香婷婷五月综合影院| 九月激情网| 欧美激情五月综合| 国产成人精品一区二三区熟女在线| 五月丁香在线国产| 热99视频精品在线| 色五月人妻| 99自拍网| 五月天激情四射| 丁香六月成人网| 丁香五月天激情四射网络不好| 天天爱天天狠天天透| 色色免费网站| 日本天天操| 夜夜骑福利资源| 婷婷综合在线播放| 色色色成人网| 中文aV网| 国产亚洲色婷婷久久99精品9j| 九九干视频| 久久婷婷成人视频| 丁香激情综合| 久久丁香综合| 99热久| 婷婷五月丁香基| 狠狠爱婷婷丁香| 亚洲小视频免费看| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 伊人网碰碰| 六月欧美综合色情| 超碰免费人人肏| 99热综合在线| 婷婷五月天少妇| 激情婷婷。| 免费黄色视频网址| www.五月天性.com| 99免费青青蜜臀| 99热8| www,av好吊操| 在线播放中文字幕| 日本二级毛片二级毛片| 深爱五月天| 五月天免费色| 影音先锋天天日| 亚洲中文字幕在线观看| 99在线播放| 婷婷五月天成人| 五月婷婷婷婷网| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 欧美三级视频下载| 九九人人操|