

Goblinはrustc 1.85.0(Rust 2024エディション)を必要とします。
Cargo.tomlに追加してください。
[dependencies]
goblin = "0.10"
libgoblinは、バイナリの解析、読み込み、分析のためのワンストップショップを目指しています。
Goblinは主に以下の重要なユースケースをサポートしています。
コア、std不要の#[repr(C)]構造体、コンパイル時間が短く、32ビット/64ビット(または両方)を自由に選択可能。
型の弄り(type punning)。ある型に対して一度関数を定義すれば、32ビットでも64ビットでも動作します – ほとんど何も変更する必要はなく、マクロも不要です!基本的な例についてはexamples/automagic.rsを参照してください。
stdモード。PreadやPwriteによる読み取り・書き込み実装、ファイルからの読み込み、便利なアロケーション、追加メソッドなどを追加します。これは、アロケーションが可能で、ディスクからバイナリを読み込みたいクライアント向けです。
Endian_fd。本当にひどい名前ですね 😆 これは、panopticonやfalconのようなバイナリ分析ツールで必要な、異なるエンディアンのバイナリを読み取るため、またはクロスプラットフォームな異種アーキテクチャのbinutils(例:cargo-symやbingrepが簡単な例)を構築するための基盤として使用します。可能性は無限大です。
このクレートを使ってできること(または実装を手伝えばできるようになること)の例:
Pwriteを派生しています)。no_std cfgを使用してバイナリをロードする。つまり、基本的に構造体と定数の定義(Cヘッダーのようなもの)だけで、fdも出力もstdも不要。libgoblinは、高度に設定可能になるように設計されています。現在のフラグは次のとおりです。
repr(C)構造体定義repr(C)構造体定義repr(C)構造体定義repr(C)構造体定義repr(C)構造体定義repr(C)構造体定義repr(C)構造体定義no_std環境を可能にするメンテナーは、各バックエンドの最初の連絡先レビュアーです。過去のコントリビューション、活動性、基礎知識、そして友好的で社交的な振る舞いに基づいて選ばれます :D
現在、私(@m4b)だけがすべてのPRに対するマージ権限を持っています。将来的には、各バックエンドのメンテナーもマージ権限を持つ可能性があります。
最後に、私はすべてのPRに一応のレビューを行うでしょうが、ほとんど/完全にそのバックエンドのメンテナーに任せることになります。
そして、ビルとテッドの知恵を常に忘れないでください:「お互いに素晴らしくあろう!」
皆さん、ありがとうございます ❤️ !
アルファベット順:
特に明示されていない限り、あなたのコントリビューションは添付のLICENSEファイル(MIT)に記載された条件でライセンスされることに同意したものとみなします。