2019独角兽企业重金招聘Python工程师标准>>>

在Mac OS下分析Crash Log有很多种方法,这里不是要说明如何分析的Crash Log, 主要是展示下Hopper的使用。 强大的IDA大家可能已经知道,但它的Mac OS版本又让人回到了DOS时代。幸运的是Mac OS有了一个小巧的替代品:Hopper, 基本上满足了工作上的反汇编的需要,包括伪代码以及控制流图(Control Flow Graph),支持ARM指令集并对Objective-C的做了优化。

先给张界面总览(左侧是符号列表,打开程序后,用工具栏最右侧的Read Executable就可以打开可执行程序分析):

下面以分析Crash Log为例,展示下Hopper的使用。

在应用程序一个位置使用assert让它崩掉,可以得到如下的Crash Log:

Crash Log
  Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
  0   libsystem_kernel.dylib             0x981fd9c6 __pthread_kill + 10
  1   libsystem_c.dylib                  0x99692f78 pthread_kill + 106
  2   libsystem_sim_c.dylib              0x01e5a57b abort + 140
  3   libsystem_sim_c.dylib              0x01e3c286 __assert_rtn + 267
  4   BlogCounter                        0x000033c9
  5   BlogCounter                        0x00003362

打开Hopper,找到菜单Navigate->Go To Address or Symbol

在对话框输入33c9,Hopper就会跳到程序崩的位置。

生成伪码看看

太短了! 和源代码比比:

显然编译器优化过了。因为assert(0)是稳定崩定的,所以下面的代码都没有生成。

可以将assert改为

  assert(URLString==nil);

再尝试时,崩溃的位置已经变更(Mac OS有一项技术,程序和程序库在加载时的地址是动态决定的)。我们再看下新的代码和控制流图(CFG):

CFG:

官网: www.hopperapp.com

它用的反汇编引擎:

http://www.beaengine.org/

转载请注明出处: http://blog.csdn.net/horkychen

转载于:https://my.oschina.net/u/2361492/blog/792435

IOS反汇编工具Hopper分析Crash Log相关推荐

  1. iOS 几种常用的 crash log 崩溃信息调试方法. (转载)

    前言:crash log 对 定位崩溃问题 ,并且不容易复现,尤其是及时对appstore 上正在运营的 app 的迭代改进来说 非常重要. 1 crash两种情况 1.1 测试环境下 追踪bug 1 ...

  2. iOS通过dSYM文件分析crash

    http://blog.csdn.net/hjy_x/article/details/20929095 重点是dwarfdump --uuid命令 我们在ios开发中会碰到的很多crash问题,如果D ...

  3. iOS 几种常用的 crash log 崩溃信息调试方法

    前言:crash log 对 定位崩溃问题 ,并且不容易复现,尤其是及时对appstore 上正在运营的 app 的迭代改进来说 非常重要. 1 crash两种情况 1.1 测试环境下 追踪bug 1 ...

  4. 反汇编和二进制分析工具清单

    本附录列出了许多反汇编和二进制分析工具,包括逆向工程.反汇编API以及执行跟踪的调试器. C.1 反汇编工具 C.1.1 IDA Pro(Windows.Linux.macOS) IDA是行业标准的递 ...

  5. 别用symbolicatecrash来解析crash Log了

    今天突然发现了一个解析iOS crash log的好方法,忍不住来分享一下. 相信每个做iOS开发的TX都应该不会对symbolicatecrash陌生,我们第一次遇到真机上产生的崩溃日志时,在网上搜 ...

  6. ios设备的Crash Log提取及分析方法

    转载地址:http://blog.csdn.net/langresser/article/details/7403729 提取crash log的方法: 方法1:用工具直接获取 iPhone 设备上 ...

  7. 深入理解iOS Crash Log

    Crash Log Crash Log的主要来源有两种: Apple提供的,可以从用户设备中直接拷贝,或者从iTunes Connect(XCode)下载 三方或者自研Framework统计,三方服务 ...

  8. iOS线上APP崩溃(Crash)分析

    这两周一直在研究如何追踪线上的bug,如何快速分析出程序到底崩溃在什么地方,从底层了解Crash是如何产生的.如何传递的.以及是如何分析出来的.虽然项目组并没有对这些要求很严格,但是作为一个高级开发人 ...

  9. iOS开发工具——网络封包分析工具Charles

    iOS开发工具--网络封包分析工具Charles 简介 Charles是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Char ...

最新文章

  1. 北斗导航 | C语言实现PPP(精密单点定位)
  2. JWT生成Token做登录校验讲解
  3. Js数据类型之——Date
  4. 在Linux上将视频转换成动态gif图片 (附:ffmpeg和ImageMagick安装方法)
  5. 四个球队,单循环比赛,平局每队各得一分,胜利得3分,输不得分,最后各队得分是连续的四个自然数,求第二名的得分...
  6. 国立台湾大学里的自动化书库(立体库)
  7. 微信开发者工具公众号网页调试跨域问题的解决
  8. 2021年氯化工艺考试题库及氯化工艺考试试卷
  9. 01 - Kali笔记_Linux_Kali环境熟悉
  10. MySQL版本号后面包含“-log”代表什么意思?
  11. pat甲级考试报名费_2019吉林省公务员考试笔面心得
  12. win7离线安装tensorflow-gpu1.13.1
  13. Apache Tomcat优化
  14. 提示格式化怎么办,提示格式化找到方案
  15. c语言中pair的头文件,C++中使用pair是否一定要包含头文件utility
  16. 字节跳动任命凯文·梅耶尔为首席运营官
  17. 三维显示中可视化分析——视域分析、视点分析
  18. 牛客银行面试问题总结
  19. 6、react 模块和组件
  20. Macbook Pro A1708更换磁盘

热门文章

  1. 百倍提升张量计算:谷歌开源TensorNetwork
  2. 对话式AI 2019年遇来的新市场
  3. AI时代将临,各国战略及企业布局有何特点?
  4. 干货丨深度学习和经典机器学习的全方位对比
  5. WordNet简介以及一些语言学知识。
  6. latex中的各种文件
  7. 李德毅院士《探索新一代人工智能产业发展》
  8. 40年诞生7位诺奖得主,美国贝尔实验室做对了什么?
  9. 好文 | “智能经济”时代,协作机器人的应用前景与趋势探讨
  10. 麦肯锡报告摘译:未来成功城市的14个特征