radare2とradare2-webuiのインストール
defcon2016qの他の人のwriteupを読んでいたら、どうも私のradare2となんか出力(?)が違う。そういえば大分前にインストールしてから一度もアップデートしてないなぁ、と思い、アップデートしてみました。
まずはradare2のホームページにあるコマンドで、radare2本体をインストール。
git clone https://github.com/radare/radare2
cd radare2
sys/install.sh
何事もなく無事終了。起動してみると・・・?
> r2 baby-re
>V
>V
あれ?WebUIじゃなくなってる・・・?
ホームページのスクリーンショットもグラフ画面はenyoというWebUIになってるし、なんで?
前回はなんか別にWebUIをインストールしたような気がするので、以下を追加でインストールしてみました。
公式サイト様のインストール方法:
radare2-webui/README.md at master · radare/radare2-webui · GitHub
これに従って、まず一つ目のコマンドから実行。
$ r2pm -i www-enyo
~中略~make[1]: npm: Command not found
make[1]: *** [build] Error 127
~中略~make: *** [enyo] Error 2
$
何かエラーがでて止まってしまいました。npmが見つからないというエラーのようなので、npmを先にインストールしてからリトライ。
$ sudo apt-get install npm
$ r2pm -i www-enyo
~中略~
npm ERR! Error: CERT_NOT_YET_VALID
~中略~
$
違うエラーがでました。CERT_NOT_YET_VALIDとのことなので、電子署名(証明書)の検証に失敗している模様。面倒なので証明書の検証を無視するよう設定してからリトライ。(私はrpmもSSL無効にしています)
$ npm config set strict-ssl false
$ r2pm -i www-enyo
~中略~
/usr/bin/env: node: No such file or directory
~中略~
$
またまた今度は違うエラーが発生。パッと見てなんのことかわからなかったけど、どうも今度はnodeがインストールされていないためエラーになっている模様。nodeをインストールしてリトライ。
$ sudo apt-get install node
$ r2pm -i www-enyo
~中略~
make -C www/enyo build
make[1]: Entering directory `/home/XXX/.config/radare2/r2pm/git/radare2-webui/www/enyo'
npm install
/home/XXX/.config/radare2/r2pm/git/radare2-webui/www/enyo/node_modules/.bin/gulp
make[1]: *** [build] Error 1
make[1]: Leaving directory `/home/XXX/.config/radare2/r2pm/git/radare2-webui/www/enyo'
make: *** [enyo] Error 2
$
うーん、この出力だけでは意味不明。nodeのインストールの仕方が悪かったのかな?と思い、nodeではなくnodejsを再インストール。
$ sudo apt-get remove node
$ curl -sL https://deb.nodesource.com/setup | sudo bash -
$ sudo apt-get install -y nodejs
$ sudo apt-get update$ r2pm -i www-enyo
$ r2pm -i www-p
$ r2pm -i www-t
$ r2pm -i www-m
~中略~
request.name = path.posix.join(options.fontsDir, request.name);
^
TypeError: Cannot call method 'join' of undefined
make[1]: *** [build] Error 8
make: *** [material] Error 2$
www-enyo、www-p、www-tは成功し、かなり進みました。
しかし、www-mだけエラーが出てしまいます。このエラーは、radare2-webuiのインストール方法のところのtroubleshootに書いてあり、まだnodeがうまくいっていない模様。nodeのバージョンをあげるため、stroubleshootに書いてあった以下のコマンドを実行。
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
これすらエラーになりました。もうわけわかんない。
先ほどから証明書関係のエラーが出ていましたが、どうもn stableの失敗も、内部のcurl呼び出しで証明書関係エラーが出てるっぽい。最初から証明書無視とかするから泥沼にはまるんですよね。ググってみると、heartbleedのせいで一部のサイトがデフォルトではつながらなくなっていて、証明書無視コマンドをつけなければいけないとのこと。しょうがないので、n stableではなくて手動でダウンロードしてインストール。
$ wget https://nodejs.org/dist/node-latest.tar.gz --no-check-certificate
$ tar xvzf node-latest.tar.gz
$ cd node-vXXXX
$ ./configure
$ make
$ sudo make install
$ r2pm -i www-enyo
$ r2pm -i www-p
$ r2pm -i www-t
$ r2pm -i www-m
今度はうまくいきました。
Windowsは便利だなぁ(白目)
起動方法はこちら
r2 -c=H baby-re
p(desktop)形式はちょっとわかりづらいです。完成度が低いイメージ。
他にも、enyo(mobile),m(responsive),t(legacy)などがあります。
私が使ってたのはenyoでした。4つのモードの中では無難。
mも無難そうではありますが、CTF目的では、enyoよりは使いづらそう。
tは、これ使うくらいならプロンプト上でviewモードでいいんじゃないでしょうか。
無難そうなenyoでさえ、hopperには遠くおよばない感じですので、
プロンプトのviewモードを覚えようと思います。