zoukankan      html  css  js  c++  java
  • DLL注入技术之劫持进程创建注入

    劫持进程创建注入原理是利用Windows系统中CreateProcess()这个API创建一个进程,并将第6个参数设为CREATE_SUSPENDED,进而创建一个挂起状态的进程,利用这个进程状态进行远程线程注入DLL,然后用ResumeThread()函数恢复进程。

    1.创建挂起的进程
        下面是创建一个挂起的计算器程序进程的主要代码:

    1. STARTUPINFO si = {0};  
    2. si.cb = sizeof si;  
    3. si.dwFlags = STARTF_USESHOWWINDOW;  
    4. si.wShowWindow = SW_SHOW;  
    5. PROCESS_INFORMATION pi;  
    6.   
    7. TCHAR cmdline[MAXBYTE] =_T("calc.exe");  
    8. BOOL bRet = ::CreateProcess(  
    9.     NULL,  
    10.     cmdline,  
    11.     NULL,  
    12.     NULL,  
    13.     FALSE,  
    14.     CREATE_SUSPENDED, //需要注意的参数  
    15.     NULL,  
    16.     NULL,  
    17.     &si,  
    18.     &pi);  

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

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

    3.激活进程中的线程
        这里主要用的是ResumeThread()的这个API,需要注意的是先激活主要线程,再激活注入的线程。

        劫持进程创建注入其实就是远程线程注入的前期加强版,他可以在进程启动前进行注入,由于进程的线程没有启动,这样就可以躲过待注入进程的检测,提高的注入的成功率。
  • 相关阅读:
    other备忘
    Mdoelsim10.4怎么脚本单独仿真ISE14.7 IP核
    Vivado怎么使用In system debug(类似于chipscope的东西)
    Vivado如何使用bat脚本一键创建工程
    Vivado中VIO核使用
    FPGA上外挂DDR2&DDR3&MIG IP的使用记录
    Vivado2016旧工程IP移动到新工程
    怎样在ISE14.7中固化FLASH文件
    Quartus13.1全编译出现引脚错误(神级bug)
    自用windows小软件
  • 原文地址:https://www.cnblogs.com/vcerror/p/4289071.html
Copyright © 2011-2022 走看看