
IDA用のユニコーンベースの小さなかわいいエミュレータプラグイン。
uEmu は、Unicorn Engine をベースにした IDA 用の小さくて可愛いエミュレータプラグインです。
以下のアーキテクチャを標準でサポートしています: x86、x64、ARM、ARM64、MIPS、MIPS64

MSR S3_x, X0など)をエミュレートする方法を見つけるidapyswitch を使用して IDAPython を設定するbrew install unicorn で Unicorn バイナリをインストールするpip install unicorn で Unicorn Python バインディングをインストールするFile / Script file... または ALT+F7 を使用して uEmu.py を読み込むオプションで uEmu を IDA プラグインとして自動的に読み込むこともできます。その場合は、[IDA]/Plugins フォルダに配置し、uEmu.py 内の USE_AS_SCRIPT を False に変更します。

ALT/OPTION を押しながら実行すると数を指定できます)カーソル位置からエミュレーションを開始します。最初に初期CPUコンテキストを指定する必要があります(Update CPU Context を参照)。 その後、IDAデータベースのすべてのセグメントがエミュレータにマッピングされます(初期化データもコピーされます)。
コードまたはメモリのブレークポイントに到達するか、ユーザーアクションが必要なイベントが発生するまでコードを実行します。
シングルステップ実行を実行します。ALT/OPTION を押しながら実行すると、実行するステップ数を指定できます。

エミュレーションが進行中の場合、このコマンドを使用して実行を中断できます。
エミュレータインスタンスをリセットし、すべてのメモリ領域のマッピングを解除します。
IDAのブレークポイントを使用して、エミュレーションを中断する場所を指定できます。 これにはコードブレークポイントとメモリブレークポイントが含まれます。 通常は Run コマンドと一緒に使用します。
エミュレータがまだマッピングされていないメモリにアクセスする必要がある場合、プラグインは次のようなダイアログを表示します。


エミュレータが未知の命令に遭遇した場合、それをスキップして手動でCPUコンテキストを復元できます。

実行を制御するためのパネルです。

現在のCPUコンテキストです。

エミュレーションが停止するたびに、変更されたレジスタが強調表示されます。レジスタはポップアップメニューから1、2、または3列で表示できます。
ポップアップメニューからCPUコンテキストを更新できます(下記参照)。
現在のCPU拡張コンテキストです。

エミュレーションが停止するたびに、変更されたレジスタが強調表示されます。レジスタはポップアップメニューから1、2、または3列で表示できます。
ポップアップメニューからCPUコンテキストを更新できます(下記参照)。
このビューを使用して、指定されたアドレスとサイズのメモリ領域を観察します。利便性のためにコメントがタイトルに表示されます。

エミュレーションが停止するたびに、変更されたメモリブロックが強調表示されます。

レジスタ値は個別に変更することも、ポップアップメニューからJSONファイルを使用して一度にすべて変更することもできます。 現在のコンテキストは将来の使用のためにJSONファイルに保存することもできます。


ポップアップメニューにリストされているすべての機能に加えて、いくつかの新しいコマンドがあります。

すべてのマッピングされた領域を表示します。ポップアップメニューを使用して、特定の領域のメモリを表示したり、ファイルにダンプしたりできます。

このコマンドは、新しいマッピングを作成するか、可能であれば既存のマッピングとマージすることで、IDAセグメントをマッピングされたメモリと同期しようとします。 これにより、エミュレータを再起動せずに実行時に新しいIDAセグメントをエミュレータに追加するのに役立ちます。
ファイルからuEmuの状態を読み込みます。
uEmuの状態をファイルに保存します。 プラグインで定義されているレジスタのみが保存されることに注意してください。

拡張システムを使用して、uEmu の上に新しい機能を追加したり、独自のプロジェクトを構築したりすることもできます。 説明と例はこちらにあります。