環境
- Linux version 4.6.0-kali1-amd64
おそらくDebian系ならこれでできると思う
IDA Demo 6.95 for Linuxをダウンロードする
$ mkdir temp
$ cd temp
$ wget https://out7.hex-rays.com/files/idademo695_linux.tgz
$ tar xvzf idademo695_linux.tgz
$ cd idademo695
ソースではなく実行形式が含まれているので
$ ./idaq
で実行できるがこのKaliLinuxのバージョンではライブラリ等が足りないので
$ ./idaq
bash: ./idaq: そのようなファイルやディレクトリはありません
となる。
本記事はこれを実行できるように試行錯誤したものなので、
結果だけ知りたいという人は最後のコマンドを実行してください
前準備
$ apt update
$ apt upgrade
ライブラリのインストール
IDA-Demoでは32ビットのライブラリが必要なので
$ dpkg -S libgthread-2.0.so.0
libglib2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4800.1
libglib2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0
dpkg
でライブラリが含まれているパッケージを探す今回は
$ apt install libglib2.0-0:amd64
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
libglib2.0-0 はすでに最新バージョン (2.48.1-2) です。
libglib2.0-0 は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
amd64
だけではなくi386
も必要なので
$ apt install libglib2.0-0:i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ libglib2.0-0:i386 が見つかりません
E: 'libglib2.0-0' に一致するパッケージは見つかりませんでした
E: 正規表現 'libglib2.0-0' ではパッケージは見つかりませんでした
OSが64ビットなので32ビットのパッケージのリポジトリは追加されていないのでみつからない、なので
$ dpkg --add-architecture i386
$ apt update
ヒット:1 http://ftp.ne.jp/Linux/packages/kali/kali kali-rolling InRelease
取得:2 http://ftp.ne.jp/Linux/packages/kali/kali kali-rolling/main i386 Packages [13.9 MB]
取得:3 http://ftp.ne.jp/Linux/packages/kali/kali kali-rolling/non-free i386 Packages [135 kB]
取得:4 http://ftp.ne.jp/Linux/packages/kali/kali kali-rolling/contrib i386 Packages [86.7 kB]
14.1 MB を 11秒 で取得しました (1,186 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
パッケージはすべて最新です。
追加してからもう一度インストールする
$ apt install libglib2.0-0:i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
gcc-6-base:i386 libc6:i386 libffi6:i386 libgcc1:i386 libpcre3:i386
libselinux1:i386 zlib1g:i386
提案パッケージ:
glibc-doc:i386 libc-l10n:i386
以下のパッケージが新たにインストールされます:
gcc-6-base:i386 libc6:i386 libffi6:i386 libgcc1:i386 libglib2.0-0:i386
libpcre3:i386 libselinux1:i386 zlib1g:i386
アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 0 個。
5,986 kB のアーカイブを取得する必要があります。
この操作後に追加で 16.7 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
実行してみる
$ ./idaq
./idaq: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
まだライブラリが足りないようなので
$ ldd idaq | \grep 'not found' | awk '{ print $1 }' | xargs dpkg -S | awk '{ print $1 "i386" }' | sort | uniq
libstdc++6:amd64:i386
libx11-6:amd64:i386
足りないパッケージの32ビット版をインストールしていく
$ apt install libstdc++6:i386 libx11-6:i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
libxau6:i386 libxcb1:i386 libxdmcp6:i386
以下のパッケージが新たにインストールされます:
libstdc++6:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
1,281 kB のアーカイブを取得する必要があります。
この操作後に追加で 3,933 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
もう一度実行してみる
$ ./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関連のエラーが出る
なのでライブラリをインストールしていく
$ apt install libqt5gui5:i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libglew1.13
これを削除するには 'apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
libbsd0:i386 libdbus-1-3:i386 libdrm-amdgpu1:i386 libdrm-intel1:i386
libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libedit2:i386
libegl1-mesa:i386 libelf1:i386 libevdev2:i386 libexpat1:i386
libfontconfig1:i386 libfreetype6:i386 libgbm1:i386 libgcrypt20:i386
libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libglapi-mesa:i386
libglew1.13:i386 libglu1-mesa:i386 libgpg-error0:i386 libgraphite2-3:i386
libgudev-1.0-0:i386 libharfbuzz0b:i386 libice6:i386 libicu57:i386
libinput10:i386 libjpeg62-turbo:i386 libllvm3.8:i386 liblzma5:i386
libmtdev1:i386 libpciaccess0:i386 libpcre16-3:i386 libpng16-16:i386
libproxy1v5:i386 libqt5core5a:i386 libqt5dbus5:i386 libqt5network5:i386
libqt5svg5:i386 libqt5widgets5:i386 libsm6:i386 libsystemd0:i386
libtinfo5:i386 libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386
libwacom2:i386 libwayland-client0:i386 libwayland-server0:i386
libx11-xcb1:i386 libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386
libxcb-icccm4:i386 libxcb-image0:i386 libxcb-keysyms1:i386
libxcb-present0:i386 libxcb-randr0:i386 libxcb-render-util0:i386
libxcb-render0:i386 libxcb-shape0:i386 libxcb-shm0:i386 libxcb-sync1:i386
libxcb-util0:i386 libxcb-xfixes0:i386 libxcb-xinerama0:i386 libxcb-xkb1:i386
libxdamage1:i386 libxext6:i386 libxfixes3:i386 libxi6:i386
libxkbcommon-x11-0:i386 libxkbcommon0:i386 libxrender1:i386
libxshmfence1:i386 libxxf86vm1:i386 mesa-utils:i386
提案パッケージ:
rng-tools:i386 glew-utils:i386 libthai0:i386 libqt5libqgtk2:i386
qt5-image-formats-plugins:i386 qtwayland5:i386
推奨パッケージ:
qttranslations5-l10n:i386
以下のパッケージは「削除」されます:
mesa-utils
以下のパッケージが新たにインストールされます:
libbsd0:i386 libdbus-1-3:i386 libdrm-amdgpu1:i386 libdrm-intel1:i386
libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libedit2:i386
libegl1-mesa:i386 libelf1:i386 libevdev2:i386 libexpat1:i386
libfontconfig1:i386 libfreetype6:i386 libgbm1:i386 libgcrypt20:i386
libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libglapi-mesa:i386
libglew1.13:i386 libglu1-mesa:i386 libgpg-error0:i386 libgraphite2-3:i386
libgudev-1.0-0:i386 libharfbuzz0b:i386 libice6:i386 libicu57:i386
libinput10:i386 libjpeg62-turbo:i386 libllvm3.8:i386 liblzma5:i386
libmtdev1:i386 libpciaccess0:i386 libpcre16-3:i386 libpng16-16:i386
libproxy1v5:i386 libqt5core5a:i386 libqt5dbus5:i386 libqt5gui5:i386
libqt5network5:i386 libqt5svg5:i386 libqt5widgets5:i386 libsm6:i386
libsystemd0:i386 libtinfo5:i386 libtxc-dxtn-s2tc0:i386 libudev1:i386
libuuid1:i386 libwacom2:i386 libwayland-client0:i386 libwayland-server0:i386
libx11-xcb1:i386 libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386
libxcb-icccm4:i386 libxcb-image0:i386 libxcb-keysyms1:i386
libxcb-present0:i386 libxcb-randr0:i386 libxcb-render-util0:i386
libxcb-render0:i386 libxcb-shape0:i386 libxcb-shm0:i386 libxcb-sync1:i386
libxcb-util0:i386 libxcb-xfixes0:i386 libxcb-xinerama0:i386 libxcb-xkb1:i386
libxdamage1:i386 libxext6:i386 libxfixes3:i386 libxi6:i386
libxkbcommon-x11-0:i386 libxkbcommon0:i386 libxrender1:i386
libxshmfence1:i386 libxxf86vm1:i386 mesa-utils:i386
アップグレード: 0 個、新規インストール: 79 個、削除: 1 個、保留: 0 個。
40.6 MB のアーカイブを取得する必要があります。
この操作後に追加で 249 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
GUIを拡張するためにGTKのライブラリもインストールする
$ apt install libgtk2.0-0:i386 gtk2-engines-murrine:i386 gtk2-engines-pixbuf:i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libglew1.13
これを削除するには 'apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
libatk1.0-0:i386 libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libcairo2:i386 libcomerr2:i386 libcups2:i386 libdatrie1:i386 libgail-common:i386 libgail18:i386 libgdk-pixbuf2.0-0:i386
libgmp10:i386 libgnutls30:i386 libgssapi-krb5-2:i386 libhogweed4:i386 libidn11:i386 libjbig0:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libnettle6:i386 libp11-kit0:i386
libpango-1.0-0:i386 libpangocairo-1.0-0:i386 libpangoft2-1.0-0:i386 libpixman-1-0:i386 libtasn1-6:i386 libthai0:i386 libtiff5:i386 libxcomposite1:i386 libxcursor1:i386 libxinerama1:i386 libxrandr2:i386
提案パッケージ:
gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 librsvg2-common:i386 gvfs:i386
推奨パッケージ:
murrine-themes:i386
以下のパッケージが新たにインストールされます:
gtk2-engines-murrine:i386 gtk2-engines-pixbuf:i386 libatk1.0-0:i386 libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libcairo2:i386 libcomerr2:i386 libcups2:i386 libdatrie1:i386
libgail-common:i386 libgail18:i386 libgdk-pixbuf2.0-0:i386 libgmp10:i386 libgnutls30:i386 libgssapi-krb5-2:i386 libgtk2.0-0:i386 libhogweed4:i386 libidn11:i386 libjbig0:i386 libk5crypto3:i386
libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libnettle6:i386 libp11-kit0:i386 libpango-1.0-0:i386 libpangocairo-1.0-0:i386 libpangoft2-1.0-0:i386 libpixman-1-0:i386 libtasn1-6:i386 libthai0:i386
libtiff5:i386 libxcomposite1:i386 libxcursor1:i386 libxinerama1:i386 libxrandr2:i386
アップグレード: 0 個、新規インストール: 37 個、削除: 0 個、保留: 0 個。
8,173 kB のアーカイブを取得する必要があります。
この操作後に追加で 21.6 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
実行できるが何かメッセージがあるので
$ ./idaq
Gtk-Message: Failed to load module "atk-bridge"
Gtk-Message: Failed to load module "canberra-gtk-module"
それぞれインストールする
$ apt install libatk-adaptor:i386 libgail-common:i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
libgail-common:i386 はすでに最新バージョン (2.24.30-4) です。
libgail-common:i386 は手動でインストールしたと設定されました。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libglew1.13
これを削除するには 'apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
libatk-bridge2.0-0:i386 libatspi2.0-0:i386
以下のパッケージが新たにインストールされます:
libatk-adaptor:i386 libatk-bridge2.0-0:i386 libatspi2.0-0:i386
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
141 kB のアーカイブを取得する必要があります。
この操作後に追加で 495 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
$ sudo apt install libcanberra-gtk-module:i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libglew1.13
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
libasound2:i386 libcanberra-gtk0:i386 libcanberra0:i386 libltdl7:i386 libogg0:i386 libtdb1:i386 libvorbis0a:i386 libvorbisfile3:i386
提案パッケージ:
libasound2-plugins:i386 libcanberra-pulse:i386
以下のパッケージが新たにインストールされます:
libasound2:i386 libcanberra-gtk-module:i386 libcanberra-gtk0:i386 libcanberra0:i386 libltdl7:i386 libogg0:i386 libtdb1:i386 libvorbis0a:i386 libvorbisfile3:i386
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 0 個。
863 kB のアーカイブを取得する必要があります。
この操作後に追加で 2,251 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
これで実行できる

結果
結局次のコマンドを実行すればいい
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libglib2.0-0:i386 libstdc++6:i386 libx11-6:i386 libqt5gui5:i386 libgtk2.0-0:i386 gtk2-engines-murrine:i386 gtk2-engines-pixbuf:i386 libatk-adaptor:i386 libgail-common:i386 libcanberra-gtk-module:i386