執行緒遠端注入

2021-05-22 03:20:00 字數 1184 閱讀 7592

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

#include

#include "wtypes.h"

//typedef unsigned long dword;// 為了在程式中使用dword,可以include wtypes.h,也可以使用該行定義

//先定義引數結構

typedef struct _remotepararemotepara, * remoteparam;

//定義messagebox型別的函式指標

typedef int (__stdcall * pfn_messagebox)(hwnd, lpctstr, lpctstr, dword);

//執行緒函式定義

int __stdcall threadproc (void *lppara)

//提公升程序訪問許可權

bool enabledebugpriv()

if (!lookupprivilegevalue(null, se_debug_name, &sedebugnamevalue))

tkp.privilegecount = 1;

tkp.privileges[0].luid = sedebugnamevalue;

tkp.privileges[0].attributes = se_privilege_enabled;

if (!adjusttokenprivileges(htoken, false, &tkp, sizeof(tkp), null, null))

return true;

}int main(int argc, char* argv)

//啟動執行緒

handle hthread = ::createremotethread (hwnd ,0,0,(dword (__stdcall *)(void *))premotethread ,premoteparam,0,&byte_write);

if(!hthread)

closehandle(hthread);

return 0;

}

遠端執行緒注入

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

遠端執行緒注入

dll程式 1 獲取程序控制代碼 2 計算dll路徑名長度,並且要加上0結尾的長度 3 在目標程序分配記憶體 4 拷貝dll路徑名到目標程序的記憶體 5 獲取模組位址 6 獲取loadlibrarya函式位址 7 建立遠端執行緒,載入dll 8 關閉控制代碼 1 獲取程序控制代碼 獲取程序控制代碼 ...

注入系列 遠端執行緒注入

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