如何查看两个DLL之间的差异?

时间:2009-08-13 07:57:24

标签: dll diff visual-c++ disassembly

有没有办法查看两个二进制DLL文件之间的区别?我有两个PDB。

理想情况下,我想看看:

  • 添加了哪些功能
  • 删除了哪些功能
  • 修改了哪些功能(使用反汇编的差异)
  • 添加/删除/修改了哪些其他条目(静态变量,资源等)

注意:这与this question不同,因为我正在处理本机DLL。

2 个答案:

答案 0 :(得分:3)

如果您想比较可执行文件,您可以选择以下几种方法:

  • Bindiff:这是商业反汇编IDA Pro的商业扩展。它是逆向工程的事实上的工具。根据供应商描述,它允许您:
    • 在不同的二进制文件中识别相同和相似的功能
    • 从一个反汇编到另一个反汇编的端口函数名称,前后注释行,标准注释和本地名称
    • 检测&突出显示同一功能的两个变体之间的变化

http://www.zynamics.com/bindiff.html

  • 你还有一个免费的选择:PatchDiff。作为Bindiff,它也是IDA Pro的插件。根据开发人员的说法,Patchdiff可以执行以下任务:
    • 显示相同功能列表
    • 显示匹配功能列表
    • 显示不匹配的功能列表(使用CRC)
    • 显示相同和匹配功能的流程图

http://cgi.tenablesecurity.com/tenable/patchdiff.php

答案 1 :(得分:0)

“低技术”方法(无需反汇编)将在DLL上使用DUMPBIN /ALL(或另一个开关,具体取决于您想要知道的内容)并对结果进行文本比较。