C 實現DLL注入(一)實現

2021-07-13 04:13:57 字數 1883 閱讀 7717

直接上**了

#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找到要注入的程式的主...