DLL注入技術之劫持進程創建注入

正規主題
作者: xusir98
日期: 2013-06-03
來源: 黑客反病毒 (http://bbs.hackav.com)
出處: 黑客反病毒 (http://bbs.hackav.com)
注意: 轉載請務必附帶本組信息,否則侵權必究!
DLL注入技術之劫持進程創建注入

    劫持進程創建注入原理是利用Windows系統中CreateProcess()這個API創建一個進程,並將第6個參數設爲CREATE_SUSPENDED,進而創建一個掛起狀態的進程,利用這個進程狀態進行遠程線程注入DLL,然後用ResumeThread()函數恢復進程。

1.創建掛起的進程
    下面是創建一個掛起的計算器程序進程的主要代碼:

    STARTUPINFO si = {0};
    si.cb = sizeof si;
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_SHOW;
    PROCESS_INFORMATION pi;

    TCHAR cmdline[MAXBYTE] =_T("calc.exe");
    BOOL bRet = ::CreateProcess(
        NULL,
        cmdline,
        NULL,
        NULL,
        FALSE,
        CREATE_SUSPENDED, //需要注意的參數
        NULL,
        NULL,
        &si,
        &pi);
2.向掛起的進程中進行遠程線程注入DLL
    關於遠程線程注入在這裏就不重複講述了,但是這裏需要注意一個問題,那就是CreateRemoteThread()中第6個參數,需要設爲CREATE_SUSPENDED,主要參數如下:

    //4. 創建遠程線程
    m_hInjecthread = ::CreateRemoteThread(hProcess,      //遠程進程句柄
        NULL,                                            //安全屬性
        0,                                               //棧大小
        (LPTHREAD_START_ROUTINE)LoadLibrary,             //進程處理函數    
        pszDllName,                                      //傳入參數
        CREATE_SUSPENDED,                                //默認創建後的狀態
        NULL);                                           //線程ID

3.激活進程中的線程
    這裏主要用的是ResumeThread()的這個API,需要注意的是先激活主要線程,再激活注入的線程。

    劫持進程創建注入其實就是遠程線程注入的前期加強版,他可以在進程啓動前進行注入,由於進程的線程沒有啓動,這樣就可以躲過待注入進程的檢測,提高的注入的成功率。

下載測試代碼請到原帖地址:http://bbs.hackav.com/thread-8938-1-1.html


發佈了50 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章