当前位置: 首页 > wzjs >正文

创建自由摄影师的网站内容海底捞口碑营销

创建自由摄影师的网站内容,海底捞口碑营销,外贸网站建设制作,哪家做企业网站一、ARM64 函数调用分析(汇编级) 寄存器规则(AArch64 ABI) 用途寄存器参数传递x0 ~ x7返回值x0(最多两个:x0、x1)栈指针sp链接寄存器x30(lr)帧指针x29(fp&a…

一、ARM64 函数调用分析(汇编级)

寄存器规则(AArch64 ABI)

用途寄存器
参数传递x0 ~ x7
返回值x0(最多两个:x0、x1)
栈指针sp
链接寄存器x30(lr)
帧指针x29(fp)
临时/通用寄存器x9~x15等

函数调用指令流程

bl target_func     ; 跳转并将返回地址保存到 x30(link register)
ret                ; 返回上一级,等价于 br x30

举例

mov x0, #2
mov x1, #3
bl  add_func        ; 调用 add_func(2, 3)

二、栈帧结构详解

每个函数调用会建立自己的“栈帧”,用于:

  • 保存 caller 的寄存器(尤其是 x29, x30)

  • 为局部变量腾出空间

  • 管理多层调用时的上下文切换

标准函数前后结构

函数入口

stp x29, x30, [sp, #-16]!    ; 保存 fp 和 lr,栈顶向下扩展 16 字节
mov x29, sp                  ; 新帧指针 = 当前栈顶

函数返回

ldp x29, x30, [sp], #16      ; 恢复帧指针和返回地址
ret                          ; 返回上一层

示例完整函数

func:stp x29, x30, [sp, #-16]!    ; 建栈帧mov x29, sp// 函数体ldp x29, x30, [sp], #16      ; 恢复ret

三、栈帧结构图解(栈向下增长)

高地址 ↑
───────────────上一帧 fp      ← x29返回地址(lr) ← x30
───────────────局部变量区参数传递区(x8+)
───────────────当前 sp(栈底)
低地址 ↓

分析技巧:

  • IDA 里找 stp x29, x30, [sp,#-xxx]! 是函数入口特征

  • 栈帧大小往往是 16 的倍数(对齐)


四、系统调用实现(Linux syscall in ARM64)

在裸汇编中实现 syscall 需要:

  • 把 syscall 参数放入 x0~x5

  • 把 syscall 编号放入 x8

  • 执行 svc #0 发起系统调用

系统调用号对照

功能syscall 号
write64
read63
openat56
mmap222
exit93

示例:调用 write 输出字符串

汇编代码(写到 stdout)

.global _start.section .data
msg:    .ascii "Hello ARM64!\n"
len = . - msg.section .text
_start:mov x0, #1              // stdoutldr x1, =msg            // buf addressmov x2, #12             // lengthmov x8, #64             // syscall number: writesvc #0                  // trigger syscall// exit(0)mov x0, #0mov x8, #93             // syscall number: exitsvc #0

编译运行方式(Linux ARM64 模拟器或真机)

aarch64-linux-gnu-as hello.s -o hello.o
aarch64-linux-gnu-ld hello.o -o hello
qemu-aarch64 ./hello

五、逆向视角:系统调用识别

在 IDA 中看到以下指令,基本可以确认是系统调用:

mov x8, #64       ; syscall 编号
svc #0            ; 系统调用

结合调用前的 mov x0, #1, ldr x1, =addr, mov x2, #len 可以还原 syscall 是写 stdout。

汇总图(函数调用 → 栈帧 → syscall)

main:stp x29, x30, [sp, #-16]!      // 保存mov x29, spmov x0, #1                     // arg0: stdoutldr x1, =msg                   // arg1: buffer addrmov x2, #13                    // arg2: lengthmov x8, #64                    // syscall writesvc #0                         // 发起调用ldp x29, x30, [sp], #16        // 恢复ret

六、总结

内容关键点
调用规则x0~x7 传参,x30 返回地址
栈帧结构使用 x29 做帧指针,函数内局部变量/保存寄存器都存在栈
系统调用x0~x5 参数, x8 syscall 号, svc #0 触发
IDA/Ghidra逆向stp/ldp, bl, svc 判断函数入口、调用、syscall
实战环境用 qemu + aarch64 工具链模拟也能练习
http://www.dtcms.com/wzjs/334160.html

相关文章:

  • 拉萨伟志达网站建设seo简介
  • wordpress 删除边栏优化大师app
  • 有哪些网站可以做全屏代码要做网络推广
  • 做网站的分辨率是72吗网站推广多少钱
  • 拓普网站建设关键词排名批量查询
  • 阿里云无主体新增网站2021年关键词排名
  • 电子商务b2c网站建设王通seo
  • 只做app不做网站可以吗seo全网优化指南
  • 哪里可以找到免费的网站自己如何制作一个网页
  • 网站下载织梦模板找推网
  • 开通网站费可以做待摊费用吗广告投放平台排名
  • 金华网站建设seo公司推荐推广平台
  • 好玩网页传奇桔子seo查询
  • 公安机关备案 网站百度上怎么打广告宣传
  • 网站如何进行代码优化seo网站编辑优化招聘
  • 运用虚拟机建设网站湖南网络推广排名
  • 关于网站建设规划方书案例样式下载谷歌浏览器
  • 免费家装设计网站cpa广告联盟平台
  • wordpress 5图片相对路径野狼seo团队
  • 网站主体负责人必须是法人吗最新清远发布
  • 兰州拼团网站建设女教师遭网课入侵直播录屏曝光8
  • 迅睿cms建站幽默广告软文案例
  • 网站建设 维护 运营情况报告获客软件排名前十名
  • 徐州做网站需要多少钱上海网站推广排名公司
  • 网站开发ppt转h5淘宝竞价排名
  • sap.net怎么做网站seo销售
  • 电脑课做网站所需的软件关键词歌曲
  • 精美ppt模板免费下载网站网站优化排名服务
  • 怎么根据别人的网站做自己的网站非企户百度推广
  • vs网站开发效果图微信推广平台怎么做