今天复习的是远程注入,废话不说,贴代码~

注入的代码,下次直接到这里找就好啦,嘿嘿~~还有个从进程id获取窗口句柄不错的代码,也贴过来吧
BOOL CXXXX::Inject(char* szDllName,HANDLE hDestProcess)
{
 HANDLE hThread;
 char szLibPath[MAX_PATH]={0};
 void* pLibRemote;
 DWORD hLibModule;
 strcpy(szLibPath,szDllName);
 HMODULE hKernel32=::GetModuleHandle(_T("Kernel32"));
 
 pLibRemote=::VirtualAllocEx(hDestProcess
  ,NULL
  ,sizeof(szLibPath)
  ,MEM_COMMIT
  ,PAGE_READWRITE
  );
 ::WriteProcessMemory(hDestProcess,pLibRemote,(void*)szLibPath
  ,sizeof(szLibPath)
  ,NULL);
 hThread=::CreateRemoteThread(hDestProcess
  ,NULL
  ,0
  ,(LPTHREAD_START_ROUTINE)::GetProcAddress (hKernel32,"LoadLibraryA")
  ,pLibRemote
  ,0
  ,NULL
  );
// ::WaitForSingleObject (hThread,INFINITE);
// ::GetExitCodeProcess(hThread,&hLibModule);
 ::CloseHandle(hThread);
 ::VirtualFreeEx(hDestProcess,pLibRemote,sizeof(szLibPath),MEM_RELEASE);

 return TRUE;
}

 

///


typedef struct _tagWNDINFO
{
    DWORD dwProcessId;
    CString strWindowText;
    HWND hWnd;
} WNDINFO, *LPWNDINFO;

BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam)
{
    LPWNDINFO pInfo = (LPWNDINFO)lParam;
    DWORD dwProcessId = 0;
    GetWindowThreadProcessId(hWnd, &dwProcessId);
    wchar_t szText[32] = {0};
    ::GetWindowText( hWnd, szText, 32 );
    TRACE( _T("EnumWindowsProc..hWnd=0x%x, ProcessID=%d, WindowsText=%s /n"), hWnd, dwProcessId, szText );
    if(dwProcessId == pInfo->dwProcessId
  && (pInfo->strWindowText.IsEmpty() || pInfo->strWindowText.Compare(szText)==0) )
    {
        pInfo->hWnd = hWnd;
        return FALSE;
    }
    return TRUE;
}

HWND GetProcessMainWnd(DWORD dwProcessId, CString strText=_T(""))
{
    WNDINFO wi;
    wi.dwProcessId = dwProcessId;
    wi.strWindowText = strText;
    wi.hWnd = NULL;
    EnumWindows(EnumWindowsProc,(LPARAM)&wi);
    return wi.hWnd;
}

//

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值