はだからは、x86アセンブリに次のコード・セグメントを有する:のx86 - Cさんのsscanf関数
mov $0x0, %eax
callq 400ac8 <[email protected]>
cmp $0x5,%eax
jg 40152d <this_function+0x3d> -----> jumps to add two lines down
callq 4014b a <error_program>
add $0x18,%rsp
retq
今最初の行では、それはゼロとして%EAX設定します。次に、sscanfを呼び出し、%eaxが5かどうかを確認します.5より大きい場合は、それ以外の場合は終了します。だから私が作ったシンプルなCコード:
eax = 0;
sscanf();
if (eax < 5) error_program();
return;
これはバイナリファイルのオブジェクトダンプなので、正しいことを確信しています。しかし、eaxは常にゼロになり、エラーが発生します。私はそれを正しくしていますか?または、sscanfがeaxを操作する可能性はありますか?
ありがとう
これはしかし意味がありません - このプログラムはそれぞれ、すべての単一の時間を終了していないだろう... – darksky
私はあなたがそのIここに持っているものによって十分に混乱しています – sarnold
"これはバイナリファイルのオブジェクトダンプなので、私はそれが正しいと確信しています。正しい。"線形掃引を行う静的逆アセンブラは簡単にだますことができます – bubakazouba