Wie kann man statische Bibliotheken finden und auflisten, die von einer Software unter Linux verwendet werden?

506
learnerX

Hintergrund : Wir haben eine Software eines Drittanbieters für unsere Linux-Distribution, die wir derzeit testen lubuntu. Wir haben die Installationsdateien und ein install.shShell-Skript, das die erforderlichen Binärdateien für die Software in den richtigen Verzeichnissen installiert.

Wir möchten feststellen, welche statischen Bibliotheken intern von dieser Software verwendet werden (damit wir feststellen können, ob sie veraltet sind und Schwachstellen in unserer Umgebung verursachen).

Was wir bisher gemacht haben : Wir haben uns angeschaut, lddaber es werden nur gemeinsam genutzte oder dynamische Bibliotheken aufgelistet. Gleiches mit objdump. Wir haben stringsuns die Zeichenfolgen angesehen, die in einigen dieser Binärdateien verborgen sind, um Zeichen der Bibliotheksversionsnummern und dergleichen zu sehen. Dies ist jedoch ein sehr zeitaufwändiger und ineffizienter Prozess für große Binärdateien.

Frage : Wie können in einer Linux-Umgebung verwendete statische Bibliotheken ermittelt und aufgelistet werden?

3
Wenn der Hersteller alle Verknüpfungsinformationen aus der resultierenden Binärdatei entfernt hat, ist dies nicht möglich. "Gcc" hinterlässt jedoch häufig einige Informationen. Zuerst schauen Sie sich die verfügbaren Abschnitte in der Binärdatei mit `objdump -afh / your / file` an. Bearbeiten Sie die Frage mit der Ausgabe. dirkt vor 5 Jahren 0
In Anbetracht dessen, was Sie bereits versucht haben, müssen Sie [Reverse Engineer] (https://reverseengineering.stackexchange.com/) die ganze Sache machen. Mit [readelf] (http://man7.org/linux/man-pages/man1/readelf.1.html) können Sie einige oder nützliche Informationen erhalten. Viel Glück ! C0deDaedalus vor 5 Jahren 0

1 Antwort auf die Frage

0
DavidPostill

Wie können wir statische Bibliotheken entdecken und auflisten, die in einem Linux-Programm verwendet werden?

ldd <exe filename> zeigt dynamisch verknüpfte Bibliotheken

nm <exe filename> zeigt die Symbole in der Datei.

Um zu sehen, welche Symbole aus statischen Bibliotheken stammen, müssen Sie nm gegen diese Bibliotheken laufen, um eine Liste der darin enthaltenen Symbole (Funktionen usw.) zu erhalten und sie mit dem der Liste Ihrer Symbole zu vergleichen nm <exe filename>.

Sie vergleichen Listen mit dem commBefehl. Siehe man commfür weitere Einzelheiten.

Dies wurde aus diesem Forum gemacht hier .

Quelle Abrufen einer Liste statischer Bibliotheken, die in einer ausführbaren Datei verwendet werden, Antwort von DrAl

"nm" sagt "keine Symbole" für alle Binaries, die wir bisher für die Software ausprobiert haben. learnerX vor 5 Jahren 0
Außerdem heißt es in einem Kommentar zu dieser Antwort: "Wenn es sich um ein unbekanntes Binärprogramm handelt, wissen wir nicht, welche Bibliotheken vorhanden sind." Wenn Sie also "nm" gegen diese Bibliotheken laufen, klingt das "selbstdotierend". learnerX vor 5 Jahren 0
Warum fragst du nicht einfach den Verkäufer? DavidPostill vor 5 Jahren 0