【问题标题】:Tool to compare .dlls and disassemble the differences? [closed]比较.dll和反汇编差异的工具? [关闭]
【发布时间】:2009-02-26 14:53:19
【问题描述】:

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

谢谢

【问题讨论】:

    标签: .net disassembly


    【解决方案1】:

    也可以使用来自 JetBrains 的dotPeek。它也是免费的。

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

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

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

    // MVID: {some guid here}
    

    // Assembly location: {some path here}
    

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

    • 工具 --> 过滤器...
    • 转到“线路过滤器”选项卡
    • 添加以下过滤器^// MVID:
    • 添加以下过滤器(可选)^// Assembly location:
    • 选中新正则表达式旁边的复选框
    • 选中“启用线路过滤器”复选框

    当您确认更改后,它将重新扫描文件夹并忽略以该注释开头的任何行。现在您应该只看到您感兴趣的更改。

    【讨论】:

    • 这个很好用而且完全免费。不过,您可能需要添加更多过滤器。我还必须添加^// Assembly location:。谢谢科林
    • 另外,请务必在 LineFilters 选项卡中单击“Enable Line Filters”复选框选项。原来我错过了,花了十分钟挠头。
    【解决方案2】:

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

    注意:Diff 工具不再可用。你仍然可以通过Softpedia 下载它,并将它与旧版本的 Reflector 一起使用(从 2010 年左右开始)。在以后的版本中,它不再起作用了。

    【讨论】:

    • 这仍然适用于最新的 Reflector 版本吗?我的只是在做差异时崩溃了。
    • 我无法让它与最新版本 (6.5) 一起使用,这太糟糕了,因为它听起来很棒。
    • Reflector 现在是一款付费软件,有人知道替代方案吗?不是我不想打开我的钱包,而是寻找可以进行差异和拆卸的替代品。更新:刚刚发现 Telerik 有一个非常棒的反汇编程序。 Telerik 反汇编程序。您需要创建一个帐户(免费)才能下载。拆解、导出和比较。
    • Diff 插件与当前付费版本的 Reflector 配合得很好。有很多地方说事情发生了变化而实际上没有发生变化。
    • 链接失效了。
    【解决方案3】:

    为什么不先拆机再对比?

    【讨论】:

    • 用 Reflector 导出,然后用 Beyond Compare 比较目录。太棒了! :)
    【解决方案4】:
    【解决方案5】:

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

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

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

    【讨论】:

    • 不,它不起作用。我可以很好地看到反射器中的代码。但导出会出现 134 个错误。完成。
    【解决方案6】:

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

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

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

    【讨论】:

    • 这里显示的是 api 的差异,而不是 IL 的差异。
    猜你喜欢
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多