• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: 远程  线程  注入  dll  

资源简介

把dll注入到远程线程。使用的时候创建一个空的工程,然后把代码当做主文件放到工程中,自己写个mian函数调用injectDLL函数就能注入了。菜鸟级友情提醒:64位别忘了编译成x64的可执行文件

资源截图

代码片段和文件信息

#include “stdafx.h“
#include 
#undef   UNICODE 
#include 
#include 
#include 

#define INJECT_PROCESS_NAME    “explorer.exe“ //目标进程
typedef WCHAR WPATH[MAX_PATH];
typedef DWORD64 (WINAPI *PFNTCREATETHREADEX)  
(   
PHANDLE                 ThreadHandle     
ACCESS_MASK             DesiredAccess    
LPVOID                  objectAttributes     
HANDLE                  ProcessHandle    
LPTHREAD_START_ROUTINE  lpStartAddress   
LPVOID                  lpParameter      
BOOL                    CreateSuspended      
DWORD64                   dwStackSize      
DWORD64                   dw1   
DWORD64                   dw2   
LPVOID                  Unknown   
); 

//函数前置声明 
BOOL   CreateRemoteThreadLoadDll(LPCWSTR   lpwLibFile   DWORD64   dwProcessId); 
BOOL   CreateRemoteThreadUnloadDll(LPCWSTR   lpwLibFile   DWORD64   dwProcessId); 
HANDLE MyCreateRemoteThread(HANDLE hProcess LPTHREAD_START_ROUTINE pThreadProc LPVOID pRemoteBuf);

BOOL   EnableDebugPrivilege(VOID); 
int   AddPrivilege(LPCWSTR   *Name);
void   GetWorkPath(   TCHAR   szPath[]   int   nSize   ); 

//全局变量声明 
HANDLE   hProcessSnap=NULL;     //进程快照句柄 
DWORD64   dwRemoteProcessId;       //目标进程ID 

//--------------------------------------------------------------------- 
//注入函数,调用该函数即可
int injectDll()
{
BOOL result = FALSE;
//提升权限
result = EnableDebugPrivilege();
if(result != TRUE)
{
printf(“add privilege failed!\n“);
return -1;
}
PROCESSENTRY32   pe32={0}; 
//打开进程快照
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS0); 

if(hProcessSnap==(HANDLE)-1) 

return   -1; 
}    

pe32.dwSize=sizeof(PROCESSENTRY32); 

//获取目标进程的ID
if(Process32First(hProcessSnap&pe32))   //获取第一个进程 

do{ 
char te[MAX_PATH]; 
strcpy(tepe32.szExeFile); 
if(strcmp(te INJECT_PROCESS_NAME) == 0)

dwRemoteProcessId=pe32.th32ProcessID; 
printf(“%d\n“dwRemoteProcessId);
break; 
}     
}     
while(Process32Next(hProcessSnap&pe32));//获取下一个进程 

else 

return   -1; 



WCHAR   wsz[MAX_PATH]; 
swprintf(wsz   L“%S ““F:\\hookdll.dll“); //dll地址

LPCWSTR   p   =   wsz; 
//在目标进程中创建线程并注入dll
if(CreateRemoteThreadLoadDll(pdwRemoteProcessId)) 
return 1;
}

//--------------------------------------------------------------------- 
//在目标进程中创建线程并注入dll
BOOL   CreateRemoteThreadLoadDll(LPCWSTR   lpwLibFile   DWORD64   dwProcessId) 

BOOL   bRet = FALSE; 
HANDLE   hProcess = NULLhThread = NULL; 
LPVOID pszLibRemoteFile   =   NULL;
SIZE_T dwWritten = 0;
__try 

//1.打开进程,同时申请权限,这里申请了PROCESS_ALL_ACCESS
hProcess = OpenProcess(PROCESS_ALL_ACCESS TRUE dwProcessId);
if   (hProcess   ==   NULL) 
__leave; 

int   cch   =   1   +   lstrlenW(lpwLibFile); 
int   cb   =   cch   *   sizeof(WCHAR); 
printf(“cb:%d\n“cb);
printf(“cb1:%d\n“sizeof(lpwLibFile));
//2.申

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9536  2012-07-20 14:56  injectDLL.cpp

----------- ---------  ---------- -----  ----

                 9536                    1


评论

共有 条评论