Jak sprawdzić, czy pliki binarne są zbudowane z określonych źródeł

Wcześniejszy projekt, nad którym pracuję, zawiera zewnętrzną bibliotekę w postaci zestawu binarnych plików jar. Zdecydowaliśmy, że do analizy i potencjalnego łatania chcemy uzyskać źródła tej biblioteki, użyć ich do zbudowania nowych plików binarnych i po szczegółowym i wystarczająco długim przełączeniu testów regresji na te pliki binarne.

Załóżmy, że już pobraliśmy i zbudowaliśmy źródła (jestem w fazie planowania). Przed prawdziwym testowaniem chciałbym wykonać pewne „testy zgodności”, aby wykluczyć możliwość, że źródła reprezentują coś znacznie odmiennego od tego, co znajduje się w „starych” plikach binarnych.

Używającjavap narzędzie byłem w stanie wyodrębnić wersję JDK używaną do kompilacji (przynajmniej wierzę, że jest to wersja JDK). Mówi się, że pliki binarne zostały zbudowane przy użyciu głównej wersji 46 i małej 0. WedługTen artykuł mapuje do JDK 1.2.

Załóżmy, że to samo JDK zostanie użyte do kompilacji źródeł.

Thepytanie jest: czy istnieje wiarygodna i prawdopodobnie skuteczna metoda weryfikacji, jeśli oba te pliki binarne są zbudowane z tych samych źródeł? Chciałbym wiedzieć, czy wszystkie podpisy metod i definicje klas są identyczne i czy większość lub wszystkie implementacje metod są identyczne / podobne.

Biblioteka jest dość duża, więc uważam, że szczegółowa analiza zdekompilowanych plików binarnych może nie być opcją.

questionAnswers(4)

yourAnswerToTheQuestion