Как я могу просматривать различия между двумя DLL?
-
13-09-2019 - |
Вопрос
Есть ли способ просмотреть разницу между двумя двоичными файлами DLL? У меня есть PDB для обоих.
В идеале я хотел бы увидеть:
- Какие функции были добавлены
- Какие функции были удалены
- Какие функции были изменены (с различием разборки)
- Какие другие записи (статические переменные, ресурсы и т. Д.) Были добавлены/удалены/модифицированы
Примечание: это отличается от этот вопрос Поскольку я имею дело с местными DLL.
Решение
Если вы хотите сравнить исполняемые файлы, у вас есть пара альтернатив:
- БИНДИФФ: Это коммерческое расширение для коммерческого дизассемблера IDA Pro. Это инструмент De-Facto для обратной инженерии. Согласно описанию поставщика, он позволяет:
- Определить идентичные и похожие функции в разных двоичных файлах
- Названия функций порта, передние и задние линии комментариев, стандартные комментарии и локальные имена от одной разборки на другой
- Обнаружение и выделение изменений между двумя вариантами одной и той же функции
http://www.zynamics.com/bindiff.html
- У вас все еще есть бесплатная альтернатива: PatchDiff. Как Bindiff, это также плагин для IDA Pro. По словам разработчика, PatchDiff может выполнять следующие задачи:
- Отображать список идентичных функций
- Отображать список соответствующих функций
- Отобразить список непревзойденных функций (с CRC)
- Отобразить график потока для идентичных и сопоставленных функций
Другие советы
Подход «низкотехнологий» (без разборки) - это использование DUMPBIN /ALL
(или другой переключатель, в зависимости от того, что именно вы хотите знать) на DLL и сделайте текст, сравнивая результат.
Не связан с StackOverflow