我将如何拍摄流程快照以保留其状态以备将来调查?这可能吗?

时间:2020-03-06 14:46:16  来源:igfitidea点击:

我不知道这是否可能,但它很有用!

我有一个定期失败的进程(在Windows 2000中运行)。然后,我只有一次机会对其做出反应,而不必重新启动它,痛苦地等待它再次失败。我没有编写流程,所以没有调试源。失败似乎是随机的。

有了过程的快照,我就可以反复快速地测试对故障的反应。

我曾考虑过在VM内运行,但是在这种情况下是不可能的。

编辑:
@乔恩·凯奇(Jon Cage)问:

When you say a snapshot, you mean capturing a process when it's about to fail (including memory, program state etc. etc.) ...and then replaying it's final few seconds repeatedly to see what effect it has on some other component?

这正是我的意思!

解决方案

我最好的选择是在调试器中启动该过程(OllyDbg是我的首选工具)。
该过程将在出现异常时暂停,我们可以尝试找出在此之前不久发生的情况。

这需要对汇编程序有所了解,并且不允许创建过程快照以供以后分析。我们将需要编写自己的调试器,因为从理论上讲它应该是可能的。

我认为minidump是我们想要的。

我们还可以使用Userdump:

The User Mode Process Dumper
  (userdump) dumps any running Win32
  processes memory image (including
  system processes such as csrss.exe,
  winlogon.exe, services.exe, etc) on
  the fly, without attaching a debugger,
  or terminating target processes.
  Generated dump file can be analyzed or
  debugged by using the standard
  debugging tools.

本文向我们展示了如何使用它。

我们想捕捉什么? UDP / TCP消息?一些进程间的通讯?

我问的原因是,捕获软件输出的内容(而不是流程本身),然后编写一个新的流程来模拟那些相同的交互,可能更容易些?我正在一些当前的项目中使用一个小的python脚本来做到这一点...