プロセッサの中には、その命令セットが何であるかを説明するドキュメントが市販されていないものがあります。プロセッサにアクセスできる場合、改ざんまたは外部デバイスを介して命令セットを見つける方法はありますか?
3 に答える
一般的にいいえ、単純にビットを見るだけでは、それほど遠くまで行くことはできません。ごちゃごちゃしたパズルの 1 つを想像してみてください。ただし、26 文字 (アルファベット) をはるかに超えています。ビットパターンの分析を行うことはできますが、無条件分岐またはその他の一般的な命令である可能性のあるアーキテクチャを知らず、一般的な命令が何であるかを知らない知識がなければ、何が得られますか. たとえば英語を想定した寄せ集めのパズルでは、どの文字や単語が一般的であるかを内部的に知っていて、そこから始めようとすることができます。
既知の命令セットに似ている場合は、まだ同じ問題があります。命令を変更してください。未定義の命令を使用して新しい命令を作成した場合は、チップの可視性 (どの jtag jtag が提供する情報も内部情報を必要とするため、このレベルでは実際には提供されません)。
「改ざんによって」?もちろん。チップから蓋をこじ開けます。チップ レイアウトのスナップショットを撮ります (さまざまな種類の走査型電子顕微鏡でこれを行うことができます)。デジタル回路を推測します (いくつかの特別なデバイスは、実行中のチップ要素の状態を教えてくれます。Schlumberger の ATE ギアはこれを行いました)。それが何をするかを解読してください。ソースコードがあると助かります。
オペコードが何をするかを推測するのは難しいかもしれません。超越の計算に使用される部分多項式評価を行う命令、または高速フーリエ変換でバタフライ ステップを行う命令を想像してみてください。
JTAGを確認してください。これは、CPU のデバッグに使用されるプロトコルです。
もう 1 つのオプションは、アーキテクチャが別のパブリック アーキテクチャに基づいているかどうかを確認し、比較して相違点を見つけることです。
編集:また、そのアーキテクチャ用のデバッガはありませんか? ACコンパイラ?これは非常にまれです。デバッガや C コンパイラがあれば、アセンブリをチェックして、結果のバイナリと比較できます。デバッガーでは、既存のバイナリを逆アセンブルすることもできます。