KaliLinuxでIDA-Demoを使う
環境
- 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