在CreateProcess

时间:2015-09-02 09:50:43

标签: windows winapi

我希望能够更改STARTUPINFO值,在 CreateProcess被调用(暂停)之后

因此,新的远程/子进程一旦启动就可以获得自定义GetStartupInfo值。

我怎么能实现这个目标?

更多信息:

我想将仲裁数据传递给子进程。 关于本文:http://www.catch22.net/tuts/undocumented-createprocess可以使用reserved2结构中的STARTUPINFO成员执行此操作。此方法有效,但限制为65536字节。如果您:

,为了传递超过65536个字节的理论解决方案
  1. 创建流程(暂停)
  2. 子进程中带有VirtualAllocEx的Alloc空间
  3. 写入数据>使用WriteProcessMemory
  4. 到子进程的65536个字节
  5. 使用步骤2
  6. 中的地址更改reserved2成员
  7. 恢复流程
  8. 子进程调用GetStartupInfo并获取数据

1 个答案:

答案 0 :(得分:3)

我不知道有任何支持的方式让你做你所要求的。但是,我建议根本问题的替代解决方案。

  1. 您不应该使用lpReserved2,因为文档要求您将其设置为NULL
  2. 让父进程创建一个命名的内存映射文件。
  3. 将此文件映射的名称作为命令行参数传递给子进程。
  4. 事实上,这种方法有很多变种,但命令行参数是将信息传递给新流程的方法。