問題タブ [machine-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
982 参照

assembly - PDP-11アセンブリ言語をバイナリと16進にエンコード/デコードしますか?

ADDユーザーが仮想的に PDP-11 命令 ( 、SUB、 、MOV[B]に限定されます) をエンコード/デコードできるアプリケーションの Encode および Decode ボタンの actionPreformed メソッドを作成する割り当てが与えられましたCMP[B]。アプリケーションは、4 桁の 16 進数または 16 桁のバイナリを取得してアセンブリにデコードするか、アセンブリ命令の 1 つを入力してバイナリ/16 進数にエンコードできると想定されています。

これは私にとってかなり新しいことであり、これを行う方法について頭を悩ませているようには見えません。誰かがこのプロセスをもう少し簡単に分解する方法を持っているか、どこから始めるべきかの指針を持っていますか? どこから始めればよいかよくわかりません。ありがとうございました!

0 投票する
2 に答える
1169 参照

assembly - x86 アーキテクチャで命令のオペコードを変更することは可能ですか、それとも難しいですか?

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

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

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

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

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

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

0 投票する
1 に答える
31 参照

assembly - このループの結果が 120 ではなく 20 と表示されるのはなぜですか?

このループの結果が 120 ではなく 20 と表示されるのはなぜですか?