#include "stdafx.h"
#include
#include
#include
void usage(char *);
int main(int argc, char* argv)
__try
pszremotememory = virtualallocex(hprocess,null,30,mem_commit,page_readwrite);
if(pszremotememory==null)
if(!writeproces**emory(hprocess,pszremotememory,dll,30,null))
pthread_start_routine paddrofload = (pthread_start_routine)getprocaddress(getmodulehandle("kernel32"),"loadlibrarya");
if(paddrofload==null)
hrometethread = createremotethread(hprocess,null,0,paddrofload,pszremotememory,0,null);
if(hrometethread==null)
waitforsingleobject(hrometethread,infinite);
sleep(5000);
pthread_start_routine paddroffree = (pthread_start_routine)getprocaddress(getmodulehandle("kernel32"),"freelibrary");
if(paddroffree==null)
moduleentry32 dllmodules; dllmodules.dwsize = sizeof(dllmodules);
hsnapshot = createtoolhelp32snapshot(th32cs_snapmodule,pid);
if(hsnapshot==null)
module32first(hsnapshot,&dllmodules);
while(dllmodules.szmodule!=dll);
hrometethread2 = createremotethread(hprocess,null,0,paddroffree,dllmodules.modbaseaddr,0,null);
if(hrometethread2==null)
waitforsingleobject(hrometethread2,infinite);
}__finally
return 0;
}void usage(char *tool)
執行緒遠端注入
執行緒遠端注入的技術並不複雜,主要用到createremotethread這個api。難點有個地方,由於要注入其他程序的空間,因此,注入用的那個執行緒中的 必須使用和被注入程序的記憶體空間一致。換句話講,就是需要找到執行緒中使用的函式在遠端程序中的地址。明白這個,問題就沒有了。下面是一個完整的執行緒...
遠端執行緒技術
在windows的平臺上,dll是系統的基礎,那麼我們首先就利用dll來完成我們的遠端 執行緒。在dll中,有一個入口點函式 dllmain,其原形如下 bool apientry dllmain handle hmodule,dword ul reason for call,lpvoid lpre...
建立遠端執行緒
1 用virtualallocex函式在遠端程序的地址空間中分配一塊記憶體。2 用writeprocessmemory函式反映dll的路徑名複製到第1步分配的記憶體中 3 用getprocaddress函式來得到loadlibrary w 或a 函式在kernel32.dll的真實地址。4 用cre...
遠端執行緒注入
本文記錄了最普通的一種dll注入方式 遠端執行緒注入,以便日後複習用。首先準備一個要注入的dll 步驟略 準備一個32位程式,本文使用掃雷。將掃雷和dll放在同一目錄,執行掃雷。然後編寫程式,將dll載入到掃雷的記憶體中。多位元組字符集 include include bool enabledebu...
建立遠端執行緒
include using namespace std include include bool loaddll dword dwprocessid,char szdllpathname 2.計算dll路徑名字長度,並且要加上0結尾的長度 dwlength strlen szdllpathname ...