逆向-ARM64汇编二

一、ARM64汇编-内存操作ldr指令

load,从内存中读取数据

ldr 、 ldur

ldp (p是pair的简称)

1.1 ldr

ldr x0, x1

打印a 的地址值

ldr指令:从内存中读取数据

ldr x0, x1

ldr指令:从内存中读取数据

ldr w0, x1。改为准确的读取a的地址值 这样读取的就是a的地址值

1.2、-ldur指令

ldr w0, x1, #0x4 就是x1 内存地址值+一个立即数 然后再赋值给w0

ldr w0, x1, #0x4! 内存地址值+一个立即数 然后再赋值给w0 同时修改x1的值

ldr w0, x1, #-0x4 右边是正数的话就是ldr

ldur w0, x1, #0x4 右边是负数的话就是ldur

1.3 ldp

ldp指令:从内存中读取数据,放到一对寄存器中

ldp w0, w1, x2, #0x10

先取 x2, #0x10 开始的前四个字节给w0 ,再取接着的四个字节给w1

浮点数的赋值

二、ARM64汇编-str、stur、stp指令

store,往内存中写入数据

str 、stur

stp

零寄存器,里面存储的值是0

wzr (32bit , Word Zero Register)

xzr (64bit)

str指令:往内存中写入数据

str x0, x1

stur 和 stp 同上面的读取类似

2.1 零寄存器,里面存储的值是0

wzr (32bit , Word Zero Register)

xzr (64bit)

三、 程序计数器和链接寄存器

程序计数器

o pc (Program Counter)

。 记录CPU当前指令的是哪---条指令

。 存储着当前CPU正在执行的指令址 。 类似于8086汇编的ip寄存器

链接寄存器

lr (Link Register),也就x30 。

存储着函数的返回地址

三、堆栈

函数的类型

。 叶子函数

。 非叶子函数

3.1 叶子函数 函数的堆栈平衡

xcrun --sdk iphoneos clang -S -arch arm64 main.c -o main.s

sub sp, sp, #32 ; =16 和add x29, sp, #16 ; fp = sp + 16 申请和释放内存流程

3.2 非叶子函数的堆栈平衡

相关推荐
wechatbot8881 天前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa
00后程序员张1 天前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
wechatbot8884 天前
解决企业微信官方 API 短板:iPad 协议全功能对接方案
java·汇编·windows·http·微信·企业微信
学逆向的7 天前
汇编——JCC指令
开发语言·汇编·网络安全
一只旭宝7 天前
【汇编入门】寄存器、MOV/LEA、JMP/CALL/RET、内存与指令本质
汇编
学逆向的9 天前
汇编——寻址方式
开发语言·汇编·网络安全
我不是QI9 天前
Master PDF Editor 逆向复现
汇编·安全·pdf
学逆向的10 天前
汇编——堆栈平衡
开发语言·汇编·网络安全
执迷不悟82315 天前
ARM--汇编指令
汇编·arm开发
Dlrb121116 天前
ARM指令集---汇编指令集的学习与应用:C程序与汇编的相互调用,处理器工作模式的改变等
汇编·arm开发·arm··arm指令集·汇编指令