DLL注入 遠端執行緒

2021-09-26 20:39:41 字數 1908 閱讀 3485

dll **:

#include

"stdafx.h"

#include

#include

#include

bool apientry dllmain

( hmodule hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)return true;

}

注入器**:

#include

"stdafx.h"

#include

#include

#include

#include

using namespace std;

// 程序名查pid

dword getprocesshandle

(lpctstr lpprocessname)

;while

(process32next

(hprocesssnap,

&process))}

cout <<

"沒有找到程序"

<< endl;

return0;

}int

main

(int argc,

char

*ar**)

// 為 dll 分配記憶體,並記錄基位址

dword dwsize =

strlen

(lpdllname)+1

; lpvoid lpremotebuf =

virtualallocex

( hprocess,

// 程序控制代碼

null

,// 分配的起始位址

dwsize,

// 分配的區域大小

mem_commit,

// 型別,mem_commit:分配記憶體

page_readwrite // 記憶體保護屬性,page_readwrite:可讀可寫);

// 寫入記憶體if(

!writeprocessmemory

( hprocess,

// 程序控制代碼

lpremotebuf,

// dll 基位址指標

lpdllname,

// 寫入內容的緩衝區指標

dwsize,

// 緩衝區位元組大小

null

// 接收實際寫入的位元組數))

// 建立遠端執行緒

handle hnewremotethread =

createremotethread

( hprocess,

// 程序控制代碼

null

,// 預設安全描述符,不繼承控制代碼

null

,// 預設的堆疊初始大小

(lpthread_start_routine)loadlibrarya,

// 遠端執行緒起始位址

lpremotebuf,

// 執行緒函式基位址指標

null

,// 執行緒在建立之後立即執行

null

// 不返回執行緒識別符號);

if(!hnewremotethread)

// 等待執行緒控制代碼返回

waitforsingleobject

( hnewremotethread,

// 執行緒控制代碼

infinite // 超時時間,infinite:不返回則一直等待 );

// 關閉執行緒控制代碼

closehandle

(hnewremotethread)

;getchar()

;return0;

}

效果圖:

遠端執行緒DLL注入

在其他程序中,建立乙個新的執行緒來loadlibrarya我們的dll。include include void main 給程序分配記憶體 lpvoid baseaddress char strdllname int len strlen strdllname 1 baseaddress virt...

DLL注入之遠端執行緒注入

wchar szdllname l 要注入的dll的路徑 if szdllname 0 null return 1 1 開啟程序 handle hprocess openprocess process all access,false,程序pid if hprocess invalid handle...

遠端注入DLL

ool cinject injectdll char m path,dword m id 如果開啟程序成功,則在該程序中開闢記憶體空間 this m baseaddress virtualallocex m handle,null,1024,mem commit,page execute readw...