
= IPyIDA
IPyIDA は、IDA Pro に IPython コンソールを追加するための Python のみのソリューションです。<Shift-.> を使用すると、Qt コンソール が埋め込まれたウィンドウを開くことができます。IPython のオートコンプリート、オンラインヘルプ、等幅フォントの入力フィールド、グラフなどを利用できます。
また、ipython console --existing を使用して、IDA の外部からカーネルに接続することもできます。
image::ipyida-screenshot.png[IPyIDA スクリーンショット,width=100%]
== インストール
IPyIDA は、Windows、OS X、Linux 上の IDA 6.6 以降と互換性があるはずです。IDA 9.2 まででテストされています。
=== 高速かつ簡単なインストール
IDA コンソールから IPyIDA とその依存関係を自動的にインストールするスクリプトが用意されています。次の行を IDA コンソールにコピーするだけです。
macOS では、Python3.framework は信頼された CA ファイルを提供しません。システム全体のファイル /etc/ssl/cert.pem を使用できます。
スクリプトは次のことを行います:
pip がまだインストールされていない場合はインストールしますipyida パッケージをインストールしますipyida_plugin_stub.py をユーザーの plugins ディレクトリにコピーします正確に何を行うのかを確認したい場合は、link:install_from_ida.py[] スクリプトを調べることができます。
==== アップグレード
インストールスクリプトを再実行して最新バージョンに更新し、IDA を再起動します。
=== IDA 標準の方法でインストールする
依存関係と更新を自分で管理したい場合は、ipyida_plugin_stub.py と ipyida ディレクトリを IDA の plugins ディレクトリ内にコピーできます。
この方法では、依存関係を自分で管理する必要があります。IPyIDA には ipykernel と qtconsole パッケージが必要で、ipykernel バージョン 5 以降を使用する場合は qasync パッケージも必要です。
== Jupyter Notebook の統合
IPyIDA には、IPyIDA にアタッチされたノートブックをブラウザで開くためのマジックコマンド %open_notebook が含まれています。このコマンドは、初回実行時に依存関係のインストールと、すでに実行されていない場合の Notebook サーバーの起動を処理します。詳細なオプションについては、コマンドヘルプ(%open_notebook? と入力)を確認してください。
== IPython コンソールのカスタマイズ
デフォルトでは、コンソールで利用可能なグローバル変数はありません。コンソールを開く前にモジュールをインポートしておきたい場合、IPyIDA は IDA ユーザーディレクトリ(idaapi.get_user_idadir())から ipyidarc.py ファイルを読み取ります。このファイルでインポートしたものはすべて IPython コンソールで利用できます。
これは idapythonrc.py ファイルと似ています。
=== ダークモード
IDA Pro でダークテーマを使用している場合、IPython コンソールでもダークテーマを使用する方が便利です。qtconsole に組み込まれたダークテーマを有効にするには、ipyidarc.py に以下を追加します:
== IDE 統合
iPyIDA の注目すべき機能の 1 つは、PyCharm IDE と統合できることです。これにより、コードのステップ実行、構文ハイライト、Github CoPilot の統合などの機能が利用できます。この機能を使用するには、IDA を起動してデータベースを開き、PyCharm で Jupyter Notebook を作成し、コードを追加して、実行をクリックするだけです。IPyIDA がバックグラウンドで全ての処理を実行します。
image::pycharm-screenshot.png[IPyIDA スクリーンショット,width=100%]
== 注意事項
=== IDA のウィンドウが長時間バックグラウンドにあると外部コンソールが応答しない
この問題は、OS X 10.9 以降の OS X の App Nap 機能に固有のものです。実行中に IDA Pro の App Nap を無効にすると問題が解決するようですが、これは今のところハックであり、ラップトップではより多くのバッテリーを消費します。より良い解決策を見つけるべきです。
IDA Pro の App Nap を無効にする方法は次のとおりです:
== 類似プロジェクト
@james91b も IDA に IPython カーネルを統合することに成功しました。私は Windows 以外の IDA ユーザーであるため、クロスプラットフォームのものが必要で、それを実装するために Python のみのアプローチを取りました。実装アイデアの一部はそのプロジェクトから来ていますが、IPyIDA はゼロから書かれました。@james91b とすべての IDA_IPython コントリビューターに敬意を表します。IDA_IPython は Github の https://github.com/james91b/ida_ipython で入手できます。