
Ein schalkhaftes, plattformübergreifendes Binär-Parsing-Crate, geschrieben in Rust.

Goblin benötigt rustc 1.85.0 (Rust 2024 Edition).
Füge dies zu deiner Cargo.toml hinzu
[dependencies]
goblin = "0.10"
libgoblin soll Ihre All-in-One-Lösung für das Parsen, Laden und Analysieren von Binärdateien sein.
Goblin unterstützt hauptsächlich die folgenden wichtigen Anwendungsfälle:
Core, std-freie #[repr(C)]-Strukturen, kurze Kompilierzeit, 32/64 (oder beides) nach Belieben.
Type Punning. Definiere eine Funktion einmal für einen Typ, aber lasse sie auf 32- oder 64-Bit-Varianten funktionieren – ohne wirklich etwas zu ändern, und keine Makros! Siehe examples/automagic.rs für ein einfaches Beispiel.
std-Modus. Dieser fügt Lese- und Schreibimplementierungen über Pread und Pwrite hinzu, Lesen von Datei, praktische Allokationen, zusätzliche Methoden usw. Dies ist für Benutzer, die allozieren können und Binärdateien von der Festplatte lesen möchten.
Endian_fd. Ein wirklich schrecklicher Name 😆 dies ist für die Binäranalyse wie in panopticon oder falcon, die Binärdateien mit fremder Endianness lesen müssen, oder als Grundlage für die Erstellung plattformübergreifender Binutils für fremde Architekturen, z. B. cargo-sym und bingrep sind einfache Beispiele, aber der Himmel ist die Grenze.
Hier sind einige Dinge, die Sie mit dieser Crate tun könnten (oder die Sie bei der Implementierung helfen könnten, damit sie möglich werden):
Pwrite ab).no_std-cfg. D.h., es sind im Wesentlichen nur Struct- und Const-Definitionen (wie ein C-Header) – kein fd, keine Ausgabe, kein std.libgoblin ist als massiv konfigurierbar ausgelegt. Die aktuellen Flags sind:
repr(C)-Strukturdefinitionenrepr(C)-Strukturdefinitionenrepr(C)-Strukturdefinitionenrepr(C)-Strukturdefinitionenrepr(C)-Strukturdefinitionenrepr(C)-Strukturdefinitionenrepr(C)-Strukturdefinitionenno_std-Umgebungen zu erlaubenBetreuer sind die ersten Ansprechpartner für Rezensionen für das jeweilige Backend. Sie werden basierend auf früheren Beiträgen, Aktivität, Grundwissen sowie freundlichem und geselligem Verhalten ausgewählt :D
Derzeit habe nur ich (@m4b) Merge-Rechte für alle PRs. In Zukunft ist es wahrscheinlich, dass der/die Betreuer dieses Backends ebenfalls Merge-Rechte erhalten.
Schließlich werde ich wahrscheinlich immer noch kurze Überprüfungen aller PRs durchführen, werde mich aber größtenteils/ganz auf den Betreuer dieses Backends verlassen.
Und denkt immer an die Weisheit von Bill und Ted: „Be excellent to each other!“
Danke euch allen ❤️ !
In lexikografischer Reihenfolge:
Sofern nicht ausdrücklich anders angegeben, stimmst du zu, dass deine Beiträge unter der im zugehörigen LICENSE-Datei (MIT) beschriebenen Lizenz lizenziert sind.