转自:黑客反病毒
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,需要注意的是先激活主要线程,再激活注入的线程。
劫持进程创建注入其实就是远程线程注入的前期加强版,他可以在进程启动前进行注入,由于进程的线程没有启动,这样就可以躲过待注入进程的检测,提高的注入的成功率。
时间: 2024-10-25 08:55:09