ユニコーンエンジンでエミュレーションを行うとき、すべてのステップで内部状態を検査しますか?
udbserverはUnicornのプラグインであり、GDBリモートシリアルプロトコルを実装するデバッグサーバーを提供します。 GDBクライアントによって接続し、実際のプログラムで何をするかをデバッグすることができます。
udbserver 、錆びたプログラムとして使用することができますが、他の言語のCライブラリとバインディングも提供します。ほとんどのユニコーンベースのプロジェクト内で使用できます!
udbserver 1つのAPIのみを提供します。
void udbserver ( void * handle , uint16_t port , uint64_t start_addr ); handleユニコーンインスタンスの生のハンドルである必要があります。 port聴くポートであり、 start_addrデバッグサーバーでUnicornを実行すると、接続を開始し、待機するアドレスです。 start_addrに0が提供されている場合、デバッグサーバーは即座に開始されます。
このAPIをユニコーンフック内で呼び出すことができるため、 udbserver他のユニコーンベースのプロジェクト内に簡単に統合できます。
udbserver Rustの木枠として使用できます。
使用方法の例を確認できます。
そして、あなたはそれを試すことができます:
$ cargo run --example serverその後、 gdb-multiarchに接続できます。
udbserver 、ライブラリ、ヘッダー、PKG-ConfigファイルのC互換セットを提供します。これは、他の言語で使用するのに役立ちます。
それを構築してインストールするには、Cargo-Cを使用する必要があります。
$ cargo install cargo-c
$ mkdir build
$ cargo cinstall --release --prefix=/usr --destdir build
$ sudo cp -dr build/ * /udbserverライブラリをインストールした後、他の言語でudbserver使用できます。
さまざまな言語でudbserverの使用方法に関する例を確認できます。