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

2021-08-10 01:36:07 字數 1662 閱讀 7794

關於apc的介紹,可以參考msdn對asynchronous procedure calls的介紹(索引apcs),下面是簡單翻譯的一段文字。

apc(asynchronous procedure calls,非同步過程呼叫)是指在乙個特定的執行緒環境中非同步的執行**。當乙個apc被新增到乙個執行緒的apc佇列的時候,系統會產生乙個軟中斷;當執行緒下一次被排程的時候apc函式將被執行。作業系統產生的apc稱為核心模式apc,應用程式產生的apc稱為使用者模式apc。只有當執行緒處於可喚醒狀態(alertable state),使用者模式的apc才會被執行。

如果要通過queueuserapc來注入dll模組,可以向指定程序的每乙個執行緒(增加執行機會)都插入乙個apc,然後把loadlibrary作為apc函式的過程函式,把dll路徑字串作為過程函式的引數。

示例**:

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

4445

4647

4849

5051

5253

5455

5657

5859

6061

6263

6465

6667

6869

7071

7273

7475

7677

7879

8081

8283

8485

8687

8889

9091

9293

9495

96

#include 

#include

#include

#include

#define check_null_ret(bcondition) if (!bcondition) goto exit0

bool enabledebugprivilege(

void) 

bool apcinject(dword dwpid, char *pszdllpath)

} te32.dwsize

=sizeof

(threadentry32)

; bret = thread32next(hsnapshot, &te32);}

exit0:

// virtualfreeex

closehandle(hsnapshot)

; closehandle(hprocess)

;// do not check this value

return bret;

}int main(

int argc, char

**argv)

apcinject(

atoi

(argv[1]

), argv[2]

);return

0;

}

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

核心中通過給執行緒插apc注入dll

void apcloaddll pvoid normalcontext,pvoid systemargument1,pvoid systemargument2 void apcloaddllend pmdl pmdl null void apckernelroutine in struct kapc...