比较.dlls的工具和反汇编的差异?

时间:2009-02-26 14:53:19

标签: .net disassembly

有没有人知道一个不错的工具可以比较同一个dll的两个不同版本并提取差异?

感谢

6 个答案:

答案 0 :(得分:21)

也可以使用JetBrains的

dotPeek。它也是免费的。

  • 在dotPeek中打开程序集
  • 选择程序集
  • 文件 - >导出到项目
  • 在磁盘上选择一个位置

对要比较的程序集重复上述操作,然后在diff工具中打开两个文件夹。我使用了WinMerge

您会注意到绝大多数文件都存在差异。这是因为文件在顶部有评论

// MVID: {some guid here}

您可以在WinMerge中创建一个过滤器来忽略它

  • 工具 - >滤波器...
  • 转到“线路过滤器”标签
  • 添加以下过滤器^// MVID:

如果您没有更改,它将重新扫描文件夹并忽略以该评论开头的任何行。现在您应该只看到您感兴趣的更改。

答案 1 :(得分:16)

Reflector有一个Diff工具。注意:Reflector现在是付费软件。

答案 2 :(得分:4)

为什么不首先进行反汇编然后进行比较?

答案 3 :(得分:4)

答案 4 :(得分:4)

使用.NET Reflector(只需要免费版)打开dll然后右键单击并选择将它们导出到不同的目录。

然后使用ExamDiff Pro比较目录(您可以获得30天的免费试用版)。您可以浏览子文件夹并根据需要打开每个文件到新的比较窗口(只需在ExamDiff Pro窗口中双击)。 效果很棒!

ExamDiff Pro还有一个Dump PE32插件,可直接在.dll和.exe文件之间进行比较。这有助于查看标题更改并标记二进制差异,但不会为您反编译(因此请使用上面的Reflector方法)。

答案 5 :(得分:0)

微软BCL团队有一个工具可以做到这一点,它叫做LibCheck,可以在这里找到

http://blogs.msdn.com/b/bclteam/archive/2005/03/21/400123.aspx

这是一个旧工具,我不得不使用更高版本的运行时重新编译源代码,但它运行良好并提供有关更改的HTML报告。