DLL注入 APC注入

2021-08-31 21:46:10 字數 2242 閱讀 3711

apc注入

apc注入的原理是利用當執行緒被喚醒時apc中的註冊函式會被執行的機制,並以此去執行我們的dll載入**,進而完成dll注入的目的,其具體流程如下:

1)當exe裡某個執行緒執行到sleepex()或者waitforsingleobjectex()時,系統就會產生乙個軟中斷(或者是messagebox彈窗的時候不點ok的時候也能注入)。

2)當執行緒再次被喚醒時,此執行緒會首先執行apc佇列中的被註冊的函式。

3)利用queueuserapc()這個api可以在軟中斷時向執行緒的apc佇列插入乙個函式指標,如果我們插入的是loadlibrary()執行函式的話,就能達到注入dll的目的。

核心函式:

侷限:這種注入方式侷限性很明顯,一是必須要等待時機,而是當注入成功後,sleepex或者其他等待函式直接就會跳過當前等待繼續往下走,這樣可能造成被注入程式的不穩定行,經常導致被注入程式崩潰。

**:

// loadexewin32.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #include #include #include #pragma comment(lib, "shlwapi.lib")

#pragma comment(lib,"ntdll.lib")

using namespace std;

//根據程序名字獲取pid

dword getpidfromname(wstring wsprocessname)

processentry32w pe = ;

bool bok;

for (bok = process32firstw(hsnapshot, &pe); bok; bok = process32nextw(hsnapshot, &pe))

}closehandle(hsnapshot);

return 0;

}//把wccacheindllpath dll檔案注入程序wsprocessname

bool injection_apc(const wstring &wsprocessname ,const wchar wccacheindllpath)

pvoid lpdata = virtualallocex(hprocess,

null,

1024,

mem_commit,

page_execute_readwrite);

dword dwret;

if (lpdata)

closehandle(hprocess);

//開始注入

threadentry32 te = ;

//得到執行緒快照

handle handlesnap = createtoolhelp32snapshot(th32cs_snapthread ,0);

if (invalid_handle_value == handlesnap)

bool bstat = false;

//得到第乙個執行緒

if (thread32first(handlesnap,&te))

//關閉控制代碼

closehandle(handlethread);

} }

//迴圈下乙個執行緒

} while (thread32next(handlesnap,&te));

} closehandle(handlesnap);

return bstat;

}//adds a user-mode asynchronous procedure call (apc)

int main(int argc, char* argv)

然後寫乙個測試dll:

然後再寫乙個被注入程式:

測試結果:

注入自己的程式成功:

DLL注入 APC注入

apc注入的原理是利用當執行緒被喚醒時 apc中的註冊函式會被執行的機制,並以此去執行我們的 dll載入 進而完成 dll注入的目的,其具體流程如下 1 當exe 裡某個執行緒執行到 sleepex 或者waitforsingleobjectex 時,系統就會產生乙個軟中斷 或者是messagebo...

通過非同步過程呼叫 APC 注入DLL

關於apc的介紹,可以參考msdn對asynchronous procedure calls的介紹 索引apcs 下面是簡單翻譯的一段文字。apc asynchronous procedure calls,非同步過程呼叫 是指在乙個特定的執行緒環境中非同步的執行 當乙個apc被新增到乙個執行緒的ap...

通過非同步過程呼叫 APC 注入DLL

關於apc的介紹,可以參考msdn對asynchronous procedure calls的介紹 索引apcs 下面是簡單翻譯的一段文字。apc asynchronous procedure calls,非同步過程呼叫 是指在乙個特定的執行緒環境中非同步的執行 當乙個apc被新增到乙個執行緒的ap...