0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rev】radare2(r2)コマンドチートシート

0
Posted at

CTFのReverse問題で最近 radare2(r2) を使うことが多くなってきたのでチートシートを残しておく。

1. 起動と基本解析

バイナリを開き、自動解析を行うまでのステップ。

コマンド 説明
r2 ./binary バイナリを開く(読み取り専)
r2 -A ./binary 開くと同時にaaa(全解析)を実行
r2 -d ./binary デバッグモードで起動
r2 -w ./binary 書き込みモードで起動
aaa 全自動解析(関数名や参照を特定する)

2. 情報収集

バイナリの素性を調べるコマンド

コマンド 説明
iI バイナリ情報(Arch, OS, Canary/NX/PIEなどの保護情報)
il インポート関数の表示(printf,strcmp等)
is シンボルテーブルの表示
afl 解析済みの関数一覧を表示
iz データセクション内の文字列を表示
izz バイナリ全体の文字列を検索

3. 移動と表示

コードの特定の場所に移動し、内容を確認するコマンド

コマンド 説明
s main main関数へ移動
s 0x401234 指定したアドレスへ移動
s- 履歴を一つ戻る
pdf 現在の一の関数をディスアセンブル表示
pd 20 現在位置から20行分ディスアセンブル表示
px 64 現在位置から64バイト分をHex表示
axt [addr/sym]` 指定した場所への参照元を表示

4. ビジュアルモード

  • V: ビジュアルモードに入る(pで表示形式切り替え)
  • VV: グラフモード(関数フローを視覚化)
  • v: ビジュアルパネルモード

ビジュアル/グラフモード中の動作

キー 説明
hjkl 移動(左下上右)
g 指定アドレス/関数へジャンプ
u ジャンプから戻る
dr レジスタ値を表示(デバッグ時)
? モード内ヘルプ

5. 検索とパッチ

バイナリを書き換えたり、特定のバイトを探したりする

コマンド 説明
/ string 文字列を検索
/x 9090 16進数バイト列を検索
wa nop 現在位置をnopで上書き
wx 9090 現在位置を16進数(9090)で上書き

6. デバッグ

動的解析(-dで起動時)に利用

コマンド 説明
db [addr] ブレークポイントを設定
db- [addr] ブレークポイントを解除
dc 実行を継続
dso ステップオーバー
dr 全レジスタの値を表示
px @ [reg] 指定レジスタの指すメモリを表示(例: px @ rsp)

6. 特殊修飾子

修飾子 説明
@ [addr] 一時的なシーク pd 5 @ sym.main(mainを5行表示)
~[str] 内部grep afl ~main(関数リストからmainを検索)
~:n 行抽出 iz~{0}(文字列リストの一行目だけ表示)
j JSON出力。結果をJSON化 ij(バイナリ情報をJSONで出力
@@ [iterator] イテレータ。リストの各要素に対してコマンドを繰り返し実行 pdf @@ sym.*(全てのsymbolをpdf表示)

7. その他・シェル連携

コマンド 説明
![cmd] 外部シェルコマンドを実行(例: !ls,!python solve.py)
. [cmd] コマンドの結果をr2内で実行
? [math] 計算機。16進数や2進数の変換にも便利(例: ? 0x10 + 5)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?