aarch64架构汇编速成,用于逆向aarch64代码
学习资料:https://github.com/nzcv/note
重要寄存器
- x0~x7:传递子程序的参数和返回值,一般x0保存返回值
- x29:帧指针寄存器(FP),用于连接栈帧,使用时必须保存。(类似8064架构下的ebp)
- x30:链接寄存器(LR),用于保存子程序的返回地址
- x31:堆栈指针寄存器(SP),用于指向每个函数的栈顶。
重要指令
ADD指令
add x0, x1, #1 ; x0 = x1 + 1
第一个操作数是destination,后面两个操作数是source
#
表示立即数
STR指令
==》
STR X1, [SP,#0x20+var_10] ; var_10 = x1
LDR指令
《==
LDR X0, [SP,#0x20+var_18] ; x0 = var_18