Wie kann ich die Unterschiede zwischen zwei DLLs betrachten?
-
13-09-2019 - |
Frage
Gibt es eine Möglichkeit, den Unterschied zwischen zwei binären DLL -Dateien anzuzeigen? Ich habe PDBS für beide.
Idealerweise würde ich gerne sehen:
- Welche Funktionen wurden hinzugefügt
- Welche Funktionen wurden entfernt?
- Welche Funktionen wurden modifiziert (mit einem Unterschied der Demontage)
- Welche anderen Einträge (statische Variablen, Ressourcen usw.) wurden hinzugefügt/entfernt/geändert
Hinweis: Dies unterscheidet sich von diese Frage Da ich mit einheimischen DLLs zu tun habe.
Lösung
Wenn Sie ausführbare Dateien vergleichen möchten, haben Sie einige Alternativen:
- Bindiff: Es ist eine kommerzielle Erweiterung für den kommerziellen Disassembler Ida Pro. Es ist ein de-facto-Werkzeug für Reverse Engineering. Gemäß der Beschreibung der Verkäufer können Sie:
- Identifizieren Sie identische und ähnliche Funktionen in verschiedenen Binärdateien
- Portfunktionsnamen, vordere und hintere Kommentarlinien, Standardkommentare und lokale Namen von einer Demontage zum anderen
- Erkenne und markierst Änderungen zwischen zwei Varianten derselben Funktion
http://www.zynamics.com/bindiff.html
- Sie haben immer noch eine kostenlose Alternative: Patchdiff. Als Bindiff ist es auch ein Plugin für IDA Pro. Nach Angaben des Entwicklers kann Patchdiff die folgenden Aufgaben ausführen:
- Zeigen Sie die Liste der identischen Funktionen an
- Zeigen Sie die Liste der übereinstimmenden Funktionen an
- Zeigen Sie die Liste der unerreichten Funktionen an (mit dem CRC)
- Zeigen Sie ein Flussdiagramm für identische und übereinstimmende Funktionen an
Andere Tipps
Ein "Low -Tech" -Ansatz (keine Demontage) wäre zu verwenden DUMPBIN /ALL
(Oder einen anderen Switch, je nachdem, was Sie genau wissen möchten) auf den DLLs und vergleiche einen Text im Ergebnis.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow