我正在尝试编写一个.NET应用程序,该应用程序可以分析其他.NET进程并列出由它们进行的所有调用,包括传递的参数的值。
我了解使用“ICorProfilerCallback2”之类的代码编写自己的探查器可以帮助解决此问题,但这似乎是一项艰巨的任务。在进行此操作之前,我想确保这是执行此操作的唯一方法。
我研究了开源.NET探查器之类的东西,例如part-cover,CLR Profiler v4.0等,但它们似乎都没有提供托管的API来执行此操作,并且它们执行的工作远远超出我的需要(内存分析等) )。
还有其他方法吗?一种更简单的方法来进行这种分析?我在这里有什么选择?
最佳答案
我们曾经使用Mono Cecil编写了这样的工具。
使用Cecil,您可以将IL代码发布到现有程序集中。这样,您可以在每种方法的开头将调用添加到您自己的托管DLL中。
但是,由于有许多情况需要考虑,因此IL注入(inject)非常棘手,但这是可行的。好的一面:调用托管DLL后,所有代码都可以以高级方式(例如C#)编写,因此“唯一”棘手的部分是编织对API的调用。
使用Cecil工具的工作流程可能如下所示:
关于.net - 监视.NET应用程序中所有调用的最简单方法(分析/检测),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12021430/