免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Dll注入經(jīng)典方法完整版

Pnig0s1992:算是復(fù)習(xí)了,最經(jīng)典的教科書式的Dll注入。

總結(jié)一下基本的注入過(guò)程,分注入和卸載

注入Dll:

1,OpenProcess獲得要注入進(jìn)程的句柄

2,VirtualAllocEx在遠(yuǎn)程進(jìn)程中開辟出一段內(nèi)存,長(zhǎng)度為strlen(dllname)+1;

3,WriteProcessMemory將Dll的名字寫入第二步開辟出的內(nèi)存中。

4,CreateRemoteThread將LoadLibraryA作為線程函數(shù),參數(shù)為Dll的名稱,創(chuàng)建新線程

5,CloseHandle關(guān)閉線程句柄

卸載Dll:

1,CreateRemoteThread將GetModuleHandle注入到遠(yuǎn)程進(jìn)程中,參數(shù)為被注入的Dll名

2,GetExitCodeThread將線程退出的退出碼作為Dll模塊的句柄值。

3,CloseHandle關(guān)閉線程句柄

3,CreateRemoteThread將FreeLibraryA注入到遠(yuǎn)程進(jìn)程中,參數(shù)為第二步獲得的句柄值。

4,WaitForSingleObject等待對(duì)象句柄返回

5,CloseHandle關(guān)閉線程及進(jìn)程句柄。

  1. //Code By Pnig0s1992 
  2. //Date:2012,3,13 
  3. #include <stdio.h> 
  4. #include <Windows.h> 
  5. #include <TlHelp32.h> 
  6.  
  7.  
  8. DWORD getProcessHandle(LPCTSTR lpProcessName)//根據(jù)進(jìn)程名查找進(jìn)程PID 
  9.     DWORD dwRet = 0; 
  10.     HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 
  11.     if(hSnapShot == INVALID_HANDLE_VALUE) 
  12.     { 
  13.         printf("\n獲得進(jìn)程快照失敗%d",GetLastError()); 
  14.         return dwRet; 
  15.     } 
  16.  
  17.     PROCESSENTRY32 pe32;//聲明進(jìn)程入口對(duì)象 
  18.     pe32.dwSize = sizeof(PROCESSENTRY32);//填充進(jìn)程入口對(duì)象大小 
  19.     Process32First(hSnapShot,&pe32);//遍歷進(jìn)程列表 
  20.     do  
  21.     { 
  22.         if(!lstrcmp(pe32.szExeFile,lpProcessName))//查找指定進(jìn)程名的PID 
  23.         { 
  24.             dwRet = pe32.th32ProcessID; 
  25.             break; 
  26.         } 
  27.     } while (Process32Next(hSnapShot,&pe32)); 
  28.     CloseHandle(hSnapShot); 
  29.     return dwRet;//返回 
  30.  
  31. INT main(INT argc,CHAR * argv[]) 
  32.     DWORD dwPid = getProcessHandle((LPCTSTR)argv[1]); 
  33.     LPCSTR lpDllName = "EvilDll.dll"; 
  34.     HANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,dwPid); 
  35.     if(hProcess == NULL) 
  36.     { 
  37.         printf("\n獲取進(jìn)程句柄錯(cuò)誤%d",GetLastError()); 
  38.         return -1; 
  39.     } 
  40.     DWORD dwSize = strlen(lpDllName)+1;  
  41.     DWORD dwHasWrite; 
  42.     LPVOID lpRemoteBuf = VirtualAllocEx(hProcess,NULL,dwSize,MEM_COMMIT,PAGE_READWRITE); 
  43.     if(WriteProcessMemory(hProcess,lpRemoteBuf,lpDllName,dwSize,&dwHasWrite)) 
  44.     { 
  45.         if(dwHasWrite != dwSize) 
  46.         { 
  47.             VirtualFreeEx(hProcess,lpRemoteBuf,dwSize,MEM_COMMIT); 
  48.             CloseHandle(hProcess); 
  49.             return -1; 
  50.         } 
  51.  
  52.     }else 
  53.     { 
  54.         printf("\n寫入遠(yuǎn)程進(jìn)程內(nèi)存空間出錯(cuò)%d。",GetLastError()); 
  55.         CloseHandle(hProcess); 
  56.         return -1; 
  57.     } 
  58.  
  59.     DWORD dwNewThreadId; 
  60.     LPVOID lpLoadDll = LoadLibraryA; 
  61.     HANDLE hNewRemoteThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)lpLoadDll,lpRemoteBuf,0,&dwNewThreadId); 
  62.     if(hNewRemoteThread == NULL) 
  63.     { 
  64.         printf("\n建立遠(yuǎn)程線程失敗%d",GetLastError()); 
  65.         CloseHandle(hProcess); 
  66.         return -1; 
  67.     } 
  68.  
  69.     WaitForSingleObject(hNewRemoteThread,INFINITE); 
  70.     CloseHandle(hNewRemoteThread); 
  71.  
  72.     //準(zhǔn)備卸載之前注入的Dll 
  73.     DWORD dwHandle,dwID; 
  74.     LPVOID pFunc = GetModuleHandleA;//獲得在遠(yuǎn)程線程中被注入的Dll的句柄 
  75.     HANDLE hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)pFunc,lpRemoteBuf,0,&dwID); 
  76.     WaitForSingleObject(hThread,INFINITE); 
  77.     GetExitCodeThread(hThread,&dwHandle);//線程的結(jié)束碼即為Dll模塊兒的句柄 
  78.     CloseHandle(hThread); 
  79.     pFunc = FreeLibrary; 
  80.     hThread = CreateRemoteThread(hThread,NULL,0,(LPTHREAD_START_ROUTINE)pFunc,(LPVOID)dwHandle,0,&dwID); //將FreeLibraryA注入到遠(yuǎn)程線程中去卸載Dll 
  81.     WaitForSingleObject(hThread,INFINITE); 
  82.     CloseHandle(hThread); 
  83.     CloseHandle(hProcess); 
  84.     return 0; 

 

本文出自 “About:Blank H4cking” 博客,請(qǐng)務(wù)必保留此出處http://pnig0s1992.blog.51cto.com/393390/804484

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
更新了已經(jīng)過(guò)測(cè)試-Windows下如何改寫目標(biāo)進(jìn)程的窗口函數(shù)來(lái)注入DLL
[Win32] DLL注入技術(shù)
DLL的遠(yuǎn)程注入技術(shù)詳解
CloseHandle(),TerminateThread(),ExitThread()的區(qū)別
Windows下實(shí)現(xiàn)進(jìn)程保護(hù)
[翻譯]多種DLL注入技術(shù)原理介紹
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服