Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
goblin — Rustで書かれた、いたずら好きでクロスプラットフォームなバイナリパース用クレート | Kitploit
ツール/GitHubGitHub/m4b/goblin
リバースエンジニアリングファジングバイナリ解析
GitHubm4b/goblin

goblin

Rustで書かれた、いたずら好きでクロスプラットフォームなバイナリパース用クレート

リポジトリを見る
1.5k2002ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

libgoblin

Actions crates.io version

正しい言葉を言いましょう

ドキュメント

https://docs.rs/goblin/

changelog

使用法

Goblinはrustc 1.85.0(Rust 2024エディション)を必要とします。

Cargo.tomlに追加してください。

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

機能

  • 素晴らしいクレート名
  • ゼロコピー、クロスプラットフォーム、エンディアン対応のELF64/32実装 – すごい!
  • ゼロコピー、クロスプラットフォーム、エンディアン対応の32/64ビットMach-oパーサー – 驚き!
  • PE 32/64ビットパーサー – ビンゴ!
  • Unix および BSD形式のアーカイブパーサー(後者は@willglynnのおかげ) – 万歳!
  • 多数のcfgオプション – 頭を混乱させ、ソースを読むと怒り狂うこと間違いなし!
  • ファズテスト済み – 「Goblinは1億回のファズテスト、シード1〜100で各100万回のテストに耐えたことを嬉しく報告します」 – @sanxiyn
  • テスト

libgoblinは、バイナリの解析、読み込み、分析のためのワンストップショップを目指しています。

ユースケース

Goblinは主に以下の重要なユースケースをサポートしています。

  1. コア、std不要の#[repr(C)]構造体、コンパイル時間が短く、32ビット/64ビット(または両方)を自由に選択可能。

  2. 型の弄り(type punning)。ある型に対して一度関数を定義すれば、32ビットでも64ビットでも動作します – ほとんど何も変更する必要はなく、マクロも不要です!基本的な例についてはexamples/automagic.rsを参照してください。

  3. stdモード。PreadやPwriteによる読み取り・書き込み実装、ファイルからの読み込み、便利なアロケーション、追加メソッドなどを追加します。これは、アロケーションが可能で、ディスクからバイナリを読み込みたいクライアント向けです。

  4. Endian_fd。本当にひどい名前ですね 😆 これは、panopticonやfalconのようなバイナリ分析ツールで必要な、異なるエンディアンのバイナリを読み取るため、またはクロスプラットフォームな異種アーキテクチャのbinutils(例:cargo-symやbingrepが簡単な例)を構築するための基盤として使用します。可能性は無限大です。

このクレートを使ってできること(または実装を手伝えばできるようになること)の例:

  1. コンパイラを作成し、それを使ってバイナリを生成する(すべての生のC構造体はPwriteを派生しています)。
  2. panopticonやfalconのようなバイナリ分析ツールを作成し、さまざまなバイナリ形式をロード、解析、分析する。
  3. 半機能的な動的リンカを作成する。
  4. カーネルを作成し、no_std cfgを使用してバイナリをロードする。つまり、基本的に構造体と定数の定義(Cヘッダーのようなもの)だけで、fdも出力もstdも不要。
  5. bin2jsonツールを作成する。なぜバイナリ形式をJSONにしないのか?

Cfgs

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

コントリビューション

特に明示されていない限り、あなたのコントリビューションは添付のLICENSEファイル(MIT)に記載された条件でライセンスされることに同意したものとみなします。

  1. コミットには影響を受けるバイナリコンポーネントを接頭辞として付けてください。具体的であればあるほど良いです。例えば、elfモジュールのリロケーションのみを変更した場合は、"elf.reloc: added new constants for Z80"のようにしてください。
  2. コミットメッセージは変更内容を説明する必要があります。"changed"や"fix"のような汎用的なものは避けてください。このようなコミットをPRにプッシュした場合、@m4bまたは誰かが squash する可能性が高いです。
  3. モジュールに大きな変更を加える場合は、まず issue を立てて議論してください。技術的に良い方向でなければ、あなたの時間を無駄にしたくありません。
  4. PRが注目されていない場合は、PRに上がったすべての関連コメントに返信し、それでも返事がない場合は、GitHubで@m4bに ping するか、遠慮なく@m4bにメールしてください。
  5. 新しい機能を追加する場合は、テストを追加してください。そうでない場合でも、テストを追加することは歓迎します。テストは素晴らしく、Rustでは簡単です。
ツールをダウンロード
@ivlzme
  • @jackcmay
  • @jan-auer
  • @Javagedes
  • @jessehui
  • @Jhynjhiruu
  • @JohnScience
  • @johannst
  • @joschock
  • @jdub
  • @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