汇编获取当前执行位置方法总结

call-pop

global _start
section .text
_start:
    call next_ins 
next_ins:
    pop rax
    ; rax holds current pc
    ret
; nasm -felf64 test.S && ld -o test test.o

这种方法利用了call的时候会在栈上保存ip值,之后pop就可以使某寄存器获取为该ip值了。

fldz-fstenv

global _start
section .text
bits 32
_start:
    fldz
    fnstenv [esp-0x0c]
    pop ebx

这种方法利用了floating point environment,intel cpu的一个特性,缺点是原栈顶位置的值会发生变化

其他方法?

待续

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读