CTF 竞赛入门指南(CTF All In One)学习(五)


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, %rcx) ;特殊情况, 用到了按比例放大的索引 ( scaled-index ), 假设比例 ( scale ) 为0

指令

指令后缀

       bwlq分别表示 1,2,4,8 字节。

ARM汇编基础




参考链接:
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/x64-architecture

猜你喜欢

转载自blog.csdn.net/m_pNext/article/details/107242236
ctf