8日目 メモリのセグメント化 その4
今日はvanellopeさん(@vane11opeさん)に沢山教えていただきました
ありがとうございます🙌
まず、radare2っていうツールがあるらしいです。
apt-get install radare2ってやって
取り敢えずインストールしてみました。
カラフルでとても見やすいです。
操作も楽しい。
これで前回できなかったスタックの成長とかを観察していきたいと思います。
r2 -d ./a.out
これでデバッガで起動できました。
dcu main
でmain関数まで実行できます
V
ってやるとvisual modeというモードになるらしいです。とりあえず
p
を押します。するとrip周辺の命令が表示されました。hjklで移動できるみたいですね。
ここで訳分からん処理のとこに来てしまったら
戻って、
dr
これでripの値を確認して
<ripの値>
これだけ入力すれば見てる対象のメモリを移動できます(日本語でおk
次にripよりちょっと小さいアドレスにtest_functionので0x40055aの直前まで動かしてみます
こんな風になりました。
ripの位置が移動してるのが一目瞭然ですね。
それに合わせてスタックも確認してみます。
ripの直前の4行で引数をrbp-0xNNに渡しているので、rbp-0x34辺りをみてみます。
はい。ちゃんと引数がありました。
よかったあ
次に戻り値も確認します。
x64-86ではrbp+0x08にあるらしいので
そのアドレスを見てみます。
因みにrbp+0x08=0x7ffcda7e6188
なので、戻りアドレスは0x004005a8のはずです。
これはtest_func関数を終了した直後の命令のアドレスとちゃんと一致していました。
なんか、うまく行きました。
操作も適当でよくわからなかったので、慣れていこうと思います。
参考にさせてもらったサイト
ヴァネろぴさんのところ