X64汇编基础
寄存器
x64 extends x86’s 8 general-purpose registers to be 64-bit, and adds 8 new 64-bit registers. The 64-bit registers have names beginning with “r”, so for example the 64-bit extension of eax is called rax. The new registers are named r8 through r15.
寻址模式
例如:
movl $1, 0x604892 ;直接写入, 内存地址是一个常数
movl $1, (%rax) ;间接写入, 内存地址存在寄存器 %rax 中
movl $1, -24(%rbp) ;使用偏移量的间接写入
;公式 : (address = base %rbp + displacement -24)
movl $1, 8(%rsp, %rdi, 4) ;间接写入, 用到了偏移量和按比例放大的索引 ( scaled-index )
;公式 : (address = base %rsp + displ 8 + index %rdi * scale 4)
movl $1, (%rax, %rcx, 8) ;特殊情况, 用到了按比例放大的索引 ( scaled-index ), 假设偏移量 ( displacement ) 为 0
movl $1, 0x8(, %rdx, 4) ;特殊情况, 用到了按比例放大的索引 ( scaled-index ), 假设基数 ( base ) 为 0
movl $1, 0x4(%rax,
CTF竞赛入门:X64与ARM汇编基础解析

本文是CTF竞赛入门系列的第五篇,主要讲解X64汇编的基础知识,包括寄存器的扩展,64位寄存器如rax的介绍,以及寻址模式的示例。此外,还提及了ARM汇编的基本概念。通过学习,读者将对这两种汇编语言有初步理解。
最低0.47元/天 解锁文章
2104

被折叠的 条评论
为什么被折叠?



