遠(yuǎn)程線(xiàn)程注入_第1頁(yè)
遠(yuǎn)程線(xiàn)程注入_第2頁(yè)
遠(yuǎn)程線(xiàn)程注入_第3頁(yè)
遠(yuǎn)程線(xiàn)程注入_第4頁(yè)
遠(yuǎn)程線(xiàn)程注入_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、主要函數(shù) :CreateRemote Thread()LoadLibreary()Thread()VirtualAllocEx()線(xiàn)程注入基本步驟1. 提升權(quán)限通常為 DEBUG2. 調(diào)用 OpenProcess 函數(shù)打開(kāi)目標(biāo)進(jìn)程 , 返回進(jìn)程句柄3. 申請(qǐng)空間,寫(xiě)入要注入的DLL名,返回內(nèi)存空間首地址4. 調(diào)用 GetProcAddress 函數(shù)得到 LoadLibrary 函數(shù)地址5. 調(diào)用 CreateRemoteThread 函數(shù)創(chuàng)建并啟動(dòng)線(xiàn)程 現(xiàn)在逐個(gè)解決首先,提升權(quán)限int EnableDebugPriv(const char * name) /提升進(jìn)程為 DEBUC權(quán)限HANDL

2、E hToken;TOKEN_PRIVILEGES tp;LUID luid;if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken) )printf(OpenProcessToken errorn);return 1;if(!LookupPrivilegeValue(NULL,name,&luid)printf(LookupPrivilege error!n);tp.PrivilegeCount = 1;tp.Privileges0.Attributes =SE_PRIVILE

3、GE_ENABLED;tp.Privileges0.Luid = luid;if(!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL) ) printf(AdjustTokenPrivileges error!n);return 1;return 0;該函數(shù)用于提升進(jìn)程為DEBUG權(quán)限,函數(shù)入口為進(jìn)程名2. 接下來(lái) , 得到進(jìn)程句柄OpenProcess(PROCESS_ALL_ACCESS,F(xiàn)ALSE,dwRemoteProcessId) /取得所有權(quán)3. 現(xiàn)在就開(kāi)始向系統(tǒng)申請(qǐng)所需內(nèi)存空間 char *

4、pszLibFileRemote;pszLibFileRemote=(char *)VirtualAllocEx( hRemoteProcess,NULL, lstrlen(DllFullPath)+1, MEM_COMMIT, PAGE_READWRITE); if(pszLibFileRemote=NULL)printf(VirtualAllocEx errorn);return FALSE;if(WriteProcessMemory(hRemoteProcess,pszLibFileRemote,(void *)DllFullPath,lstrlen(DllFullPath)+1,NUL

5、L) = 0)printf(WriteProcessMemory errorn);return FALSE;在往后就是得到 LoadLibraryA 函數(shù)地址PTHREAD_START_ROUTINE pfnStartAddr=(PTHREAD_START_ROUTINE) GetProcAddress(GetModuleHandle(TEXT(Kernel32),LoadLibraryA); if(pfnStartAddr = NULL)printf(GetProcAddress errorn);return FALSE;最后就是啟動(dòng)線(xiàn)程了呵呵if( (hRemoteThread = Cre

6、ateRemoteThread(hRemoteProcess,NULL,0, pfnStartAddr,pszLibFileRemote,0,NULL)=NULL)printf(CreateRemoteThread errorn);return FALSE;return TRUE;以下是完整源代碼頭文件 :#include #include #include #ifndef FUN_H#define FUN_Hint EnableDebugPriv(const char * name) /提升進(jìn)程為 DEBUC權(quán)限HANDLE hToken;TOKEN_PRIVILEGES tp;LUID l

7、uid;/ 打開(kāi)進(jìn)程令牌環(huán)if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken) )printf(OpenProcessToken errorn);return 1;/ 獲得進(jìn)程本地唯一 IDif(!LookupPrivilegeValue(NULL,name,&luid)printf(LookupPrivilege error!n);tp.PrivilegeCount = 1;tp.Privileges0.Attributes =SE_PRIVILEGE_ENABLED;tp.

8、Privileges0.Luid = luid;/ 調(diào)整進(jìn)程權(quán)限if(!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL) ) printf(AdjustTokenPrivileges error!n);return 1;return 0;注入函BOOL InjectDll(const char *DllFullPath, const DWORD dwRemoteProcessId) /數(shù)HANDLE hRemoteProcess;/ 獲得調(diào)試權(quán)限if(EnableDebugPriv(SE_DEBUG_N

9、AME)printf(add privilege error);return FALSE;/ 打開(kāi)目標(biāo)進(jìn)程if(hRemoteProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwRemoteProcessId)=NULL)printf(OpenProcess errorn);return FALSE;char *pszLibFileRemote;/ 申請(qǐng)存放 dll 文件名的路徑pszLibFileRemote=(char *)VirtualAllocEx( hRemoteProcess,NULL, lstrlen(DllFullPath)+1,MEM

10、_COMMIT, PAGE_READWRITE);if(pszLibFileRemote=NULL)printf(VirtualAllocEx errorn);return FALSE;/ 把 dll 的完整路徑寫(xiě)入到內(nèi)存,if(WriteProcessMemory(hRemoteProcess,pszLibFileRemote,(void *)DllFullPath,lstrlen(DllFullPath)+1,NULL) = 0)printf(WriteProcessMemory errorn);return FALSE;/ 得到 LoadLibraryA 函數(shù)地址PTHREAD_STAR

11、T_ROUTINE pfnStartAddr=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT(Kernel32),LoadLibraryA);if(pfnStartAddr = NULL)printf(GetProcAddress errorn);return FALSE;HANDLE hRemoteThread;/ 啟動(dòng)遠(yuǎn)程線(xiàn)程if( (hRemoteThread = CreateRemoteThread(hRemoteProcess,NULL,0,pfnStartAddr,pszLibFileRemote,0,NULL)

12、=NULL)printf(CreateRemoteThread errorn);return FALSE;return TRUE;DWORD GetProcessID(char *ProcessName) / 獲得進(jìn)程 PIDPROCESSENTRY32 pe32; pe32.dwSize=sizeof(pe32);/ 獲得系統(tǒng)內(nèi)所有進(jìn)程快照HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hProcessSnap=INVALID_HANDLE_VALUE) printf(CreateToolhelp3

13、2Snapshot error); return 0;/ 枚舉列表中的第一個(gè)進(jìn)程BOOL bProcess=Process32First(hProcessSnap,&pe32); while(bProcess)/ 比較找到的進(jìn)程名和我們要查找的進(jìn)程名,一樣則返回進(jìn)程 id if(strcmp(strupr(pe32.szExeFile),strupr(ProcessName)=0)return pe32.th32ProcessID;/ 繼續(xù)查找 bProcess=Process32Next(hProcessSnap,&pe32);CloseHandle(hProcessSnap);return

14、 0;#endif主函數(shù)文件 :#include fun.hint APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)char Path255;char DllPath255;/ 得到 widnows 系統(tǒng)路徑 GetSystemDirectory(Path,sizeof(Path);/0x00 截?cái)嘧址?,得到盤(pán)符Path3=0x00;/ 得到 IE 帶路徑文件名strcat(Path,Program FilesInternet Exploreriexplore.exe);/ 啟動(dòng) IE ,為了防止系統(tǒng)中沒(méi)有 IE 進(jìn)程WinExec(Path,SW_HIDE);/ 暫停兩秒,等待 IE 啟動(dòng)Sleep(2000);/ 得到 IE 進(jìn)程DWORD Pid=GetProcessID(iexplore.exe);/ 得到程序自身路徑GetCurrentDirectory(sizeof(DllPath),DllPath);/ 得到 DLL 帶

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論