Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
goblin — Озорной, кроссплатформенный крейт для бинарного парсинга, написанный на Rust. | Kitploit
Инструменты/GitHubGitHub/m4b/goblin
Обратная инженерияФаззингАнализ Бинарных Файлов
GitHubm4b/goblin

goblin

Озорной, кроссплатформенный крейт для бинарного парсинга, написанный на Rust.

Репозиторий
1.5k200691 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

libgoblin

Actions crates.io version

say the right words

Документация

https://docs.rs/goblin/

список изменений

Использование

Goblin требует rustc 1.85.0 (редакция Rust 2024).

Добавьте в ваш Cargo.toml

[dependencies]
goblin = "0.10"

Возможности

  • отличное название крейта
  • zero-copy, кроссплатформенная, с учётом порядка байт реализация ELF64/32 — вау!
  • zero-copy, кроссплатформенная, с учётом порядка байт реализация 32/64-битного Mach-o — здорово!
  • парсер PE 32/64 — бинго!
  • парсер архивов в стиле Unix и BSD (второй благодаря [@willglynn]) — ура!
  • множество опций cfg — от них голова пойдёт кругом, и вы будете злиться, читая исходники!
  • прошёл фаззинг — "Я рад сообщить, что goblin выдержал 100 миллионов прогонов фаззинга, 1 миллион прогонов на каждый сид 1~100." — [@sanxiyn]
  • тесты

libgoblin стремится быть вашим универсальным инструментом для разбора, загрузки и анализа бинарных файлов.

Примеры использования

Goblin в первую очередь поддерживает следующие важные сценарии использования:

  1. Базовые, std-free структуры #[repr(C)], минимальное время компиляции, 32/64 (или обе) на ваш выбор.

  2. Type punning. Определите функцию один раз для типа, и она будет работать как с 32-битными, так и с 64-битными вариантами — без реальных изменений и без макросов! Смотрите examples/automagic.rs для простого примера.

  3. Режим std. Он добавляет реализации чтения и записи через Pread и Pwrite, чтение из файла, удобные выделения памяти, дополнительные методы и т.д. Это для клиентов, которые могут выделять память и хотят читать бинарные файлы с диска.

  4. Endian_fd. Ужасное название 😆 это для бинарного анализа, как в panopticon или falcon, где нужно читать бинарные файлы с чужим порядком байт, или как основа для создания кроссплатформенных утилит для работы с бинарными файлами чужих архитектур, например, cargo-sym и bingrep — простые примеры этого, но возможности безграничны.

Вот некоторые вещи, которые вы могли бы сделать с этим крейтом (или помочь реализовать, чтобы они стали возможны):

  1. Написать компилятор и использовать его для генерации бинарных файлов (все сырые C-структуры имеют произвольный [Pwrite][scroll]).
  2. Написать инструмент для анализа бинарных файлов, который загружает, разбирает и анализирует различные бинарные форматы, например, panopticon или falcon.
  3. Написать полуработающий динамический компоновщик.
  4. Написать ядро и загружать бинарные файлы с помощью конфигурации no_std. То есть, по сути, это просто определения структур и констант (как C-заголовок) — никаких файловых дескрипторов, вывода, std.
  5. Написать инструмент bin2json, потому что почему бы бинарным форматам не быть в JSON?

Конфигурации (cfg)

libgoblin спроектирован так, чтобы быть максимально настраиваемым. Текущие флаги:

  • elf64 — 64-битные ELF-бинарные файлы, определения структур repr(C)
  • elf32 — 32-битные ELF-бинарные файлы, определения структур repr(C)
  • mach64 — 64-битные Mach-O, определения структур repr(C)
  • mach32 — 32-битные Mach-O, определения структур repr(C)
  • pe32 — 32-битные PE, определения структур repr(C)
  • pe64 — 64-битные PE, определения структур repr(C)
  • te — Terse Executable (TE), определения структур repr(C)
  • archive — парсер архивов Unix
  • endian_fd — разбор в соответствии с порядком байт в бинарном файле
  • std — для поддержки окружений no_std

Сопровождающие

  1. PE: [@kkent030315]
  2. Elf: [@m4b], заявки принимаются
  3. Mach-o: [@m4b], заявки принимаются

Сопровождающие — это рецензенты первого контакта для соответствующего бэкенда. Они выбираются на основе предыдущих вкладов, активности, базовых знаний и дружелюбного и общительного поведения :D

В настоящее время только я ([@m4b]) имею права на слияние всех PR. В будущем, вероятно, сопровождающие для данного бэкенда также получат права на слияние.

Наконец, я всё равно, скорее всего, буду бегло просматривать все PR, но в основном/полностью буду полагаться на сопровождающего для данного бэкенда.

И всегда помните мудрость Билла и Теда: "Будьте превосходны друг к другу!"

Участники

Спасибо вам всем ❤️ !

В лексикографическом порядке:

  • [@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]
  • [@ivlzme]
  • [@jackcmay]
  • [@jan-auer]
  • [@Javagedes]
  • [@jessehui]
  • [@jdub]
  • [@Jhynjhiruu]
  • [@JohnScience]
  • [@johannst]
  • [@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]
Скачать инструмент