美文网首页iOS逆向
汇编基础知识

汇编基础知识

作者: 一粒咸瓜子 | 来源:发表于2022-06-28 10:09 被阅读0次
软件/程序的执行过程

通常,cpu 会先将内存中的数据存储到寄存器中,然后在对寄存器中的数据进行运算。
假设内存中有快红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色的内存空间

  • cpu 首先会将红色内存空间的值放到 rax 寄存器中: movq 红色内存空间, %rax
  • 然后让 rax 寄存器与1相加: addq $0x1 %rax
  • 最后将值赋值给内存空间:movq %rax,蓝色内存空间

汇编

  • 反汇编: Debug -- Debug Workflow -- Always Show Disassembly
  • 内存视图: Debug -- Debug Workflow -- View Memery

规律

内存地址格式为:0x4bdc(%rip) 一般是全局变量,全局区(数据段)
内存地址格式为:-0x78(%rbp) 一般是局部变量,栈空间
内存地址格式为:0x10(%rax) 一般是堆空间

r开头 x64 64bit:rax
e开头 x86 32bit:eax
ah:8bit

汇编语言种类

作为iOS开发工程师,最主要的汇编语言是:AT&T汇编(iOS模拟器)、ARM汇编(ios真机)

  • 8086汇编(16bit)
  • x86汇编(32bit)
  • x64汇编(64bit)
  • ARM汇编(嵌入式、移动设备)

x86、x64汇编根据编译器的不同,有2种书写格式

  • Inter: Windows派系
  • AT&T:Unix派系

常见汇编指令

寄存器

有 16个常用寄存器:
rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15

寄存器的具体用途:

  • rax、rdx 常作为函数返回值使用
  • rdi、rsi、rdx、rcx、r8、r9等寄存器常用于存放函数参数
  • rsp、rbp 用于栈操作
  • rip 作为指令指针
    存储着 cpu 下一条要执行的指令的地址
    一旦 cpu 读取一条指令,rip会自动指向下一条指令(存储下一条指令的地址)

x64 向下兼容:ah al 在 eax中、这些都在 rax中,下面也如此。


LLDB 常用指令

  • thread step-over、next、n
    • 单步运行,把子函数当做整体一步执行(源码级别)
  • thread step-in、step、s
    • 单步运行,遇到子函数会进入(源码级别)
  • thread step-inst-over、nexti、ni
    • 单步运行,把子函数当做整体一步执行(汇编级别)
  • thread step-inst、stepi、si
    • 单步运行,遇到子函数会进入(汇编级别)
  • thread step-out、finish
    • 直接执行完当前函数的所有代码,返回上一个函数(遇到断点会卡住)

相关文章

  • 第二章 汇编基础

    第二章汇编基础 汇编部分讲解了汇编基础知识,为了帮助大家理解,书中使用了大量的图文和例题。 汇编是通往编程的大门,...

  • 汇编语言

    基础知识: 汇编语言的主体是汇编指令,它决定了汇编语言特性 程序员用汇编语言写出源程序,再用汇编编译器将其编译成机...

  • <<汇编语言>>第1章笔记

    第一章 基础知识 汇编语言基本概念 汇编指令是机器指令便于记忆的书写格式,通过编译器把汇编指令对应到机器指令,汇编...

  • 汇编语言 Ch1-基础知识 笔记

    汇编语言 Ch1-基础知识 笔记 ![](http://picture-repository-of-heamon7...

  • 【笔记】《Linux C编程一站式学习》第17章 x86汇编程序

    第17章 x86汇编程序基础 本文是看17章的笔记。方便自己回顾。汇编基础知识可以看王爽的《汇编语言》本文环境我用...

  • 汇编语言(第3版)王爽

    一、基础知识 mov ax,bx把BX内容送到AX中。汇编语言有3类指令,汇编指令、伪指令,其他符号。CPU通过地...

  • hehe

    王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...

  • 笔记——第一章

    @(读书笔记)[汇编语言,计算机] 基础知识 为什么要有汇编语言 CPU——电平脉冲(高低平)——二进制数字——机...

  • 《汇编语言》王爽,学习笔记(基础知识)

    这是关于王爽老师写的第二版《汇编语言》的学习笔记,因为汇编不是常常用到,所以在这里列举一下汇编的基础知识,常用语法...

  • 汇编基础知识

    汇编语言 除了机器语言和汇编语言其他都属于高级语言。机器语言需要操作码和地址码。 基础知识 第一台计算机冯·诺依曼...

网友评论

    本文标题:汇编基础知识

    本文链接:https://www.haomeiwen.com/subject/zgsavrtx.html