跟踪C#DLL函数调用

时间:2014-04-18 07:46:32

标签: c# dll reflector

[遗留申请(属于供应商)] - > [DLL(Obfuscated)] - > [新子系统(已替换)]

我得到了一个被混淆的DLL(除了公共函数的名称外)。

我无法对其进行反编译,也没有关于如何调用这些调用的参考手册。

我有没有办法注入一些代码,以便我知道它是如何被调用的顺序?

DLL非常复杂,我不可能在这个DLL和我的函数之间编写代理。

我需要确保能够替换DLL,并将其指向新的子系统,而不会对其他供应商提供的遗留应用程序造成任何打击。

提前感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用ILSpy。打开DLL,选择要分析的任何方法,然后选择enter image description here来分析方法。将打开一个新窗口,其中显示三个类别(使用,使用者和覆盖者)。您可以浏览层次结构。 analyzer window ilspy http://s1.directupload.net/images/140418/l6zclklp.png

如果有任何可以在运行时显示跟踪的免费工具......我不知道。但我目前正在使用ANTS Performance Profiler来显示跟踪(包括性能详细信息)。

最后有关于codeproject的这篇文章:http://www.codeproject.com/Articles/15410/Creating-a-Custom-NET-Profiler 它展示了如何构建一个"自定义.NET Profiler"并将跟踪保存在文本文件中:

System.IO.StringWriter.Write, id=70671928, call count = 622
  System.Text.StringBuilder.Append, id=21629200, call count = 635
    System.IntPtr.op_Inequality, id=21665400, call count = 717
    System.String.AppendInPlace, id=9670768, call count = 635
System.Configuration.XmlUtilWriter.AppendAttributeValue, id=73427152, call count = 14
  System.Xml.XmlTextReader.get_QuoteChar, id=70046432, call count = 14
    System.Xml.XmlTextReaderImpl.get_QuoteChar, id=70049120, call count = 14