Как я могу просматривать различия между двумя DLL?

StackOverflow https://stackoverflow.com/questions/1270650

Вопрос

Есть ли способ просмотреть разницу между двумя двоичными файлами DLL? У меня есть PDB для обоих.

В идеале я хотел бы увидеть:

  • Какие функции были добавлены
  • Какие функции были удалены
  • Какие функции были изменены (с различием разборки)
  • Какие другие записи (статические переменные, ресурсы и т. Д.) Были добавлены/удалены/модифицированы

Примечание: это отличается от этот вопрос Поскольку я имею дело с местными DLL.

Это было полезно?

Решение

Если вы хотите сравнить исполняемые файлы, у вас есть пара альтернатив:

  • БИНДИФФ: Это коммерческое расширение для коммерческого дизассемблера IDA Pro. Это инструмент De-Facto для обратной инженерии. Согласно описанию поставщика, он позволяет:
    • Определить идентичные и похожие функции в разных двоичных файлах
    • Названия функций порта, передние и задние линии комментариев, стандартные комментарии и локальные имена от одной разборки на другой
    • Обнаружение и выделение изменений между двумя вариантами одной и той же функции

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

  • У вас все еще есть бесплатная альтернатива: PatchDiff. Как Bindiff, это также плагин для IDA Pro. По словам разработчика, PatchDiff может выполнять следующие задачи:
    • Отображать список идентичных функций
    • Отображать список соответствующих функций
    • Отобразить список непревзойденных функций (с CRC)
    • Отобразить график потока для идентичных и сопоставленных функций

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

Другие советы

Подход «низкотехнологий» (без разборки) - это использование DUMPBIN /ALL (или другой переключатель, в зависимости от того, что именно вы хотите знать) на DLL и сделайте текст, сравнивая результат.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top