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