布景

在调试release包时因为没有符号信息,只能经过地址下断点。今日给咱们介绍一款东西restore-symbol。 运用这款东西后能够在调试release包时候经过符号下断点。

准备作业

  • clone并编译restore-symbol
git clone --recursive https://github.com/tobefuturer/restore-symbol.git
cd restore-symbol && make
./restore-symbol
  • 准备好待调试的文件,这儿我运用x86架构MacOS App Dash

先试试不康复符号是什么效果

想要用lldb调试这个app需求先对这个app进行重签名

codesign -f -s 证书名 /Applications/xxx.app

先用hopper随便找个简单进入的符号 能够看到了解的viewDidLoad就用它把

[逆向]使用restore-symbol来恢复Release包的调试信息
[逆向]使用restore-symbol来恢复Release包的调试信息
能够看到下断点失利了。 这时只能经过ASLR+偏移地址计算出实在地址来下断点非常费事

康复符号后进行调试

先康复符号

./restore-symbol ~/Desktop/Dash.app/Contents/MacOS/Dash -o ~/Desktop/Dash.app/Contents/MacOS/Dash1

然后手动替换一下Mach-O文件 在重复从前的操作

[逆向]使用restore-symbol来恢复Release包的调试信息
发现能够断点了,能够愉快的进行调试了

跋文

本文首要是演示了X86上康复OC断点的根本办法。看完之后可能对debug-symbol的效果有了一定的了解。此外restore-symbol还能经过IDA康复block的符号。 真机因为证书的问题过程更繁琐。不过有个开源项目MonkeyDev简化了这些操作。

关于App-Infra DevOps 团队

App-Infra DevOps团队作为公司的移动研制中台,致力于优化公司各业务的研制和交给过程中的质量、成本、安全、效率和体验。到目前为止咱们已经有超越上百个业务接入,1万+人日常运用;均匀每天支撑 3000+研制使命顺畅交给;建设了业界抢先且可能是国内最大的构建集群,每天运转20万+次构建使命。

字节跳动当时作为国内乃至全球最大的”应用工厂”,咱们期待更多有热心和创造力的同学参加,为这座工厂打造业界最抢先,最高效的生产东西。

咱们的作业内容首要包含:

  • 供给使命办理,工程办理,开发调试,交给流程支撑的一站式同开发渠道。一起供给Native版及Web版,目标成为下一代端云协同的研制根底设施。
  • 客户端 IDE 云化的探索性项目,意图是供给一整套线上编码、调试环境,让用户翻开浏览器就能够进行代码开发,满足不同场景的需求,提升研制效率。

参加咱们

北京-高档iOS开发工程师 — 终端技能 job.toutiao.com/s/2YHxkXW

职位描绘

1、负责头条公司产品的通用技能研制和性能优化,完结高质量编码和测验作业 2、结构保护,通用东西开发等 3、规划杰出的代码结构,不断迭代重构; 4、前沿技能研究,承当重点、难点的技能攻坚

职位要求

1、本科及以上学历,计算机、通讯等相关专业 2、具有扎实的编程功底,杰出的规划能力和编程习气 3、熟练掌握Objective-C,C++,了解Swift的优先 4、了解bash/python/ruby/js的优先

上海-高档iOS开发工程师 — 根底技能 job.toutiao.com/s/2YHm8a7

职位描绘

  1. 负责公司客户端产品的通用根底技能研制,完结高质量编码和测验作业
  2. 通用研制东西开发、通用结构开发等
  3. 规划杰出的代码结构,不断迭代重构
  4. 前沿技能研究,承当重点、难点的技能攻坚

职位要求

  1. 本科及以上学历,计算机、通讯等相关专业
  2. 具有扎实的编程功底,杰出的规划能力和编程习气
  3. 熟练掌握Objective-C,C++,了解Swift的优先
  4. 了解前后端相关和跨渠道技能、了解bash/python/ruby/js等语言和相关结构的优先

杭州-高档iOS开发工程师 — 根底技能 job.toutiao.com/s/2YHdPAE

职位描绘

  1. 负责公司跨渠道相关技能研制,完结高质量编码和测验作业
  2. 负责通用跨端结构及周边东西开发等
  3. 规划杰出的代码结构,不断迭代重构
  4. 前沿技能研究,承当重点、难点的技能攻坚

职位要求

  1. 本科及以上学历,计算机、通讯等相关专业
  2. 具有扎实的编程功底,杰出的规划能力和编程习气
  3. 熟练掌握Objective-C,C++,了解Swift的优先
  4. 了解前后端相关和跨渠道技能,了解bash/python/ruby/js等语言和相关结构的优先