1

たとえばPUSH imm32、オペコードは 68h です。この命令を「表す」ために別の番号、たとえば 69h を使用することはできますか (この番号は他の命令で使用されていないと仮定します)。

「表す」とは、アセンブリ内に PUSH 命令がある場合、69h がバイナリ実行可能ファイルに表示されることを意味します。最終的に CPU によってフェッチおよび実行されると、68h に戻されます。

各オペコードが CPU 回路に合わせて特別に設計されていることは理解していますが、別の 16 進数を代理として使用することは可能ですか?

もちろん、CPU を変更するつもりはありませんが、x86 アーキテクチャで命令を実行したいと考えています。

更新: なぜこの質問をするのですか?

意図的に機械語の流れを誤解し、標準ライブラリの中に C3 (つまり ret) が多いことを利用する Return Oriented Attack をご存知でしょうか。私が最初に考えたのは、リターンのオペコードを C3 から他のコード (できれば 2 バイト) に変更できれば、ROA は機能しないということでした。私は建築分野の専門家ではないので、自分の考えが現実にはうまくいかないことに気づきました。ご回答ありがとうございます。

4

2 に答える 2