GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

hugsy

gef – 開発者向けのGEF – GDB拡張機能とリバース機能

投稿日:

開発者向けのGEF – GDB拡張機能とリバース機能 http://gef.rtfd.io

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と同じくらい( PEDAPwnDBGと違って)

詳しくはスクリーンショットのページをご覧ください

セットアップ

クイックインストール

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からgefmasterブランチの最新バージョンを配備します。 利用可能な更新がない場合、 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を備えています!

バグとフィードバック

gefgdb 、exploitationなどの話題について議論するには、Freenode IRCネットワークの##gefチャンネルに参加して##gef あなたはまた、チャンネルを介して私( hugsy )にすることができます。 IRCクライアントを持たない人( weechatirssi )の場合は、 こちらをクリックしてください

バグや機能リクエストについては、ヘルプが必要な場合はここに行き、徹底した説明をしてください。

サイドノートGEFは、GDB APIやその他のLinux固有の情報源( /proc/<pid> )に完全に依存しています。 その結果、一部の機能はGrSecなどのカスタムまたは強化されたシステムでは機能しない可能性があります。

貢献

gefは自分自身で作成、管理されていましたが、 @_hugsy_すべての貢献者のおかげで新鮮に保たれました

またはツールが気に入っていれば、IRCやTwitterなどで簡単に「感謝」してもいいですが、 いつもとても感謝しています。

オープンソースの報酬

私はオープンソースが大好きです。私の他のプロジェクトと同じように、私は 🍺 4 🐛 (aka beer4bugsGEF恩恵を受けて、プロジェクトの生き方を維持し、常により良いものになるよう助けてくださった皆様に感謝いたします。

ルールは簡単で、 GEFへの(実質的な)貢献を提供します:

  1. 新しい機能/コマンドのプルリクエストの送信。
  2. 新しいアーキテクチャサポートのためのプルリクエストの送信。
  3. または関連する問題のリクエストを送信する(バグ、クラッシュなど)。

それについてIRCの##gefチャンネルで私を##gefて、次回に(会議などで)私が会うときに、私はあなたにビールを払うことができます。

あなたがツールがクールだと思うなら、私はビールも受け付けます! 😉

乾杯 🍻

ハッピーハッキング







-hugsy
-, , , , , , , , , , , ,

執筆者: