Próbuję nauczyć się korzystać z narzędzia BinDiff , ale mogę ” t dowiedzieć się, jak otworzyć dwa pliki binarne, aby wykonać porównanie. Przeglądając ich podręcznik, wydaje mi się, że potrzebuję do tego IDA Pro.
Czy mogę używać BinDiff bez IDA Pro (powiedzmy, z darmowym IDA)?
Komentarze
- related: alternatywy dla BinDiff reverseengineering.stackexchange.com/q/26196/3934 ?
Odpowiedź
Tak, jest to teraz możliwe dzięki Ghidra.
Najnowsza wersja BinDiff 6 , ma eksperymentalne wsparcie dla deasemblera Ghidra. Jest dostarczany z rozszerzeniem, które umożliwia eksport demontażu Ghidry do formatu .BinExport potrzebnego do różnicowania.
Wymagane oprogramowanie
- BinDiff 6 z witryna zynamics
- Najnowsze środowisko wykonawcze Java (OpenJDK 11 lub nowsza)
- Ghidra 9.1.2 ( https://ghidra-sre.org/releaseNotes_9.1.2.html )
Instalowanie rozszerzenia Ghidra
Po zainstalowaniu BinDiff znajdź „BinExport” rozszerzenie w folderze instalacyjnym.
Domyślne ustawienia to
- Windows:
C:\Program Files\BinDiff\extra\ghidra
- Linux:
/opt/bindiff/extra/ghidra
- macOS:
/Applications/BinDiff/Extra/Ghidra
Jeśli znalazłeś ghidra_BinExport.zip
, rozszerzenie można zainstalować jak każde inne rozszerzenie Ghidra:
- Uruchom Ghidra, a następnie wybierz
File
|Install Extensions...
. - Kliknij przycisk
+
, abyAdd extension
. -
W
Select Extension
, przejdź do katalogu zawierającegoghidra_BinExport.zip
. -
Wybierz plik .zip file i kliknij
OK
- Kliknij
OK
, aby potwierdzić i ponownie, aby zamknąć komunikat o ponownym uruchomieniu. Następnie uruchom ponownie Ghidrę.
Użycie
Ta wersja eksportera opartego na Javie dla Ghidra ma następujące funkcje w porównaniu z natywną wersją C ++ dla IDA Pro:
| | Ghidra | IDA | | --------------------------------------- | ------ | --- | | Protocol Buffer based full export | ✓¹ | ✓ | | Statistics text file | - | ✓ | | Text format for debugging | - | ✓ | | BinNavi export into PostgreSQL database | - | ✓ | ¹ No operand trees
Weryfikacja wersji instalacyjnej
- W Ghidrze wybierz
File
|Install Extensions...
. - Sprawdź, czy
BinExport
jest na liście i ma poprawneInstall Path
Wywołanie
- W Ghidrze otwórz projekt lub utwórz nowy.
- Jeśli jeszcze tego nie zrobiłeś, otwórz plik binarny do wyeksportowania narzędzie Code Browser i uruchom wstępną analizę Ghidry. Możesz włączyć opcję „agresywnej wyszukiwarki instrukcji”, aby uzyskać lepsze pokrycie eksportu.
- W widoku projektu kliknij prawym przyciskiem myszy plik binarny, eksportuj i wybierz
Export...
- Z rozwijanej listy wybierz
Binary BinExport (v2) for BinDiff
- Wybierz ścieżka do pliku wyjściowego. Może to być oryginalna nazwa pliku, jako
.BinExport
zostanie dołączony. - Kliknij
OK
.
BinDiff Wyeksportowane pliki
Wyeksportowane pliki można teraz porównać, a wyniki wyświetlić w ich interfejsie użytkownika:
- Wyeksportuj dwa pliki binarne zgodnie z powyższymi instrukcjami. W poniższych krokach założono, że
primary.BinExport
isecondary.BinExport
. -
Z wiersza poleceń uruchom silnik BinDiff z
bindiff primary.BinExport secondary.BinExport
Spowoduje to utworzenie pliku
primary_vs_secondary.BinDiff
w bieżącym katalogu. Poleceniebindiff
powinno znajdować się w ścieżce systemowej. -
Uruchom interfejs użytkownika BinDiff, albo przez
bindiff --ui
lub używając programu uruchamiającego dla swojego systemu operacyjnego. -
Utwórz nowy obszar roboczy lub otwórz istniejący.
-
Wybierz
Diffs
|Add Existing Diff...
. -
Pod
Choose Diff
, wybierzprimary_vs_secondary.BinDiff
utworzony w kroku 2. -
Kliknij
OK
, po którym następujeAdd
. Różnica jest teraz wyświetlana w widoku drzewa po lewej stronie i można ją otworzyć, klikając ją dwukrotnie. -
Zwykle używaj BinDiff, aby wyświetlić wykres wywołań lub wykresy przepływu dopasowanych funkcji .
Open Source
Wreszcie rozszerzenie BinExport (a także wtyczka IDA Pro) jest open source i dostępne na GitHub . Znacznik v11
odpowiada BinDiff 6.
Komentarze
- Dziękuję. ' byłbym bardzo zadowolony z pozbycia się zależności od IDA Pro!