Was ist das AR-Dateiformat?
Das .ar-Archivformat stammt aus Unix Version 1 (1971) und wurde in den Bell Labs als ursprünglicher Unix-Archivierer entwickelt. Eine .ar-Datei verkettet mehrere Elementdateien, wobei jeder ein fester 60-Byte-ASCII-Header vorangestellt ist, der den Namen des Elements, die Änderungszeit, Berechtigungen und die Byte-Größe aufzeichnet. Jedes Archiv beginnt mit der 8-Byte-Magic-Zeichenfolge !<arch>, gefolgt von einem einzelnen Zeilenvorschub (0x0A).
Das Format speichert Elemente standardmäßig unkomprimiert. Es existieren zwei Hauptvarianten:
- Die BSD-Variante (verwendet auf macOS) erweitert lange Dateinamen inline nach jedem Element-Header.
- Die System V/GNU-Variante (verwendet auf Linux) speichert lange Namen in einem speziellen
//-Element und stellt einen/-Symbolindex-Eintrag voran, um eine effiziente Suche zur Link-Zeit zu ermöglichen.
Heute begegnet man .ar am häufigsten als statische .a-Bibliotheken auf Linux und macOS, wo das ar-Tool aus den GNU binutils die Standardimplementierung ist. Debian .deb-Pakete sind ebenfalls ar-Archive - das Umbenennen einer .deb-Datei und deren Extraktion offenbart die inneren Elemente control.tar und data.tar. Gängige ar-Befehle: ar rcs libfoo.a *.o erstellt ein Archiv, ar t archive.ar listet Elemente auf und ar x archive.ar extrahiert sie.
Sicherheit
RISIKO: LOWAR-Archive selbst sind Container ohne ausführbare Semantik - sie können keinen Code automatisch ausführen. Die darin enthaltenen Elemente können jedoch kompilierte Objektdateien oder ausführbare Dateien sein, die bösartig sein könnten. Wenn Sie ein ar-Archiv aus einer nicht vertrauenswürdigen Quelle extrahieren, überprüfen Sie die extrahierten Dateien, bevor Sie sie ausführen. Statische Bibliotheken, die in Ihre Binärdateien gelinkt werden, werden Teil dieser Binärdateien; eine manipulierte statische Bibliothek stellt einen Angriffsvektor für die Lieferkette dar (z. B. kompromittierte Toolchain-Archive). Überprüfen Sie beim Herunterladen von Toolchain-Tarballs, die .a/.ar-Bibliotheken enthalten, immer die Prüfsummen.
Formatdetails
kurz gefasst- Debian-Paket (.deb) - Eine .deb-Datei ist ein ar-Archiv, das die Elemente control.tar.* und data.tar.* enthält; der ar-Container ist für Endbenutzer transparent (dpkg verwaltet ihn).
- .a statische Bibliothek (gleiches Format, andere Erweiterung) - Auf Linux/macOS ist .a die konventionelle Erweiterung für statische Bibliotheken im ar-Format; .ar ist weniger gebräuchlich, aber identisch.
Programme zum Öffnen von AR-Dateien
Technische Details
technische Spezifikation| Magic Bytes | 21 3C 61 72 63 68 3E 0A - ASCII-Zeichenfolge !<arch> plus Zeilenvorschub (0x0A) bei Offset 0 |
| MIME-Typ | application/x-archive |
| Header-Größe pro Element | 60 Bytes (feste Breite, ASCII-kodierte Felder) |
| Header-Feld-Layout | Dateiname 16 B, Änderungszeit 12 B, UID 6 B, GID 6 B, Modus 8 B, Größe 10 B, Magic 2 B |
| Element-Ausrichtung | 2-Byte-Grenze; Elemente mit ungerader Länge werden mit einem einzelnen Zeilenvorschubzeichen (0x0A) aufgefüllt |
| Komprimierung | Standardmäßig keine - Elementdateien werden wortwörtlich und unkomprimiert gespeichert |
| Integritätsprüfung | Keine Prüfsummen auf Element- oder Archivebene im ar-Format |
| Dateinamen-Limit | 16 Zeichen im festen Header; unbegrenzt über BSD-Inline-Erweiterung oder System V //-Elementtabelle |
| Formatvarianten | BSD (macOS): inline erweiterte Namen; System V/GNU (Linux): //-Elementtabelle für lange Namen |
| GNU-Symbolindex | GNU ar stellt .a-Archiven ein /-Symboltabellenelement voran, um eine effiziente Symbolsuche zur Link-Zeit zu ermöglichen |
| Unterstützung für Thin Archives | GNU Thin Archives verwenden Magic 21 3C 74 68 69 6E 3E 0A (!<thin>) und speichern Dateipfade, keine Daten |
| Primäre Verwendungszwecke | .a statische Bibliotheken (Linux, macOS), .deb Debian-Pakete, .ipk OpenWrt-Pakete |
| Plattformen | Linux, macOS, FreeBSD, Solaris, AIX, Windows (MinGW/Cygwin/WSL) |
| Veröffentlicht | 1971 (Unix v1, as the original Unix archiver) |
| Neueste Version | POSIX.1-2017 specifies the format; GNU ar (binutils) is current implementation |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | pubs.opengroup.org |
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu AR-Dateien.