2017-09-25 5 views
0

私はバイナリボンの修正版を使用していますが、%rsiの値が何であるかを突き止めています。それはライン5と何かを持っており、値をraxに移していますか?アセンブリコードの%rsiの値

Dump of assembler code for function phase_2: 

=> 0x00000000004011c7 <+0>: sub $0x8,%rsp 
0x00000000004011cb <+4>: cmp $0x3,%rdi //contains 3 values 
0x00000000004011cf <+8>: je  0x4011df <phase_2+24> //check values if equal to three 
0x00000000004011d1 <+10>: callq 0x401bd7 <bomb_explosion> 
0x00000000004011d6 <+15>: mov $0xffffffffffffffff,%rax 
0x00000000004011dd <+22>: jmp 0x401214 <phase_2+77> 
0x00000000004011df <+24>: not %rsi 
... 
+1

phase_2のパラメータのように見えます。 –

答えて

1

RSI

おかげで、関数の第二引数が含まれています。

システムV ABI(Linux、OS X、ほとんどのUNIX一般、Windows uses a different calling convention)に準拠するx86-64システムの場合、関数への最初の6つの整数パラメータとポインタパラメータRDI、RSI、RDX、RCX、R8、R9にあります。浮動小数点引数はXMM(SSE)レジスタに渡されます。

+0

この段階では、 '%rdi'は入力の数(最初のレジスタ)をチェックし、'%rsi 'はそれに対してNOT演算を実行するためにどの値をとりますか、 'rax'の値は? –

+0

rdiがいくつかのタイプの入力数のカウントであるかもしれないことを確認または拒否するために提供したコード・フラグメントには何もありませんが、それは一般的な使用法ではありません。私はそれが配列内のエントリ数(他のパラメータの1つによって指されている)の数であると見ることができましたが、それをサポートする証拠はありません。 raxの値は、あなたが私たちに提供したコード全体にわたって定義されていません。 NOTはrsiに含まれる可能性のある「値」に対して実行できます。 prlは明らかに "アセンブリコードの%rsiの値"という質問に答えていることに注意してください。古い質問に新しい質問を付けるべきではありません。 –

+0

@ copernicus1996:ええ、最近、いくつかの爆弾に関する質問が、最初の引数として 'sscanf'の戻り値を渡す呼び出し側を持っていました。例えばhttps://stackoverflow.com/questions/46320479/jmpq-and-lea-and-how-does-rdi-register-work-in-binary-bomb –

関連する問題