我做了很多“学术”安全项目,主要针对 Linux 平台,但最近我对 Windows 产生了一些兴趣。所以我所做的就是制作一些小工具,比如一个应用程序来崩溃其他应用程序等等,只是为了激发行为。所以我不得不大量使用 WINDBG 来逐步执行进程,这非常有用,比 GDB(linux) 酷得多。
所以我现在尝试制作的工具本质上就像 WINDBG 中的步进功能一样。我能做的就是将进程作为 System.Diagnostis.Process 对象启动,然后查看所有线程等。但接下来我需要做的就是我碰壁的地方。
如何使用 C#(最好是使用 System.Diagnostics.Process 类)以编程方式“逐步执行”进程。
我想要实现的信息基本上与从 WINDBG 获得的信息相同。我希望能够制作一个“宏”系统来自动单步执行程序。
最佳答案
http://www.codeproject.com/Articles/371137/A-Mixed-Mode-Stackwalk-with-the-IDebugClient-Inter
你的问题相当复杂,确实没有简单的答案。
这是 Mattias Högström 的一个项目,可以帮助您入门。他的项目使用 IDebugClient 类来处理非托管代码,他可以遍历调用堆栈。有了一些知识和和The Debugger reference您可以编写一个 CLR (c++) 及其接口(interface),以便可以从 native C# 应用程序访问它。
关于C# 应用程序的行为类似于 WINDBG 的 "step into"功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144043/