创建进程-CreateProcess (二)
来源:互联网 发布:数据机房动环品牌 编辑:程序博客网 时间:2024/06/09 21:25
STARTUPINFO结构中的cb字段表示该结构的长度,表示子进程继承父进程的STARTUPINFO结构。
如果要修改子进程的启动信息,就要先获取到父进程的信息,然后再设置STARTUPINFO结构中的相应字段。
如下隐藏启动一个程序:
char lpPath[] = "notepad.exe" ;STARTUPINFO si = { sizeof(si) } ;// 设置STARTF_USESHOWWINDOW标记,使得STARTUPINFO结构的wShowWindow字段有效si.dwFlags |= STARTF_USESHOWWINDOW ;// 设置窗口的显示方式,SW_HIDE表示隐藏方式si.wShowWindow = SW_HIDE ;PROCESS_INFORMATION pi ;BOOL bStatus = CreateProcess ( NULL, lpPath, NULL, NULL, FALSE, 0,NULL, NULL, &si, &pi ) ;if ( bStatus == FALSE ){MessageBox ( 0, "CreateProcess error, notepad.exe", 0, 0 ) ;return ;}
在创建子进程的时候使用CREATE_SUSPENDED标记使子进程挂起,此时子进程还没有初始化,然后就可以调用进程中处理子进程的数据和代码,比如:对子进程进行数据处理和模块注入(HOOK)等操作,最后再恢复执行。
WCHAR lpPath[] = L"notepad.exe" ;STARTUPINFO si = { sizeof(si) } ;PROCESS_INFORMATION pi ;// 步骤1:使用CREATE_SUSPENDED创建挂起进程BOOL bStatus = CreateProcess ( NULL, lpPath, NULL, NULL, FALSE, CREATE_SUSPENDED,NULL, NULL, &si, &pi ) ;if ( bStatus == FALSE ){MessageBox ( 0, L"CreateProcess error, notepad.exe", 0, 0 ) ;return ;}// 步骤2:在这里对子进程进行数据处理和模块注入等操作// ……// 步骤3:恢复执行ResumeThread ( pi.hThread ) ;
- 创建进程-CreateProcess (二)
- 创建进程-CreateProcess (一)
- 关于进程创建,CreateProcess
- CreateProcess创建进程
- CreateProcess创建进程
- CreateProcess创建新的进程
- CreateProcess创建的子进程
- 创建进程API CreateProcess Demo
- CreateProcess创建一个隐藏进程
- <win32 API> CreateProcess 创建进程
- Windows创建进程winAPI-CreateProcess
- Delphi调用CreateProcess创建进程
- C++ CreateProcess API创建进程
- CreateProcess创建新的进程
- 进程创建过程详解 CreateProcess
- Windows下创建进程-CreateProcess()
- 创建进程CreateProcess函数---------《windows核心编程》读书笔记(3)
- 创建进程CreateProcess,结束进程 TerminateProcess
- 经典算法面试与解答(二)
- AJAX 详解
- 如何部署tomcat,如何在项目中将服务引入
- libmad使用一步步进阶
- Fedora 14 开机自动运行脚本
- 创建进程-CreateProcess (二)
- 测试之旅——基本功,测试用例
- 选择排序
- MySQL read lock.. 利用 select .. for update 解决.
- Socket文件传输过程详解
- 杂谈
- 创建线程 - CreateThread
- google map api3 中添加标记
- [MST]hdu 2122 Ice_cream’s world III