有没有一种工具可以允许在运行的进程中检查.NET对象?

6
我在思考一种检查运行时对象的工具,主要用于反向工程,想知道是否存在这样的东西。
我的想法是,你有两个视图,一个是对象图,另一个是类列表。从类列表中,您可以选择一个类并查看它的实例,可以是列表或者是图形。在图形中,您可以看到对象之间的连接,适当地进行注释,例如哈希表中的键可以作为哈希表对象和值之间边缘上的标签。
您还可以提取对象属性列表,并查看/操作其中的值。.NET提供的元数据使其相对容易。
有人知道可以做到这一点的工具吗?这似乎是一种非常有用的调试和反向工程工具。
编辑:此外,另一个有用的功能是在查看二进制文件时能够设置名称映射。也就是说,如果您有一个混淆的二进制文件,则可以将混淆的名称替换为占位符或真实名称。这不会影响实际的二进制文件,只会影响检查器中的视图。
编辑第2部分:该工具应该能够在Vista和XP上运行,并支持x64。
4个回答

9

@Cody,你把这个应用程序搞定了吗?我好像无法运行它,每次都崩溃 :( - Nathan W
@Cody NM 没有安装 .NET 3.5 SP1。 - Nathan W
没错,在这里完美地工作。我成功地使用它来挖掘一个混淆的应用程序 - 真是太棒了! - Serafina Brocious

1

如果您有正在运行的进程,则在计算机上必须有该二进制文件。

您可以在 Reflector 中加载此二进制文件。

或者,如果您已安装 Visual Studio,则可以将 Visual Studio 调试器附加到正在运行的进程。


Reflector对于调试没有真正的支持(它有一个调试器插件,但是没什么用),而VS调试器在浏览进程中的所有对象方面支持非常有限。不过还是谢谢。 - Serafina Brocious

1

有一个名为Hawkeye的程序,可以让您查看.NET应用程序中的UI元素。

我还发现了一个名为.NET Component Inspector的程序,不确定它有多好(正在尝试中)。


这似乎只允许您查看GUI元素 - 我错了吗? - Serafina Brocious
抱歉,我确实很抱歉:( - Nathan W
无论如何,很高兴看到人们至少在做这样的事情——这让我对整个工具的存在充满了希望 :) - Serafina Brocious
.NET组件检查器看起来非常不错,但遗憾的是它只支持<=XP :( - Serafina Brocious
嗯,我尝试打开几个程序集,但每个程序集都出现了格式错误。难道是因为我在运行 x64 吗?我应该在我的问题上添加一条注释。 - Serafina Brocious
显示剩余4条评论

1

您可以从相关应用程序获取一个minidump,然后使用WinDBG和SOS进行检查。


我已经尝试过这个,但我真的想要一个像我描述的GUI工具。谢谢你的建议 :) - Serafina Brocious

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接