遠端執行緒注入

2021-10-25 06:28:24 字數 3013 閱讀 4307

dll程式:

1、獲取程序控制代碼

2、計算dll路徑名長度,並且要加上0結尾的長度

3、在目標程序分配記憶體

4、拷貝dll路徑名到目標程序的記憶體

5、獲取模組位址

6、獲取loadlibrarya函式位址

7、建立遠端執行緒,載入dll

8、關閉控制代碼

1、獲取程序控制代碼

//獲取程序控制代碼

hprocess = openprocess(process_all_access,false,dwprocessid);

if(hprocess == null)

2、計算dll路徑名長度,並且要加上0結尾的長度

//計算dll路徑名長度,並且要加上0結尾的長度

dwlength = strlen(szdllpathname) + 1;

3、在目標程序分配記憶體

//在目標程序分配記憶體

lpallocaddr = virtualallocex(hprocess,null,dwlength,mem_commit,page_readwrite);

if(lpallocaddr == null)

4、拷貝dll路徑名到目標程序的記憶體

//拷貝dll路徑名到目標程序的記憶體

bret = writeprocessmemory(hprocess,lpallocaddr,szdllpathname,dwlength,null);

if(!bret)

5、獲取模組位址

//獲取模組位址

hmodule = getmodulehandle("kernel32.dll");

if(!hmodule)

6、獲取loadlibrarya函式位址

//獲取loadlibrarya函式位址 

dwloadaddr = (dword)getprocaddress(hmodule,"loadlibrarya");

if(!dwloadaddr)

7、建立遠端執行緒,載入dll

hthread = createremotethread(hprocess,null,0,(lpthread_start_routine)dwloadaddr,lpallocaddr,0,null);

if(!hthread)

8、關閉控制代碼

//關閉控制代碼 

closehandle(hprocess);

return true;

程序:

遠端注入:

//計算dll路徑名長度,並且要加上0結尾的長度

dwlength = strlen(szdllpathname) + 1;

//在目標程序分配記憶體

lpallocaddr = virtualallocex(hprocess,null,dwlength,mem_commit,page_readwrite);

if(lpallocaddr == null)

//拷貝dll路徑名到目標程序的記憶體

bret = writeprocessmemory(hprocess,lpallocaddr,szdllpathname,dwlength,null);

if(!bret)

//獲取模組位址

hmodule = getmodulehandle("kernel32.dll");

if(!hmodule)

//獲取loadlibrarya函式位址

dwloadaddr = (dword)getprocaddress(hmodule,"loadlibrarya");

if(!dwloadaddr)

//建立遠端執行緒,載入dll

hthread = createremotethread(hprocess,null,0,(lpthread_start_routine)dwloadaddr,lpallocaddr,0,null);

if(!hthread)

//關閉控制代碼

執行緒遠端注入

執行緒遠端注入的技術並不複雜,主要用到createremotethread這個api。難點有個地方,由於要注入其他程序的空間,因此,注入用的那個執行緒中的 必須使用和被注入程序的記憶體空間一致。換句話講,就是需要找到執行緒中使用的函式在遠端程序中的位址。明白這個,問題就沒有了。下面是乙個完整的執行緒...

遠端執行緒注入

本文記錄了最普通的一種dll注入方式 遠端執行緒注入,以便日後複習用。首先準備乙個要注入的dll 步驟略 準備乙個32位程式,本文使用掃雷。將掃雷和dll放在同一目錄,執行掃雷。然後編寫程式,將dll載入到掃雷的記憶體中。多位元組字符集 include include bool enabledebu...

注入系列 遠端執行緒注入

1.使用程序pid開啟程序,獲得控制代碼 2.使用程序控制代碼申請記憶體空間 3.把dll路徑寫入記憶體 4.建立遠端執行緒,呼叫loadlibrary 5.釋放收尾工作或者解除安裝dll 實現 bool cinjectdlg zwcreatethreadexinjectdll dword dwpr...