Windows 在CreateProcess之后修改STARTUPINFO
我希望能够在调用Windows 在CreateProcess之后修改STARTUPINFO,windows,winapi,Windows,Winapi,我希望能够在调用CreateProcess后立即更改STARTUPINFO值(挂起) 因此,新的远程/子进程一启动就可以获得定制的GetStartupInfo值 我怎样才能做到这一点 更多信息: 我想将任意数据传递给子进程。 关于本文:可以通过STARTUPINFO结构中的reserved2成员来实现。此方法有效,但限制为65536字节。要传递超过65536字节的数据,理论上的解决方案是: 创建进程(挂起) 在子进程中使用VirtualAllocEx分配空间 使用WriteProcessMemo
CreateProcess
后立即更改STARTUPINFO
值(挂起)
因此,新的远程/子进程一启动就可以获得定制的GetStartupInfo
值
我怎样才能做到这一点
更多信息:
我想将任意数据传递给子进程。
关于本文:可以通过STARTUPINFO
结构中的reserved2
成员来实现。此方法有效,但限制为65536字节。要传递超过65536字节的数据,理论上的解决方案是:
VirtualAllocEx
分配空间WriteProcessMemory
reserved2
成员GetStartupInfo
并获取数据我不知道有什么支持你的方式来满足你的要求。然而,我提出了解决根本问题的替代方案
lpReserved2
,因为文档告诉您将其设置为NULL
事实上,这种方法有很多变体,但命令行参数是将信息传递给新进程的方式。我不知道有什么支持的方式可以让您按要求执行。然而,我提出了解决根本问题的替代方案
lpReserved2
,因为文档告诉您将其设置为NULL
事实上,这种方法有很多变体,但命令行参数是将信息传递给新进程的方式。我不知道有什么支持的方式可以让您按要求执行。然而,我提出了解决根本问题的替代方案
lpReserved2
,因为文档告诉您将其设置为NULL
事实上,这种方法有很多变体,但命令行参数是将信息传递给新进程的方式。我不知道有什么支持的方式可以让您按要求执行。然而,我提出了解决根本问题的替代方案
lpReserved2
,因为文档告诉您将其设置为NULL
实际上,这种方法有很多变体,但命令行参数是将信息传递给新进程的方式。显然要做的事情是在调用
CreateProcess
之前更改值。可能这不是一个选项,因为您没有调用CreateProcess
。这让我觉得有一些外部过程,注射,钩住骗局正在进行。如果我们知道那是什么会有帮助吗?@DavidHeffernan你是对的。我想扩展/打破lpReserved2
限制,即65536字节。如果我能够用上一次调用的结果填充这个值,理论上我可以存储RAM所能提供的字节数。我真的不理解这个注释。尽管如此,我认为你应该编辑这个问题来添加更多的细节。也许有人会有不同的方法来解决您的根本问题。为什么不使用标准IPC让其他进程知道在哪里可以找到内存?您不需要窗口句柄。内存映射文件将是这方面的完美选择。文档在lpReserved2
上清晰可见。不要用它。将文件映射的名称作为命令行参数传递,这很好。显然,要做的事情是在调用CreateProcess
之前更改值。可能这不是一个选项,因为您没有调用CreateProcess
。这让我觉得有一些外部过程,注射,钩住骗局正在进行。如果我们知道那是什么会有帮助吗?@DavidHeffernan你是对的。我想扩展/打破lpReserved2
限制,即65536字节。如果我能够用上一次调用的结果填充这个值,理论上我可以存储RAM所能提供的字节数。我真的不理解这个注释。尽管如此,我认为你应该编辑这个问题来添加更多的细节。也许有人会有不同的方法来解决您的根本问题。为什么不使用标准IPC让其他进程知道在哪里可以找到内存?您不需要窗口句柄。内存映射文件将是这方面的完美选择。文档在lpReserved2
上清晰可见。不要用它。将文件映射的名称作为命令行参数传递,这很好。显然,要做的事情是在调用CreateProcess
之前更改值。可能这不是一个选项,因为您没有调用CreateProcess
。这让我觉得有一些外部过程,注射,钩住骗局正在进行。如果我们知道那是什么会有帮助吗?@DavidHeffernan你是对的。我想扩展/打破lpReserved2
限制,即65536字节。如果我能够用以前的Vir的结果填充这个值