我需要有关如何开始分析,与调试器连接到已经在进行调试的过程的建议。在分析过程中是否有任何工具/插件/技术可能会有所帮助?正在处理中。如何查看/监视子(debug-gee)过程中发生的事情?

评论

我没有解决方案,但您可能想看看这个插件。

#1 楼


在子进程上调用NtSuspendProcess()
将代码注入父进程,以在子进程上调用DebugActiveProcessStop()
将调试器附加到子进程。
在子进程上调用NtResumeProcess()过程。


评论


谢谢!问题在于,从循环中删除父对象将破坏逻辑链,因为它负责子元素的正确执行。我将更新我的第一个问题。

– PhoeniX
13年9月30日在18:51

#2 楼

经过一些实践经验之后,我对调试自调试过程有何建议。在这里,我假设基于Windows调试API实现了自我调试。因此,这是我的发现:

在“调试器”过程中:


在调试器中附加/运行要研究的过程
看调用带有标志DEBUG_ONLY_THIS_PROCESS或DEBUG_PROCESS的CreateProcess API。

紧跟最接近WaitForDebugEvent的调用。通常,这将是一个处理来自debug-gee的所有调试事件的循环。
一旦找到事件处理区域,所需要做的就是检查确切地处理了什么事件。根据MSDN检查事件。在某些情况下,会有成对调用Get / SetThreadContext。因此,在调用SetThreadContext之前分析结构,实际上可以看到debug-gee的哪个区域被更改(如果您还不知道的话)。
所有更改之后,最终将调用ContinueDebugEvent / ZwContinue。直到被称为debug-gee为止,它都处于冻结状态以进行检查。

在“ debug-gee”过程中:侵入式模式检查已更改的内容。
在继续操作之前先做笔记。