汇编七

作者: Flonger | 来源:发表于2017-07-21 22:06 被阅读21次

函数的局部变量

  • 拿参数是bp+

  • 拿局部变量是bp-

  • 平栈是先把bp赋给sp

栈越界

  • 超过三次以上的循环就避免使用递归

保护寄存器

  • 保护通用寄存器
push ax
push bx
push cx
push dx
.....
随便玩儿
业务逻辑代码
.....
pop dx
pop cx
pop bx
pop ax
保护寄存器
  • 保护BP寄存器

在函数调用一开始就保护bp

push bp
mov bp,sp
.
.
.
mov sp,bp
pop bp
ret
保存bp寄存器

函数的调用流程

1.push参数(64位cpu 随意使用寄存器)
2.call指令调用(降下一条指令地址入栈)
3.保护bp,将sp赋值给bp
4.提升sp指针,作为局部变量空间(sp - n)
5.保护外部用到的寄存器
6.业务逻辑代码
7.恢复通用寄存器
8.恢复sp(sp指向bp/sp + n)
9.恢复bp(pop bp)
9.返回 ret

以上

相关文章

  • <安全攻防之汇编基础>

    &关于汇编基础请点击 <汇编一> <汇编二> <汇编三> <汇编四> <汇编五> <汇编六> <汇编七> <汇编八...

  • 汇编(七)

    Loop指令 loop指令和cx寄存器配合使用,用于循环操作类似高级语言的for,while 使用格式 loop指...

  • 汇编七

    函数的局部变量 拿参数是bp+ 拿局部变量是bp- 平栈是先把bp赋给sp 栈越界 超过三次以上的循环就避免使用递...

  • 汇编(七)

    Loop指令 loop指令和cx寄存器配合使用,用于循环操作类似高级语言的for,while 使用格式 loop指...

  • 汇编(七)

    Loop指令 Loop指令和CX寄存器配合使用,用于循环操作类似高级语言的for, while 使用格式 mov...

  • 汇编(七)

    Loop指令 loop指令和cx寄存器配合使用,用于循环操作类似高级语言的for,while,(更像do whil...

  • iOS逆向学习(arm64汇编入门)

    iOS汇编 iOS汇编语音有很多钟。常见的有8086汇编、arm汇编、x86汇编等等。 arm汇编 iOS的架构从...

  • 汇编七、ADRP指令

    得到一个大小为4KB的页的基址,而且在该页中有全局变量g的地址;ADRP就是讲该页的基址存到寄存器X8中; ADD...

  • iOS逆向-汇编(七)

    Loop指令 loop指令和cx寄存器配合使用,用于循环操作类似高级语言的for,while 使用格式 mov c...

  • ARM64汇编入门 - 汇编基础

    ARM64汇编入门 - 汇编基础ARM64汇编入门 - 汇编基础

网友评论

      本文标题:汇编七

      本文链接:https://www.haomeiwen.com/subject/kwtykxtx.html