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

一.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-编译&调试)