DLL注入 APC注入

2021-07-24 21:46:18 字數 2416 閱讀 7164

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:

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

測試結果:

注入自己的程式成功:

隨便嘗試了下注入qq.exe,直接崩潰退出了。

DLL注入 APC注入

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

通過非同步過程呼叫 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...