此处示例:
我的程序中有一个代码行:
string name = "somebody"
是否有工具/方法来了解正在运行的.NET程序中的变量和值? 在上面的例子中,我希望看到:
name = "somebody"
@all,我知道VS的调试器,它不能解决我的问题,因为我无法停止正在运行的应用程序,但我确实需要知道一些变量的值。我知道这个问题是有线的,但这是我的问题。没有停止(因为我的应用程序是一个服务),没有调试(没有机会调试),有没有办法获得变量值?如果我可以修改源代码,那么在不修改源代码的情况下,应用程序可以记录一些重要的变量值。显然,我不能
答案 0 :(得分:2)
是。许多开发环境(像Visual Studio等IDE)都可以attach to a running process,暂停执行并检查进程的内存。如果该过程包含调试信息并且源代码可用,那么在程序中的某个点读取给定变量的值是一件简单的事情。但它也可以在没有调试信息和源代码的情况下完成。
此功能实际上是调试Web服务器等应用程序所必需的。它也可能被误用于从运行的应用程序中收集秘密或专有信息。
答案 1 :(得分:1)
Visual Studio附带了自己的调试器,允许您查看所有变量和堆栈。如果您有源代码,则可以简单地对该特定行执行断点。除非我不理解你的问题。
答案 2 :(得分:1)
TRY: .NET MEMORY PROFILE 4.0 http://memprofiler.com/
或尝试.. 简单的Assembly Explorer(SAE) http://code.google.com/p/simple-assembly-explorer/
或许甚至OllyDBG我的意思是,如果你认为你会得到未加密的变量,你就是在开玩笑。
其他可以帮助你的工具,但在内存分析器这个问题中没有那么多......
GrayWolf 100%免费感谢Jon Mccoy。 http://www.digitalbodyguard.com/Programs.html
GrayWolf - 是一种逆向工程工具 (专注于.NET Framework应用程序)
或者对于非FREEWARE解决方案,您可以尝试: Reflecter + reflix插件 http://www.reflector.net/
如果您真的想坚持使用Windows,可以使用Windows中的 ILDASM ,将其作为.NET FRAMEWORK SDK的一部分下载。 (需要SDK不仅仅是VS或.NET)。 download
但http://memprofiler.com/是你想要的;) 如果你真的想要有创意,你甚至可以将自定义有效负载注入数字身体防护网站上的应用程序检查dotnetasploit。