有谁能给我解释一下:
OpenProcess和CreatProcess.
(我正在尝试向程序中注入一个DLL,但我不知道该使用哪个DLL。)
发布于 2015-06-26 12:09:41
OpenProcess被传递给现有进程的进程ID,并返回该进程的进程句柄。CreateProcess创建了一个全新的流程,返回了该新流程的句柄(以及其他内容)。如果您想要注入一个已经在运行的进程,那么您将需要OpenProcess。
发布于 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 进程-安全和访问权限
https://stackoverflow.com/questions/31072800
复制相似问题