[Mac OS/iOS]反汇编工具Hopper分析Crash Log

原创 2012年12月12日 06:40:45

  

在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

相关文章推荐

MAC软件破解初探—Hopper Disassembler使用

Hopper Disassembler是一款适用于Mac操作系统的软件,Hopper是一款是32位和64位的二进制反汇编器,反编译和调试。你可以使用此工具拆开你想要的任何二进制。...

MAC下的反编译、反汇编和调试神器Hopper Disassembler

官网:http://www.hopperapp.com/ Hopper是一款运行在Mac、Windows和Linux下的调试(os x only)、反汇编和反编译的交互式工具。可以对32、64位的...

Hopper Disassembler基础使用-iOS逆向工程

Hopper Disassembler基础使用-iOS逆向工程

Hopper Disassembler初体验

一直想在Mac上安装一个逆向工具。然而尝试了很多次IDA Pro都发现已经过期了。于是不得不考虑尝试一下其他工具。在YouTube的某个直播CTF的视频中发现了po主推荐的Hopper,于是搜了一下,...

ios逆向教程使用的工具

类似看雪这样将常用工具做下整理我觉得挺好的,方便新手下载,也方便换机器配置新环境时候能节省时间。 自己整理的工具下载链接: http://pan.baidu.com/s/1nt3BKyX126 ...
  • HK_5788
  • HK_5788
  • 2016年02月24日 14:50
  • 1686

xcode反汇编调试iOS模拟器程序(一)查看反汇编

http://blog.csdn.net/hursing/article/details/8697654 iOS模拟器程序的实质就是Mac OS X程序,只不过它需要以模拟器为载体来运行...
  • jeffasd
  • jeffasd
  • 2016年08月01日 14:02
  • 861

Xcode分析CrashLog的方法

使用dwarfdump检查dSYM和app是否匹配 搞iPhone开发就要不停地发版本,随之而来的就是各种版本的crash log。如果不能好好地管理,那么开发人员很快就会在cras...

crash log 解析方法

1.  使用 dwarfdump 命令 ,需要首先进入 dSYM所在目录 tans-Mac-mini:4.3-4.6Crash tangaowen$ dwarfdump --lookup 0x0009...

GCD 之四:Dispatch Group

在追加到Dispatch Queue中的多个处理全部结束后想执行结束处理,这种情况会经常出现。只使用一个Serial Dispatch Queue时,只要将想执行的处理全部追加到该Serial Dis...

iOS多线程的初步研究(十)-- dispatch同步

原文地址  http://www.cnblogs.com/sunfrog/p/3243230.html GCD提供两种方式支持dispatch队列同步,即dispatch组和信号量。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Mac OS/iOS]反汇编工具Hopper分析Crash Log
举报原因:
原因补充:

(最多只允许输入30个字)