直接上**了
#pragma once
#include
#include
#include
int fmethod(char * c_str);
bool loaddll(dword dwprocessid,lptstr lpszdllname);
#include "fmethod.h"
int fmethod(char * c_str)
bret = process32next(hprocesssnap,&processentry);
}return 0;
}// 讓指定的程序載入dll
bool loaddll(dword dwprocessid,lptstr lpszdllname)
printf("開啟程序 %d 成功!\n\n",dwprocessid);
// 分配遠端空間
int cch = 1 + strlen(lpszdllname);
pszdllfile = (pstr)virtualallocex(hprocess,
null,
cch,
mem_commit,
page_readwrite);
if(pszdllfile == null)
return false;
printf("分配遠端空間成功!\n\n");
// 把dll的名字變數位址寫入到遠端空間中
if((writeprocessmemory(hprocess,
(pvoid)pszdllfile,
(pvoid)lpszdllname,
cch,
null)) == false)
printf("寫遠端記憶體成功!\n\n");
// 獲取遠端程序位址空間中loadlibrary函式的位址
pthread_start_routine pfnthreadrtn = (pthread_start_routine)getprocaddress(getmodulehandle("kernel32"),"loadlibrarya");
//因為在同乙個系統中,這這loadlibrarya位址是一樣的,這下面這種都可行
//pthread_start_routine pfnthreadrtn = (pthread_start_routine)loadlibrarya;
if(pfnthreadrtn == null)
return false;
printf("獲取loadlibrary函式位址成功!\n\n");
// 建立遠端執行緒
hthread = createremotethread(hprocess,
null,
0,pfnthreadrtn,
(pvoid)pszdllfile,
0,null);
if(hthread == null)
return false;
printf("建立遠端執行緒成功!\n\n");
// 等待遠端執行緒執行結束,並非必要
//system("pause");
waitforsingleobject(hthread,infinite);
virtualfreeex(hprocess,(pvoid)pszdllfile,0,mem_release);
closehandle(hthread);
closehandle(hprocess);
return true;
}
#include
#include "fmethod.h"
int main()
c 實現dll注入其它程序
dll注入技術才具有強大的功能和使用性,同時簡單易用,因為dll中可以實現複雜的功能和很多的技術。技術要點 1 宿主程序呼叫loadlibrary,就可以完成dll的遠端注入。可以通過createremotethread將loadlibrary作為宿主程序的乙個執行緒來啟動,就可以完成 控制目標程序...
C 實現遠端注入DLL技術要點總結
現將遠端注入dll的實現方法總結如下 steps 2.為你要操作控制的proc 這裡成為目標proc new乙個執行緒,使用windows中的handle createremotethread 具體使用查閱msdn,有很好的說明 但是,在使用createremotethread時要注意對執行緒函式的...
用hook實現dll注入詳解
需要乙個用來注入的dll inject.dll 及乙個呼叫程式 caller.exe 流程 caller.exe procedure testhook var pwnd,hchild,hwndinject hwnd msg tmsg begin 通過視窗標題用findwindow找到要注入的程式的主...