如何在C#中挂起整个流程(就像单击“挂起”时的Process Explorer一样)。我正在使用Process.Start启动Process,并且在某个事件中,我想暂停该进程以便能够对其进行“快照”进行一些调查。
3 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
因此,实际上,其他答案显示的是正在暂停进程的线程,没有办法真正暂停进程(即在一个调用中)。
另一个不同的解决方案是实际调试您要启动的目标进程,请参见Mike Stall的博客,以获取有关如何从托管上下文实现此目标的一些建议。
如果实现调试器,则将能够扫描内存或您想要的其他快照。
但是,我想指出的是,从技术上讲,现在确实可以做到这一点。即使您确实调试了目标调试对象进程,系统上的另一个进程也可能会注入一个线程,并且将具有执行代码的能力,而与目标进程的状态无关(即使我们说它是否由于访问冲突而达到了断点) ),如果您已将所有线程的暂停数量都提高到超高的暂停数量,并且当前处于主进程线程的中断点,并且处于任何其他此类假定的冻结状态,则系统仍然有可能向该进程注入另一个线程并执行一些指令。您还可能会遇到修改或替换内核通常调用的所有入口点的麻烦 依此类推,但是您现在已经进入了恶意软件MALWARE的竞赛;)...
在任何情况下,使用托管接口进行调试似乎比p /调用许多本地API调用要容易得多,因为这样做会在模拟您可能真正想做的事情上做得很差。使用调试api ;)
- 3 回答
- 0 关注
- 654 浏览
添加回答
举报
0/150
提交
取消