当在
Linux / i386系统上看到由gcc生成的精灵可执行文件时,似乎在调用“main”之后,在“nop”填充之前,它会放置一个停止指令(0xf4),例如:
│ ....... ! entrypoint: │ ....... ! xor ebp,ebp │ 80482e2 ! pop esi │ 80482e3 ! mov ecx,esp*emphasized text* │ 80482e5 ! and esp,0fffffff0h │ 80482e8 ! push eax │ 80482e9 ! push esp │ 80482ea ! push edx │ 80482eb ! push __libc_csu_fini │ 80482f0 ! push __libc_csu_init │ 80482f5 ! push ecx │ 80482f6 ! push esi │ 80482f7 ! push main │ 80482fc ! call wrapper_804a004_80482c4 │ 8048301 ! hlt <--- halt instruction │ 8048302 ! nop │ 8048303 ! nop │ 8048304 ! nop ⋮
这是什么目的?
不应该达到此代码.这是一种保障措施吗?