2012-01-26 19 views

答えて

4

オペコード83 05addressconstantは、次の5バイト05 89 45 F4 75によって決定された命令ADD DWORD PTR [address],constantを意味するので、あなたは、セグメンテーションフォールトを取得します。この場合、指示はADD DWORD PTR [F4458905],75です。したがって、無効なメモリアドレスを参照しています。

1

元の命令は次のとおりです。

83 F9 05 cmp ecx, 5 

あなたは、一定のcomaparisonに何かそれを変更しようとしているように見えます:私は、このような獣も存在していることを疑う

83 05 05 cmp 5, 5  ; not what you think it is! 

を、その有用性はせいぜい疑問の余地があるからです。 2つの定数を比較すると、シリコンが無駄になります。

あなたは何ですか?実際にはに変更することは、間違いなく無効なアドレスを逆参照する命令です)。

オプションの1つでは、0バイトを設定する(3つの命令のチェックがjnz命令であるため)3バイトのシーケンスを置き換え、同じサイズにするために十分なnopの演算でそれを埋め込むことができます。あなたはすべてフラグが正しく設定されている特定のことができるように

また、(再び適切なnopパディング付き)cmp ecx, ecx声明を探してください。これは、GNUアセンブラasに応じている。

39 c9  cmp %ecx, %ecx 
90   nop 
+0

のCMP ECX、ECXは83 F9 F9のですか?とにかくお返事いただきありがとうございます。私のエラー –

+0

@Usiは、オペコードが単純ではなく、アセンブラを入手する必要があるか、IDA Proがそれを行うことができるはずです。 – paxdiablo

関連する問題