jz 命令のジャンプ距離が1足りない
jz 命令のジャンプ距離が1足りない
nasm
アセンブラでコンパイルした結果出た .lst
ファイル
268 00000108 7405 jz _child ;7405では0000010Fまでジャンプできないはず。
269 0000010A E9F1FEFFFF jmp near _start
270
271 _child:
272 ; getrandom システムコールを呼び出す
273 0000010F B83E010000 mov eax, 318 ; getrandom のシステムコール番号
gdb
でのデバック中
0x400178: 0x90 0x90 0x90 0x90 0x90 0x90 0x85 0xc0
0x400180: 0x74 0x05 0xe9 0xf1 0xfe 0xff 0xff 0xff
0x400188: 0xb8 0x3e 0x01 0x00 0x00 0xbf 0xfe 0x00
0x400190: 0x40 0x00 0xbe 0x00 0x01 0x00 0x00 0x31
0x400198: 0xd2 0x0f 0x05 0xe9 0xd9 0xfe 0xff 0xff
(gdb) stepi
0x0000000000400180 in ?? ()
(gdb) info registers
(中略)
rip 0x400180 0x400180
eflags 0x246 [ PF ZF IF ]#ゼロフラグが立っている。
(中略)
(gdb) stepi
0x0000000000400187 in ?? ()
(gdb) stepi
Thread 2.1 "ancestor" received signal SIGILL, Illegal instruction.
0x0000000000400187 in ?? ()
この様に、正しく動作していません。本来0x0000000000400188
までジャンプすべきです。
nasm
アセンブラはバグを起こしているのですか?
0