2017-07-14 3 views
0

ecx+5Cが即値を指定する特定のアドレスと等しい場合、特定のタスクを実行するためにプログラムでバイトインジェクションを実行しようとしています。私は次のようなことをしようとしています:cmp [ecx+5C], 1D59D3BC。しかし、私はエラーが発生します。誰も私がレジスタ+オフセットアドレスをx86アセンブリの即時アドレスとどのように比較できるか知っていますか?x86アセンブリの2つのアドレスを比較するにはどうすればよいですか?

+2

を、あなたはどのようなエラーが出るのですか? – zx485

+0

[** Addressing in Assembler **](https://stackoverflow.com/questions/2364162/addressing-in-assembler)を見て、その答えで参照されている.pdfを入手してください。 (あなたの質問への短い答えは、アドレスを比較するために '[]' s *を削除することです。) –

+4

'cmp ecx、1D59D3BCh - 5Ch'? –

答えて

3

私は次のようなことをしようとしています:cmp [ecx+5C], 1D59D3BC
しかし、私はエラーが発生します。これが失敗する理由

考えられる原因:

  • あなたはあなたの命令を受け入れるために、アセンブラ用の六角接頭辞または接尾辞を指定する必要があります。
  • 操作のサイズを指定する必要があります。アセンブラはあなたのために推測しません。

は(アセンブラによって異なります)次のいずれかを試してみてください:

cmp dword ptr [ecx + 5Ch], 1D59D3BCh 
cmp dword ptr [ecx + 0x5C], 0x1D59D3BC 
cmp dword [ecx + 5Ch], 1D59D3BCh 
cmp dword [ecx + 0x5C], 0x1D59D3BC 

誰も私は、x86アセンブリ内の即時のアドレスにレジスタ+オフセットアドレスを比較することができる方法を知っていますか?

lea eax, [ecx + 5Ch] ;put the address in EAX 
cmp eax, 1D59D3BCh ;compare with the immediate 

しかし、短いPaulHコメントに示したよう:

cmp ecx, 1D59D3BCh - 0000005Ch 
関連する問題