GO版本:1.16
方法:将代码编译到可执行过程中,并通过GDB Anti编译与平台相关的汇编代码
编译
使用GDB反校准
目前,主要功能的堆栈框架如下:
目前,它仅在汇编代码的第一行中停止,并且没有执行此行,因此存储了此行的地址,并且将执行CPU的下一个指令。向下,直接进入第七行到第七行
由于主要函数需要提供参数和返回值,因此保留字节空间的主要功能(A + B +返回值= 32),第四行指令将下降32个字节大小,第五行指令将指令将伯特内容的内容放置在24个字节的向上偏差位置(相应的plan9 IS),并且第六行的地址将存储。此时
目前,主要功能的堆栈框架如下:
呼叫点位置的断点
分别的参数分别是分离和位置的参数。目前,主要功能的堆栈框架如下:
接下来,这是呼叫指令:首先扫描功能
执行后,将对下一个指令的值进行编程,并且当前值将包含在堆栈中(此处代表函数堆栈的位置),同时,堆栈的顶部将是在此时的第一个函数的第一个指令的第一个指令的位置向下移动,如下所示:
继续执行,
由于堆栈不是空的,只有一个局部变量,因此需要向下移动16个字节(8个字节到本地变量,8个字节),然后将RBP的值保存到8(RSP)中。8(RSP)(RSP))地址存储在RBP中
目前,主/子功能的堆栈框架如下:
接下来的五个元素汇编代码
目前,主/子功能的堆栈框架如下:
继续执行并分解
解释这两行
将下一行分解为呼叫指令的下一行
您可以看到这些寄存器的值与图片上的值相同。