2016-10-22 10 views
0

sscanf関数がアセンブリで要求している形式を理解しようとしています。私はそれが2つの入力を望んでいると思うが、それらが10進数でも文字列でもなければならないかわからない。sscanf入力アセンブリの形式を調べる方法

Iveはx/sとx/d 0x400c30を試したが、377%z4を得た。 %dや%sなどはどこに表示されますか?前もって感謝します!

Dump of assembler code for function phase_4: 
    0x000000000040101e <+0>: sub $0x18,%rsp 
    0x0000000000401022 <+4>: lea 0xc(%rsp),%rcx 
    0x0000000000401027 <+9>: lea 0x8(%rsp),%rdx 
    0x000000000040102c <+14>: mov $0x4027cd,%esi 
    0x0000000000401031 <+19>: mov $0x0,%eax 
    0x0000000000401036 <+24>: callq 0x400c30 <[email protected]> //??? 
    0x000000000040103b <+29>: cmp $0x2,%eax 
    0x000000000040103e <+32>: jne 0x40104c <phase_4+46> 
    0x0000000000401040 <+34>: mov 0xc(%rsp),%eax 
    0x0000000000401044 <+38>: sub $0x2,%eax 
    0x0000000000401047 <+41>: cmp $0x2,%eax 
    0x000000000040104a <+44>: jbe 0x401051 <phase_4+51> 
    0x000000000040104c <+46>: callq 0x401554 <explode_bomb> 
    0x0000000000401051 <+51>: mov 0xc(%rsp),%esi 
    0x0000000000401055 <+55>: mov $0x7,%edi 
    0x000000000040105a <+60>: callq 0x400fe6 <func4> 
    0x000000000040105f <+65>: cmp 0x8(%rsp),%eax 
    0x0000000000401063 <+69>: je  0x40106a <phase_4+76> 
    0x0000000000401065 <+71>: callq 0x401554 <explode_bomb> 
    0x000000000040106a <+76>: add $0x18,%rsp 
    0x000000000040106e <+80>: retq 

答えて

2

ここではx86と仮定しています。 AT & T構文はわかりませんが、sscanfの2番目の引数であるフォーマット文字列はrsiレジスタに入ります。あなたが探している文字列は、アドレス4027cdにあるようです。

0x000000000040102c <+14>: mov $0x4027cd,%esi 
0x0000000000401031 <+19>: mov $0x0,%eax 
0x0000000000401036 <+24>: callq 0x400c30 <[email protected]> //??? 

代わり

+0

は私が考えていたものをthatsの、そしてyoureの権利、そのアドレスを調べてみてください!試してみて%d%dを手に入れました。ありがとうございました! – helloworld

関連する問題