ArchlinuxにIDA Demoを導入する
みんな大好きIDAくん、もともとWindowsで使用していたけれど基本的に解析するバイナリはELFファイルだしLinux環境に入れたほうが手間も省けるだろうというのが事の始まり
単純に入れられるかなと思ったら、主に2つの大きなエラーを抱えてしまったので全然そんなこともなかった為、備忘録を記す
OSディストリビューションはArchlinuxを使用
まずは公式サイトから"IDA Demo 6.95 for Linux"をダウンロードして展開
$ md5sum idademo695_linux.tgz
$ tar zxvf idademo695_linux.tgz
では展開先に移動してさっそくIDA起動してみよう
$ ./idaq
./idaq: error while loading shared libraries: libgobject-2.0.so.0: cannot open shared object file: No such file or directory
エラー発生。ライブラリが足りないというもの。ならばidaqバイナリが必要としているものを導入してやる必要があるため、それらを調べることから。
$ ldd idaq | grep 'not found'
libgobject-2.0.so.0 => not found
libglib-2.0.so.0 => not found
libX11.so.6 => not found
libz.so.1 => not found
libz.so.1 => not found
libglib-2.0.so.0 => not found
結構足りなかった。それぞれ個別であるわけでもないので何に含まれているかも調べてあげる必要があるのでpkgfileで見てみる
と、思っていたがpkgfileが入っていなかったのでこれを導入してから
$ sudo pacman -S pkgfile
$ sudo pkgfile --update
$ pkgfile libgobject-2.0.so.0
core/glib2
multilib/lib32-glib2
IDAくんは32bit環境での話となるのでmultilibの方を参照すれば十分であると判断した
$ sudo pacman -S lib32-glib2
あとは同様にnot foundがなくなるまで同じことを繰り返せば無事起動できるはず
$ ldd idaq | grep 'not found'
libX11.so.6 => not found
$ pkgfile libX11.so.6
extra/libx11
multilib/lib32-libx11
archlinuxfr/insync
$ sudo pacman -S lib32-libx11
not foundがなくなったので嬉々としてもう一度起動
$ ./idaq
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: linuxfb, minimal, xcb.
Reinstalling the application may fix this problem.
中止 (コアダンプ)
なんてこった...起動しないではないか...今度はQt周りでコケているように見受けられる
今度はQt本体に何か足りないものがあるのか?と思って調べてみた
$ ldd /usr/lib/qt/plugins/platforms/libqxcb.so | grep not
$
なにも起きなかった。ここからしばらく迷走をした後libqxcb.soを試しに探してみたところ
$ sudo find / -name libqxcb.so
/home/User/Downloads/idademo695/plugins/platforms/libqxcb.so
/usr/lib/qt/plugins/platforms/libqxcb.so
2つ該当することが判明した。
自分が勝手に「同名ダイナミックリンクライブラリは1つしか存在しない」という思い込みをしていたことによるもので...一つ学んだ...
ダウンロードした方のディレクトリにあるlibqxcb.soを調べる
$ ldd libqxcb.so | grep not
libSM.so.6 => not found
libICE.so.6 => not found
libfontconfig.so.1 => not found
libfreetype.so.6 => not found
足りない!足りていないぞ!!とテンションが上がったところで先と同じように補っていく
$ pkgfile libSM.so.6
extra/libsm
multilib/lib32-libsm
archlinuxfr/insync
$ sudo pacman -S lib32-libsm$ ldd libqxcb.so | grep not
libfontconfig.so.1 => not found
libfreetype.so.6 => not found
$ pkgfile libfontconfig.so.1
extra/fontconfig
multilib/lib32-fontconfig
archlinuxfr/insync
$ sudo pacman -S lib32-fontconfig
そしてnot foundがなくなったところで3度目の正直をしたところ、
起動したーーーー!!これでArchlinuxでも静的バイナリ解析ができるようになった!
IDAの導入というよりかは、lddとpkgfileが想像以上に活躍したので忘れないでおきたいところ