4

ジャンプの正しいopコードを計算しようとしていますが、他のスレッドでこれを調べましたが、まだわかりません。

数式は機能していると思ってdesination - (from+5)いましたが、機能していませんでした。かなり離れています。ジャンプしたいアドレスは次のとおりです。

FROM: 6259326B
TO:   02980000

CORRECT OPCODE: E9 90CD3EA0
FORMULA OPCODE: E9 5FC13266

だから私はこれに問題があります、どんな助けもありがたいです。

4

3 に答える 3

5

あなたは負のjmpを計算しています!したがって、正しい式は次のとおりです。

0-(から-宛先)-5

0-($ 6259326B-$ 02980000)-5

$ A03ECD90(またはリトルエンディアンでは$ 90CD3EA0)に等しいもの。

于 2011-11-19T20:36:51.413 に答える
1

式は問題ありません(提供されたアセンブリとアドレスが完全に一致していないようです:--= 029800006259326bバイト順序を逆にして、正しいアセンブリとほぼ一致します。イメージの再配置などが原因であると想定します)。計算を正しく行い、相対的な32ビットジャンプに必要なエンコーディング(リトルエンディアン)に一致するようにバイト順序を逆にしたことを確認しますか?5c726cd90

于 2011-11-19T20:19:51.833 に答える
1

ジャンプ命令が正確に5バイトでFROMあり、このジャンプ命令のアドレスであると仮定すると、式は正しいです。長さが5FROMでないか、jmpがない場合は、正しくありません。

これで、モジュロ232算術を取得します

2980000H-(6259326BH + 5)=0A03ECD90H。

2980000H-62593270Hが32ビットで0A03ECD90Hに等しいことを理解していない場合は、2980000Hではなく102980000Hから減算している、つまり33番目のビットが設定されていると想像してみてください。次に、102980000H-62593270H=0A03ECD90Hになります。そして、102980000H = 62593270H+0A03ECD90Hであることを確認できます。ただし、計算には32ビットしかないため、その33ビットは、それが何であれ、合計と差に影響を与えることはありません。したがって、2つの数値を32ビットの数値として減算し、結果の最下位32ビットを取得して、32ビットを超えるビットからの未処理の借用を無視します。

また、0A03ECD90Hは、jmp命令で最下位バイトから最上位バイトまでエンコードする必要があるため、命令をエンコードする次のバイトシーケンスを取得します。

E9、90、CD、3E、A0。

同様の質問が以前に尋ねられました。

于 2011-11-19T22:19:35.603 に答える