Github: https://github.com/hugsy/gef
GEF – GDB拡張機能
GEF
は、X86、ARM、MIPS、PowerPC、SPARCがGDBをexploit devのために再び冷却させるためのキック・セットのコマンドです。 Python APIを使用してGDBに追加の機能を提供し、動的解析や開発を進めるプロセスを支援するために、主にエクスプロイタやリバースエンジニアによって使用されることを目指しています。
これは、Python2とPython3の両方を完全にサポートしています(より多くのディストリビューションがPython3のサポートでコンパイルされたgdb
開始するようになる)。
GEF
機能には次のものがあります。
- 1つの単一のGDBスクリプト。
- 完全にOSに依存しない、 NO依存性:
GEF
はバッテリー内蔵で、2秒でインストール可能です( PwnDBGとは異なります )。 - 依存関係の数を高速に制限し、コマンドをできるだけ速くするためにコードを最適化します( PwnDBGとは異なります )。
- GDBの経験を大幅に変更するための50以上のコマンドを提供します。
- より理解しやすいレイアウトをGDB Python APIに提供することで、他のコマンドを作成するために簡単に拡張できます。
- Python2とPython3の両方で一貫して動作します。
- アーキテクチャーの抽象化層を中心に構築されているため、すべてのコマンドは、x86-32 / 64、ARMv5 / 6/7、AARCH64、SPARC、MIPS、PowerPCなどのGDB対応アーキテクチャー( PEDAとは異なります )
- 実際のアプリのデバッグ、開発の活用、CTFと同じくらい( PEDAやPwnDBGと違って)
詳しくはスクリーンショットのページをご覧ください 。
セットアップ
クイックインストール
GDB 7.7以降がインストールされていることを確認してください。
# via the install script
$ wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh | sh
# manually
$ wget -O ~/.gdbinit-gef.py -q https://github.com/hugsy/gef/raw/master/gef.py
$ echo source ~/.gdbinit-gef.py >> ~/.gdbinit
走る
次に再生を開始します(ローカルファイルの場合):
$ gdb -q /path/to/my/bin
gef➤ gef help
または(リモートデバッグ用):
remote:~ $ gdbserver 0.0.0.0:1234 /path/to/file
Running as PID: 666
そして:
local:~ $ gdb -q
gef➤ gef-remote -t your.ip.address:1234 -p 666
更新
あなたのホスト/ VMがインターネットに接続されている場合は、 git
インストールされていなくても、 gef
を最新のバージョンに簡単に更新できます。 python /path/to/gef.py --update
$ python ~/.gdbinit-gef.py --update
Updated
これは、Githubからgef
のmaster
ブランチの最新バージョンを配備します。 利用可能な更新がない場合、 gef
は代わりにNo update
と応答します。
Git経由でインストールする
Gitからインストールするには、単にこのリポジトリを複製し、 ~/.gdbinit
ファイル内のgef.py
へのパスを指定するだけです:
$ git clone https://github.com/hugsy/gef.git
$ echo source `pwd`/gef/gef.py >> ~/.gdbinit
あなたが端に住むのが好きなら、 dev
ブランチに切り替えることができます:
$ git checkout dev
依存関係
何もありません : GEF
は箱から出ます!
ただし、いくつかのコマンドから最もクールな機能をすべて使用するには、次のものをインストールすることをお勧めします。
クイックインストールの場合は、 pip
パッケージバージョンを使用してください:
# for Python2.x
$ pip2 install capstone unicorn keystone-engine ropper
# for Python3.x
$ pip3 install capstone unicorn keystone-engine ropper retdec-python
GDBがコンパイルされたPythonのバージョンに対応するpip
を使用していることを確認してください。 インストール時に問題が発生した場合は、それぞれのプロジェクトのGitHubに問題を投稿してください。 あなたのバグがGEF
に関連していない場合、あなたは答えを得ることができません。
その他のコマンド
GEFは、外部スクリプト用の堅実な基盤を提供するために作られました。 リポジトリgef-extras
は誰でも自由に独自のコマンドを実行してGEFのAPI経由でGDBを拡張できるオープンリポジトリです。
それから恩恵を受ける:
# clone the repo
$ https://github.com/hugsy/gef-extras.git
# specify gef to load this directory
$ gdb -ex 'gef config gef.extra_plugins_dir "/path/to/gef-extras/scripts"' -ex 'gef save' -ex quit
[+] Configuration saved
このリポジトリから定義された構造を使用することもできます。
$ gdb -ex 'gef config pcustom.struct_path "/path/to/gef-extras/structs"' -ex 'gef save' -ex quit
[+] Configuration saved
そこに、あなたは今、 すべての GEFの良さを備えた叙事詩のpwnageを備えています!
バグとフィードバック
gef
、 gdb
、exploitationなどの話題について議論するには、Freenode IRCネットワークの##gef
チャンネルに参加して##gef
。 あなたはまた、チャンネルを介して私( hugsy
)にすることができます。 IRCクライアントを持たない人( weechat
やirssi
)の場合は、 こちらをクリックしてください 。
バグや機能リクエストについては、ヘルプが必要な場合はここに行き、徹底した説明をしてください。
サイドノート : GEF
は、GDB APIやその他のLinux固有の情報源( /proc/<pid>
)に完全に依存しています。 その結果、一部の機能はGrSecなどのカスタムまたは強化されたシステムでは機能しない可能性があります。
貢献
gef
は自分自身で作成、管理されていましたが、 @_hugsy_
、 すべての貢献者のおかげで新鮮に保たれました 。
またはツールが気に入っていれば、IRCやTwitterなどで簡単に「感謝」してもいいですが、 いつもとても感謝しています。
オープンソースの報酬
私はオープンソースが大好きです。私の他のプロジェクトと同じように、私は GEF
恩恵を受けて、プロジェクトの生き方を維持し、常により良いものになるよう助けてくださった皆様に感謝いたします。
ルールは簡単で、 GEF
への(実質的な)貢献を提供します:
- 新しい機能/コマンドのプルリクエストの送信。
- 新しいアーキテクチャサポートのためのプルリクエストの送信。
- または関連する問題のリクエストを送信する(バグ、クラッシュなど)。
それについてIRCの##gef
チャンネルで私を##gef
て、次回に(会議などで)私が会うときに、私はあなたにビールを払うことができます。
あなたがツールがクールだと思うなら、私はビールも受け付けます!
乾杯