美文网首页
iOS项目查看汇编代码

iOS项目查看汇编代码

作者: 夜凉听风雨 | 来源:发表于2022-03-30 21:29 被阅读0次

    一、显示汇编

    正常我们在代码处打上断点,运行到断点处就会显示我们写的代码,想要看到汇编代码需要做以下设置。

    勾选上xcode顶部 Debug -> Debug Workflow -> Always Show Disassembly即可看到如下图所示汇编代码。

    汇编代码.png

    ①:表示每一行汇编代码的地址
    ②:表示每一行汇编代码与第一行代码地址相差多少个字节
    ③:表示汇编指令操作符
    ④:汇编指令操作的对象

    二、查看内存

    勾选上xcode顶部 Debug -> Debug Workflow -> View Memory 即可看到如下图所示的界面。
    在此界面输入地址,就可以查看到地址对应的内存中的内容

    查看内存界面.png

    下面我输入一个地址查看到内存中对应的值是0x0A也就是10

    内存对应内容.png

    三、常用lldb指令

    1.读取寄存器的值

    • register read [寄存器名称] 读取某个寄存器的值
      register read rax 打印结果:rax = 0x0000000100008018

    • register read 读取所有寄存器
      register read 打印结果:

    General Purpose Registers:
           rax = 0x0000000100008018  swiftTest`swiftTest.a : Swift.Int
           rbx = 0x0000000000000000
           rcx = 0x0000000000000000
           rdx = 0x00007ffeefbff4c8
           rdi = 0x0000000000000001
           rsi = 0x00007ffeefbff4b8
           rbp = 0x00007ffeefbff490
           rsp = 0x00007ffeefbff430
            r8 = 0x0000000000000000
            r9 = 0x0000000000000000
           r10 = 0x0000000000000000
           r11 = 0x0000000000000000
           r12 = 0x0000000000000000
           r13 = 0x0000000000000000
           r14 = 0x0000000000000000
           r15 = 0x0000000000000000
           rip = 0x0000000100003eea  swiftTest`main + 42 at main.swift:12:9
        rflags = 0x0000000000000246
            cs = 0x000000000000002b
            fs = 0x0000000000000000
            gs = 0x0000000000000000
    

    2.修改寄存器的值

    • register write [寄存器名称] [值]
      register write rax 0x0002135ab34 把5这个数写入寄存器rax

    3.读取内存中的值

    x/数量-格式-字节大小 内存地址

    x 0x0000000100003edc 打印结果:

    0x100003edc: 48 c7 05 39 41 00 00 14 00 00 00 89 7d cc 48 89  H..9A.......}.H.
    0x100003eec: c7 48 8d 45 e8 48 89 75 c0 48 89 c6 ba 20 00 00  .H.E.H.u.H... ..
    

    x/3xw 0x0000000100003edc 打印结果:

    0x100003edc: 0x3905c748 0x14000041 0x89000000
    

    4.修改内存中的值

    memory write [内存地址] [数值]
    memory write 0x0000010 10

    5.格式

    x是16进制, f是浮点,d是十进制

    6.字节大小

    b - byte 1字节
    h - half word 2字节
    w - word 4字节
    g - giant word 8字节

    7.表达式

    expression [表达式] 可以简写为 expr [表达式]

    expression a = 10
    expr b = 3

    8.po表达式

    po/格式 [对象]
    po age
    po/d age

    9.断点调试

    • 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(两种写法一样)
      直接执行完当前函数的所有代码,返回到上一个函数(遇到断点会卡住)

    相关文章

      网友评论

          本文标题:iOS项目查看汇编代码

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