BinDiff

https://chacker.pl/

Jak wspomniano wcześniej, na początku 2011 roku Google przejął niemiecką firmę programistyczną Zynamics, a znany badacz Thomas Dullien, znany również jako Halvar Flake, pełnił funkcję szefa badań. Zynamics był szeroko znany z narzędzi BinDiff i BinNavi, które pomagają w inżynierii wstecznej. Po przejęciu Google znacznie obniżyło cenę tych narzędzi do jednej dziesiątej pierwotnej ceny, dzięki czemu stały się znacznie bardziej dostępne. W marcu 2016 roku Google ogłosiło, że od tej pory BinDiff będzie darmowy. Projekt jest aktywnie utrzymywany przez Christiana Blichmanna, a BinDiff 7 jest najnowszą wersją w momencie pisania tego tekstu. BinDiff jest często chwalony jako jedno z najlepszych narzędzi tego typu, zapewniające dogłębną analizę zmian bloków i kodu. W połowie 2021 roku wsparcie BinDiff dla Ghidra i Binary Ninja, innego świetnego deasemblera, było w fazie beta. BinDiff 7 jest dostarczany jako pakiet instalacyjny Windows (.msi), plik pakietu oprogramowania Debian (.deb) lub plik obrazu dysku Mac OS X (.dmg). Instalacja wymaga jedynie kilku kliknięć, licencjonowanej kopii IDA Pro i wymaganej wersji Java Runtime Environment. Aby użyć BinDiff, musisz zezwolić IDA na przeprowadzenie automatycznej analizy dwóch plików, które chcesz porównać i zapisać pliki IDB. Po zakończeniu tej czynności i otwarciu jednego z plików w IDA naciśnij CTRL-6, aby wyświetlić interfejs graficzny BinDiff, jak pokazano tutaj:

Następnym krokiem jest kliknięcie przycisku Diff Database i wybranie innego pliku IDB dla diff. W zależności od rozmiaru plików, ukończenie diff może potrwać minutę lub dwie. Po zakończeniu diff w IDA pojawią się nowe zakładki, w tym Matched Functions, Primary Unmatched i Secondary Unmatched. Zakładka Matched Functions zawiera funkcje, które istnieją w obu plikach, które mogą lub nie zawierać zmian. Każda funkcja jest punktowana wartością od 0 do 1,0 w kolumnie Similarity, jak pokazano poniżej. Im niższa wartość, tym bardziej funkcja zmieniła się między dwoma plikami. Jak stwierdził Zynamics/Google w odniesieniu do zakładek Primary Unmatched i Secondary Unmatched, „Pierwsza wyświetla funkcje, które są zawarte w aktualnie otwartej bazie danych i nie były powiązane z żadną funkcją diffed database, podczas gdy podwidok Secondary Unmatched zawiera funkcje, które są w diffed database, ale nie były powiązane z żadną funkcją w pierwszej”.

Ważne jest, aby porównać poprawne wersje pliku, aby uzyskać najdokładniejsze wyniki. Gdy przejdziesz do Microsoft TechNet, aby uzyskać poprawki opublikowane przed kwietniem 2017 r., zobaczysz kolumnę po prawej stronie zatytułowaną „Zastąpione aktualizacje”. Proces pobierania poprawek rozpoczynający się w kwietniu 2017 r. zostanie wkrótce omówiony. Przejście do adresu URL w tej lokalizacji (Zastąpione aktualizacje) przeniesie Cię do poprzedniej najnowszej aktualizacji pliku, który jest łatany. Plik taki jak jscript9.dll jest łatany prawie co miesiąc. Jeśli porównasz wersję pliku z kilku miesięcy wcześniej z poprawką, która właśnie wyszła, liczba różnic między tymi dwoma plikami bardzo utrudni analizę. Inne pliki nie są łatane zbyt często, więc kliknięcie wspomnianego łącza Zastąpione aktualizacje przeniesie Cię do ostatniej aktualizacji danego pliku, dzięki czemu będziesz mógł porównać odpowiednie wersje. Po zidentyfikowaniu interesującej funkcji za pomocą BinDiff można wygenerować różnicę wizualną, klikając prawym przyciskiem myszy żądaną funkcję z zakładki Funkcje dopasowane i wybierając opcję Wyświetl wykresy przepływu lub klikając żądaną funkcję i naciskając CTRL-E. Poniżej znajduje się przykład różnicy wizualnej. Należy zauważyć, że nie oczekuje się, że będzie można odczytać deasemblację, ponieważ jest ona pomniejszona, aby zmieścić się na stronie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *