Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
goblin — Ein schalkhaftes, plattformübergreifendes Binär-Parsing-Crate, geschrieben in Rust. | Kitploit
Tools/GitHubGitHub/m4b/goblin
Reverse EngineeringFuzzingBinäranalyse
GitHubm4b/goblin

goblin

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

Repository anzeigen
1.5k200vor 2 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

libgoblin

Actions crates.io version

Sag die richtigen Worte

Dokumentation

https://docs.rs/goblin/

changelog

Verwendung

Goblin benötigt rustc 1.85.0 (Rust 2024 Edition).

Füge dies zu deiner Cargo.toml hinzu

root@kitploit:~
[dependencies]
goblin = "0.10"

Funktionen

  • großartiger Crate-Name
  • Zero-Copy, plattformunabhängige, endianness-bewusste ELF64/32-Implementierung – wow!
  • Zero-Copy, plattformunabhängiger, endianness-bewusster 32/64-Bit-Mach-o-Parser – zoiks!
  • PE 32/64-Bit-Parser – bing!
  • Ein Unix- und BSD-Archiv-Parser (letzterer mit freundlicher Genehmigung von @willglynn) – huzzah!
  • Viele cfg-Optionen – sie lassen dich den Kopf schütteln und machen dich wütend, wenn du den Quellcode liest!
  • Gefuzzt – „I am happy to report that goblin withstood 100 million fuzzing runs, 1 million runs each for seed 1~100.“ – @sanxiyn
  • Tests

libgoblin soll Ihre All-in-One-Lösung für das Parsen, Laden und Analysieren von Binärdateien sein.

Anwendungsfälle

Goblin unterstützt hauptsächlich die folgenden wichtigen Anwendungsfälle:

  1. Core, std-freie #[repr(C)]-Strukturen, kurze Kompilierzeit, 32/64 (oder beides) nach Belieben.

  2. 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.

  3. 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.

  4. 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):

  1. Schreiben Sie einen Compiler und verwenden Sie ihn, um Binärdateien zu erzeugen (alle rohen C-Strukturen leiten Pwrite ab).
  2. Schreiben Sie ein Binäranalysewerkzeug, das verschiedene Binärformate lädt, parst und analysiert, z. B. panopticon oder falcon.
  3. Schreiben Sie einen halbwegs funktionierenden dynamischen Linker.
  4. Schreiben Sie einen Kernel und laden Sie Binärdateien mit no_std-cfg. D.h., es sind im Wesentlichen nur Struct- und Const-Definitionen (wie ein C-Header) – kein fd, keine Ausgabe, kein std.
  5. Schreiben Sie ein bin2json-Werkzeug, denn warum sollten Binärformate nicht in JSON sein?

Konfigurationsoptionen (Cfgs)

libgoblin ist als massiv konfigurierbar ausgelegt. Die aktuellen Flags sind:

  • elf64 - 64-Bit-ELF-Binärdateien, repr(C)-Strukturdefinitionen
  • elf32 - 32-Bit-ELF-Binärdateien, repr(C)-Strukturdefinitionen
  • mach64 - 64-Bit-Mach-o-repr(C)-Strukturdefinitionen
  • mach32 - 32-Bit-Mach-o-repr(C)-Strukturdefinitionen
  • pe32 - 32-Bit-PE-repr(C)-Strukturdefinitionen
  • pe64 - 64-Bit-PE-repr(C)-Strukturdefinitionen
  • te - Terse Executable (TE) repr(C)-Strukturdefinitionen
  • archive - ein Unix-Archiv-Parser
  • endian_fd - parst entsprechend der Endianness in der Binärdatei
  • std - um no_std-Umgebungen zu erlauben

Betreuer

  1. PE: @kkent030315
  2. Elf: @m4b, Bewerbungen offen
  3. Mach-o: @m4b, Bewerbungen offen

Betreuer 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!“

Mitwirkende

Danke euch allen ❤️ !

In lexikografischer Reihenfolge:

  • @000lbh
  • @2vg
  • @5225225
  • @alessandrod
  • @amanieu
  • @anfedotoff
  • @apalm
  • @baloo
  • @BinFlip
  • @burjui
  • @CalebFenton
  • @chf0x
  • @connorkuehl
  • @dancrossnyc
  • @DreydenGys
  • @dureuill
  • @Evian-Zhang
  • @ExPixel
  • @flanfly
  • @glandium
  • @glslang
  • @Gelbpunkt
  • @gunbux
  • @h33p
  • @hannahfluch
  • @Hexorg
  • @ibabushkin
  • @ideeockus

Mitwirken

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.

  1. Bitte versehe Commits mit einem Präfix der betroffenen Binärkomponente; je spezifischer, desto besser, z.B. wenn du nur Relocation im elf-Modul änderst, dann verwende „elf.reloc: added new constants for Z80“
  2. Commit-Nachrichten müssen die Änderung erklären, keine allgemeinen „changed“ oder „fix“; wenn du solche Commits in einem PR pushst, sei dir bewusst, dass @m4b oder jemand sie höchstwahrscheinlich squashen wird.
  3. Wenn du eine große Änderung an einem Modul vornimmst, eröffne bitte zuerst ein Issue und lass uns diskutieren; ich möchte deine Zeit nicht verschwenden, wenn es keine gute technische Richtung ist oder so.
  4. Wenn dein PR keine Aufmerksamkeit erhält, antworte bitte auf alle relevanten Kommentare im PR, und wenn immer noch keine Antwort kommt, pinge @m4b auf GitHub und zögere nicht, @m4b eine E-Mail zu schreiben.
  5. Bitte füge Tests hinzu, wenn du eine neue Funktion hinzufügst. Füge ruhig auch Tests hinzu, wenn du keine neue Funktion hinzufügst, Tests sind großartig und einfach in Rust.
Tool herunterladen
@ivlzme
  • @jackcmay
  • @jan-auer
  • @Javagedes
  • @jessehui
  • @jdub
  • @Jhynjhiruu
  • @johannst
  • @JohnScience
  • @joschock
  • @jrmuizel
  • @jsgf
  • @Jvlegod
  • @keith
  • @kjempelodott
  • @kkent030315
  • @ko1n
  • @le-jzr
  • @Lichtso
  • @lion128
  • @lissyx
  • @llogiq
  • @lumag
  • @lzutao
  • @lzybkr
  • @m-hilgendorf
  • @makubacki
  • @mmaekr
  • @m4b
  • @messense
  • @mitsuhiko
  • @mkroening
  • @mre
  • @Mrmaxmeier
  • n01e0
  • nathaniel-daniel
  • @nick96
  • @nico-abram
  • @npmccallum
  • @pchickey
  • @philipc
  • @PJB3005
  • @prettyroseslover
  • @Pzixel
  • @quake
  • @raindev
  • @RaitoBezarius
  • @ReturnRei
  • @rocallahan
  • @sanxiyn
  • @SAY-5
  • @skdltmxn
  • @sollyucko
  • @supervacuus
  • @Swatinem
  • @SweetVishnya
  • @SquareMan
  • @tathanhdinh
  • @Techno-coder
  • @tiann
  • @ticki
  • @Timmmm
  • @Tiwalun
  • @track-5
  • @tux3
  • @wickerwacka
  • @willglynn
  • @woodruffw
  • @wyxloading
  • @xcoldhandsx
  • @x0rb3l
  • @x64k