【发布时间】:2014-08-05 16:38:35
【问题描述】:
我做了很多主要针对 Linux 平台的“学术”安全项目,但最近我对 Windows 产生了一些兴趣。所以我所做的是制作一些小工具,比如一个应用程序来让其他应用程序崩溃等,只是为了引发行为。因此,我不得不大量使用 WINDBG 来逐步执行进程,这非常有用,比 GDB(linux) 更酷。
所以我现在尝试制作的工具本质上就像 WINDBG 中的步进功能。我能做的是将一个进程作为System.Diagnostis.Process 对象启动,并查看所有线程等。但接下来我需要做的是我碰壁的地方。
如何使用 C# 以编程方式“逐步执行”进程,最好使用 System.Diagnostics.Process 类。
我想要实现的基本上是从 WINDBG 获得的相同类型的信息。希望我能够制作一个“宏”系统来自动单步执行程序。
【问题讨论】:
-
Process类并不是真正为这种情况设计的。改为查看IDebugClient接口 (msdn.microsoft.com/en-us/library/windows/hardware/…) -
创建一个 unmanaged 调试器是可行的,您可以从 winapi 和 DbgHelp api 中的内置调试支持中获得很多帮助。但这些是非托管 api,从 C# 中执行此操作只会使其变得更加困难。检查this web page,某处也应该有一个部分#1。并检查待办事项列表。
-
谷歌系统内部。这些作者有两本关于这个问题的书。我刚刚给你带来了 2 吨的乐趣。
标签: c# windbg system.diagnostics step-into