Idacodeを使用すると、Visual Studioコードを離れることなく、IDA環境でPythonスクリプトを簡単に実行およびデバッグできます。 VSコード拡張機能は、市場で見つけることができます。
Idacodeはまだ非常に初期の状態にあり、バグが予想されます。問題が発生した場合は、新しい問題を開いてください。
debugpy使用するため、出力ウィンドウをVSコードの出力パネルと自然に同期します。IdacodeはPython 2とPython 3の両方をサポートしています!
IDAプラグインの依存関係を設定するには:
# make sure to use the correct Python version
# IDACode supports the latest debugpy as of version 3.0.0, make sure to upgrade!
python -m pip install --user debugpy tornadoこのリポジトリをクローンするか、ここからリリースパッケージをダウンロードします。 ida.zip 、このリポジトリのidaフォルダーの内容を反映しています。すべてのファイルをIDASプラグインディレクトリにコピーします。
次のステップは、環境に合わせて設定を構成することです。 idacode_utils/settings.pyそれに応じて編集:
HOST :これはホストアドレスです。これは、遠隔地からアクセスできるようにしない限り、常に127.0.0.1です。このプラグインは認証を使用していないことに注意してください。PORT :これは、アイダに聴いてほしいポートです。これは、IDAとVSコード間のWebSocket通信に使用されます。DEBUG_PORT :これは、着信デバッグセッションに耳を傾けたいポートです。PYTHON :これは、IDAセットアップが使用するPython分布への絶対的なパスです。LOGGING :デバッガーがファイルにログインするかどうかを判断します。これは、Idacodeの問題に遭遇している場合に特に便利です。何か見つけたら新しい問題を提出してください。ファイルは常にTEMPディレクトリにあります(例:Windows: %TEMP% )。ファイルはdebugpy.*.log 。これで、プラグインメニューのIDACodeをクリックしてプラグインを開始できます。
VSコード拡張機能は、マーケットプレイスで利用できます。拡張機能を構成するには、拡張機能のreadmeを参照してください。
プラグインメニューでIDACode押します。次のテキストで迎えられる必要があります。
IDACode listening on 127.0.0.1:7065
バージョンの時点で、0.2.0 Idacodeは、デフォルトで有効になっている「Execute on Save」をサポートしています。 VSコードは、現在のドキュメントを保存するとすぐにIDAでスクリプトを自動的に実行します(たとえば、CTRL+S)。この動作は、設定で無効にすることができます。
あなたの自由に4つのコマンドがあります:

スクリプトを入れたいフォルダーを開いたら(VSコードが要求するときにフォルダーを指定する必要があります!)IDAに接続する準備ができています。 Connect to IDAを実行するか、 Connect and attach a debugger to IDAことでこれを行うことができます。 IDAを再起動するまで、デバッグセッションは永続的であることに注意してください。デバッガーが開始されると、ワークスペースフォルダーを変更することはできません。
ワークスペースフォルダーがメインスクリプトがあるフォルダーであることを確認してください。
接続されたら、 Execute script in IDA実行することができます。
Idacodeは、VSコードのリモートデバッガーを使用してIDAに接続します。すべてのVSコード機能がサポートされています。ただし、Python Builtin機能: breakpointを使用して、スクリプトエントリポイントを指定する必要があります。この命令は、デバッガーに実行を一時停止するように指示します。デバッガーが表示されない場合は、関数を無視するだけです。 Idacodeは、 bpと呼ばれるbreakpointの過負荷を実装するdbgと呼ばれるヘルパーパッケージをインポートします。この関数は、ロギングと条件をサポートしています。
name = idc . get_segm_name ( segment )
dbg . bp ( name == ".text" , f"found { name } at { segment } " )また、 breakpoint()通話はファイルの最後には決して発生しないでください。コードの次の命令で壊れるため、常に他のコード行の前にある必要があります。また、 dbgパッケージを使用することにした場合は、すべての参照を削除するか、通常のIDAスクリプトとして実行する前に条件として変数__idacode__を使用する必要があることに注意してください。
また、デバッガーを添付すると、新しいデバッガーインスタンスが作成されることも重要です。ほとんどの場合、これはあなたが望むものではありません。デバッガーから切断した場合、VSコードのリモートデバッガーを使用して接続します。
