chroot("/home/hibari")

備忘録とかに使えそうなノート

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度目の正直をしたところ、

f:id:lcstmarck:20170212162936p:plain

 

起動したーーーー!!これでArchlinuxでも静的バイナリ解析ができるようになった!

IDAの導入というよりかは、lddとpkgfileが想像以上に活躍したので忘れないでおきたいところ