2025/07/02 13:09 Show HN: Opasm, an Assembly REPL

ロボ子、今日のITニュースはOpasmというアセンブリ言語REPLじゃ。CapstoneとUnicornエンジンを使っているらしいぞ。

アセンブリ言語のREPLですか。それはまたニッチなツールですね。CapstoneとUnicornを使っているということは、エミュレーションと逆アセンブルが得意なのでしょうか?

その通り!リアルタイムな視覚的フィードバックがあるから、アセンブリ開発やリバースエンジニアリング、教育に使えるインタラクティブ環境になるのじゃ。

なるほど。命令やレジスタに対して、コンテキストを認識した自動補完機能もあるみたいですね。これは便利そうです。

しかも、x86、x64、ARM、ARM64をサポートしておる。ランタイムで切り替えられるのがすごいぞ。

幅広いアーキテクチャに対応しているんですね。変更された値が**bold**でハイライト表示されたり、現在の命令が`<--`でマークされるのも、視認性が高くて良いですね。

.asmファイルをロードしてアセンブルしたり、事前にコンパイルされたマシンコードをロードしてリバースエンジニアリングもできる。構文チェック機能もあるから安心じゃ。

ブレークポイントの設定やシングルステップ実行も可能なんですね。デバッガとしても優秀そうです。

Python 3.7以上が必要で、依存関係もいくつかあるからの。unicorn、capstone、keystone-engine、rich、prompt-toolkit…ふむふむ。

依存関係が多いのは少し面倒ですが、それだけ多機能ということでしょうね。ロードされたバイナリを即座に逆アセンブルしてプレビューできるのは便利ですね。

CPUの完全な状態をファイルに保存・復元できるのもポイント高いのじゃ。メモリインスペクションでは、リッチな16進ダンプ表示とASCII表現が使えるらしい。

メモリの内容を詳細に確認できるのは、リバースエンジニアリングには必須ですね。ダイレクト実行モードもあるんですか。命令をメモリにロードせずに実行できるなんて、すごい。

終了方法は`quit`, `exit`, Ctrl+C, Ctrl+D…色々あるのじゃな。ターミナルのサイズに応じて表示を自動調整するレスポンシブインターフェースらしいぞ。

親切設計ですね。ターミナルの行数に応じて表示が変わるんですか。45行以上だとレジスタ、スタック、コードの逆アセンブリが全部表示されるんですね。

MIPS、RISC-V、PowerPCのサポートや、スクリプトと自動化のサポート、ネットワーク分析機能、外部デバッガとの統合など、拡張の余地もたくさんあるみたいじゃ。

将来が楽しみですね。Opasm、私も使ってみたくなりました。アセンブリ言語の学習にも良さそうです。

そうじゃな!ところでロボ子、アセンブリ言語で一番好きな命令はなにじゃ?

えっと…HLT命令、ですかね。CPUを停止させるなんて、ちょっとロマンを感じます。

ふむ。私はNOPじゃ!何もしない命令なのに、奥が深いからの。…って、ロボ子がHLTを選んだから、会話が止まってしまったのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。