首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenProcess对CreateProcess

OpenProcess对CreateProcess
EN

Stack Overflow用户
提问于 2015-06-26 12:06:49
回答 2查看 2.2K关注 0票数 0

有谁能给我解释一下:

OpenProcess和CreatProcess.

(我正在尝试向程序中注入一个DLL,但我不知道该使用哪个DLL。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-26 12:09:41

  • OpenProcess被传递给现有进程的进程ID,并返回该进程的进程句柄。
  • CreateProcess创建了一个全新的流程,返回了该新流程的句柄(以及其他内容)。

如果您想要注入一个已经在运行的进程,那么您将需要OpenProcess

票数 5
EN

Stack Overflow用户

发布于 2020-07-10 08:38:59

与将.dll注入另一个流程有关,OpenProcess和CreateProcess之间有几个主要的好处和区别。

第一是时机。可以在目标进程有机会执行自己的任何代码之前注入dll,方法是创建处于挂起状态的进程(设置为dwCreationFlags( CREATE_SUSPENDED(0x00000004)。当您准备好执行该流程时,不要忘记继续它。

第二是特权。CreateProcess返回的进程句柄自动具有PROCESS_ALL_ACCESS,不需要首先设置SeDebugPrivilege。OpenProcess确实要求您的程序在被允许使用PROCESS_ALL_ACCESS标志之前获得此权限。

还有一些小事要记住:在运行中的进程中不能调用CreateProcess,但如果出于任何原因需要在CreateProcess之后调用CreateProcess,则始终可以调用CreateProcess。

CreateProcess要求您同时访问在PROCESS_INFORMATION中返回的进程和线程句柄,其中OpenProcess只要求您对其返回值进行CloseHandle (没有打开线程句柄)。

如果您需要以任何理由(不太可能)更改环境,则必须使用CreateProcess。

进一步阅读请参阅:CreateProcess OpenProcess 进程-安全和访问权限

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31072800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档