程式設計實現APC注入dll到程序

2021-10-09 17:53:07 字數 1993 閱讀 2868

執行緒被喚醒時apc中的註冊函式會被執行,因此使用queueuserapc向apc佇列插入函式即可完成注入

#include #include #include bool apcinject(char *,char *);

dword getprocessidbyprocessname(char *);

bool getallthreadidbyprocessid(dword,pdword,pdword);

void main ()

bool apcinject(char *processname,char *dllname)

//獲取程序id

dword threadid[max_path]=;

dword dwthreadidlength=0;

bool ret = getallthreadidbyprocessid(dwprocessid,threadid,&dwthreadidlength);

if (false == ret)

//獲取注入程序所有執行緒id

handle hprocess = openprocess(process_all_access,false,dwprocessid);

if (null == hprocess)

//開啟注入程序

size_t dwdllpathlen = 1+strlen(dllname);//dll名稱長度

lpvoid bassaddress = virtualallocex(hprocess,null,dwdllpathlen,mem_commit | mem_reserve,page_execute_readwrite);

if (null == bassaddress)

//程序空間申請記憶體

size_t dwret;

writeprocessmemory(hprocess,bassaddress,dllname,dwdllpathlen,&dwret);

if (dwret != dwdllpathlen)

//寫入dll到程序記憶體

lpvoid ploadlibraryafunc = getprocaddress(getmodulehandlea("kernel32.dll"), "loadlibrarya");

if (null == ploadlibraryafunc)

//獲取loadlibrary函式位址

DLL注入 APC注入

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

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...