13bf8ffeed204302b6aeb12e2caa4b17

  1. RDI:用于传递第一个整数参数。
  2. RSI:用于传递第二个整数参数。
  3. RDX:用于传递第三个整数参数。
  4. RCX:用于传递第四个整数参数。
  5. R8:用于传递第五个整数参数。
  6. R9:用于传递第六个整数参数。

写个总结方便查表

寄存器

常见的寄存器以e开头或r开头,代表不同的架构。

开头 架构
~l(低位),~h(高位) 8位
16位
e 32位
r 64位

SP、BP、IP(栈与函数调用相关)

寄存器 说明
SP 放栈的偏移地址,SP始终指向栈顶元素 栈指针(Stack Pointer)
BP 栈帧基址指针寄存器为访问栈空间数据提供方便 帧指针(Frame Pointer)
IP 指令寄存器指向当前栈帧中执行的指令(可以理解为读取esp地址中所对应的信息)

eax、edx和ecx为主调函数保存寄存器,在函数调用前主函数将其入栈,调用结束后出栈

ebx、esi和edi为被调函数保存寄存器,在函数调用后子函数将其入栈,返回时出栈

转移控制ret call

转移控制指令与%rip%rsp寄存器有关

image-20231204203624302

leave

image-20231204215802225

汇编学习教程:走进 bp_汇编bp-CSDN博客

栈溢出的基础原理,EBP/EIP/ESP详解 —- buuctf rip 1题目讲解_buuctf rip1-CSDN博客

使用 bp 寻址栈空间时,需要先 mov bp,sp,将当前栈顶赋值给 bp,然后以当前栈顶为起始地址,通过 [bp+idata] 的寻址方式来访问栈空间内数据。

关于ubuntu18版本以上调用64位程序中的system函数的栈对齐问题 - ZikH26 - 博客园 (cnblogs.com)

CS、IP (指令执行)

寄存器 说明
CS 代码段寄存器
IP 指针寄存器

CS和IP寄存器的作用及执行分析cs ip猪哥-嵌入式的博客-CSDN博客

FS/GS寄存器的用途 - 知乎 (zhihu.com)

栈和栈帧 - 知乎 (zhihu.com)

C语言函数调用栈(一) - clover_toeic - 博客园 (cnblogs.com)

(30 封私信 / 80 条消息) 函数调用过程中栈到底是怎么压入和弹出的? - 知乎 (zhihu.com)

栈帧

栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。简言之,栈帧就是利用EBP(栈帧指针,请注意不是ESP)寄存器访问局部变量、参数、函数返回地址等的手段。

1
2
3
4
5
6
7
8
9
10
;栈帧结构
PUSH EBP ;函数开始(使用EBP前先把已有值保存到栈中)
MOV EBP, ESP ;保存当前ESP到EBP中

... ;函数体
;无论ESP值如何变化,EBP都保持不变,可以安全访问函数的局部变量、参数

MOV ESP, EBP ;将函数的起始地址返回到ESP中
POP EBP ;函数返回前弹出保存在栈中的值
RETN ;函数终止

EBP指向当前栈帧的底部,ESP始终指向栈帧的顶部。

img

实参N~1→主调函数返回地址→主调函数帧基指针EBP→被调函数局部变量1~N

image-20231213222107899

OFFSET 属性操作符

取得标号的偏移地址

助记符

助记符(mnemonic)是便于人们记忆、并能描述指令功能和指令操作数的符号,助记符是表明指令功能的英语单词或其缩写。

助记符 说明
JNE 不相等跳转
JE 相等跳转
JNZ JNZ

JE ;等于则跳转
JNE ;不等于则跳转

JZ ;为 0 则跳转
JNZ ;不为 0 则跳转

JS ;为负则跳转
JNS ;不为负则跳转

JC ;进位则跳转
JNC ;不进位则跳转

JO ;溢出则跳转
JNO ;不溢出则跳转

JA ;无符号大于则跳转
JNA ;无符号不大于则跳转
JAE ;无符号大于等于则跳转
JNAE ;无符号不大于等于则跳转

JG ;有符号大于则跳转
JNG ;有符号不大于则跳转
JGE ;有符号大于等于则跳转
JNGE ;有符号不大于等于则跳转

JB ;无符号小于则跳转
JNB ;无符号不小于则跳转
JBE ;无符号小于等于则跳转
JNBE ;无符号不小于等于则跳转

JL ;有符号小于则跳转
JNL ;有符号不小于则跳转
JLE ;有符号小于等于则跳转
JNLE ;有符号不小于等于则跳转

JP ;奇偶位置位则跳转
JNP ;奇偶位清除则跳转
JPE ;奇偶位相等则跳转
JPO ;奇偶位不等则跳转

汇编语言—-跳转指令ja、jb、jl_ja指令-CSDN博客

image-20231204211519068

image-20231217152036141

image-20231204231924593

image-20231217152126255

image-20231217160124336

image-20231217160541307

image-20231217162802960

image-20231217162910459

image-20231217191507340

image-20231217192424763

image-20231217224857052