美文网首页
iOS逆向基础02-编译&调试

iOS逆向基础02-编译&调试

作者: 李永开 | 来源:发表于2019-03-08 15:24 被阅读0次

    一.iOS的编译器和调试器

    • xcode的编译器发展历史:GCC --> LLVM

    • xcode的调试器发展历史:GDB --> LLDB

      ios的BuildSetting选项
    • 在ios开发中,经常会使用到Clang,那么Clang是什么呢?
      Clang是LLVM的前端,可以用来编译C,C++,ObjectiveC等语言。
      Clang的进行步骤:词法分析、语法分析、语义分析、生成中间代码

    二.LLDB

    express

    (lldb) e NSArray *$arr = @[@1,@2];
    (lldb) po $arr
    <__NSArrayI 0x600001299620>(
    1,
    2
    )
    
    • thread backtarce: 查看函数调用信息. (简写:bt)
      thread teturn: 返回上一个函数
      thread step-in(进入某个函数⬇️);简写:step、s------------->si 汇编级别指令
      thread step-out(退出某个函数⬆️);简写:finish
      thread step-over(函数级别跳过⤵️);简写:next、n)---------->ni 汇编级别指令
      c:继续运行(thread continue的缩写)
    • breakpoint:
      breakpoint set -n test: 给test函数打断点
      breakpoint set -r test : 正则表达式匹配方法
      breakpoint set -s xx.dylib(动态库名称) -n test : 给xx动态库的test函数打断点
      breakpoint list : 查看已经打好的断点
      breakpoint command add 1(断点编号):给某个断点添加脚本
    • 内存断点:
      watchpoint set variable self->age:监控self.age的值
      watchpoint set expression 0x78779ae9:监控某块内存的值
    • image:
      image list: 查看app使用了哪些模块
      image lookup -t NSInteger(或self):查看NSInteger(或self)的类型
      image lookup -a 0x6777aecc:查看关于这块内存的所有信息
      image lookup -n test : 查看所有关于test函数的信息
    • frame variable: 打印当前栈帧的变量值

    po * (void **) 0x00

    相关文章

      网友评论

          本文标题:iOS逆向基础02-编译&调试

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