码迷,mamicode.com
首页 > 系统相关 > 详细

[转载]Dll注入技术之劫持进程创建注入

时间:2015-02-02 21:31:03      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

转自:黑客反病毒

 

DLL注入技术之劫持进程创建注入

  劫持进程创建注入原理是利用Windows系统中CreateProcess()这个API创建一个进程,并将第6个参数设为CREATE_SUSPENDED,进而创建一个挂起状态的进程,利用这个进程状态进行远程线程注入DLL,然后用ResumeThread()函数恢复进程。
1.创建挂起的进程     下面是创建一个挂起的计算器程序进程的主要代码:

 

    STARTUPINFO si = {0};
    si.cb = sizeof si;
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_SHOW;
    PROCESS_INFORMATION pi;

    TCHAR cmdline[MAXBYTE] =_T("calc.exe");
    BOOL bRet = ::CreateProcess(
        NULL,
        cmdline,
        NULL,
        NULL,
        FALSE,
        CREATE_SUSPENDED, //需要注意的参数
        NULL,
        NULL,
        &si,
        &pi);

2.向挂起的进程中进行远程线程注入DLL     关于远程线程注入在这里就不重复讲述了,但是这里需要注意一个问题,那就是CreateRemoteThread()中第6个参数,需要设为CREATE_SUSPENDED,主要参数如下:

    //4. 创建远程线程
    m_hInjecthread = ::CreateRemoteThread(hProcess,      //远程进程句柄
        NULL,                                            //安全属性
        0,                                               //栈大小
        (LPTHREAD_START_ROUTINE)LoadLibrary,             //进程处理函数    
        pszDllName,                                      //传入参数
        CREATE_SUSPENDED,                                //默认创建后的状态
        NULL);                                           //线程ID

3.激活进程中的线程     这里主要用的是ResumeThread()的这个API,需要注意的是先激活主要线程,再激活注入的线程。
    劫持进程创建注入其实就是远程线程注入的前期加强版,他可以在进程启动前进行注入,由于进程的线程没有启动,这样就可以躲过待注入进程的检测,提高的注入的成功率。

[转载]Dll注入技术之劫持进程创建注入

标签:

原文地址:http://www.cnblogs.com/Acg-Check/p/4268665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!