xor %eax, %eax # 意思是将eax清零,这条语句操作码小于mov,节省内存
movl, movw, movb 分别是传32、16、8位数据
movzbl、movsbl 分别是传送时零扩展和符号扩展
汇编中 mov %fs:0x28,%rax 的作用:
栈保护功能,将一个特殊值(fs:0x28)存在栈的底部,函数运行结束后再取出这个值和fs:0x28做比较,如果有改变就说明栈被破坏,调用__stack_chk_fail@plt。
fs寄存器的值本身指向当前线程结构
xor %eax, %eax # 意思是将eax清零,这条语句操作码小于mov,节省内存
movl, movw, movb 分别是传32、16、8位数据
movzbl、movsbl 分别是传送时零扩展和符号扩展
汇编中 mov %fs:0x28,%rax 的作用:
栈保护功能,将一个特殊值(fs:0x28)存在栈的底部,函数运行结束后再取出这个值和fs:0x28做比较,如果有改变就说明栈被破坏,调用__stack_chk_fail@plt。
fs寄存器的值本身指向当前线程结构