mach-o文件分析工具 MachOview探究

91 篇文章 3 订阅
1 篇文章 0 订阅

一、MachOView工具概述及安装

使用MachOView工具可以在Mac平台中可查看Mach-O文件的格式信息.iOS系统中可执行程序就属于Mach-O文件格式。

MachOView工具属于免费开源项目,源代码可在https://github.com/gdbinit/MachOView下载,

MachOview安装及常见报错:
MachOview部分软件打开mack-o文件出现闪退的情况,建议从上面网站下载源码编译出.app包来使用.

1.如果出现编译不过,请查看Base SDK是否匹配

 

屏幕快照 2019-01-15 下午5.08.22.png

 

出现上面的情况将Base SDK选为macOS,如下:

 

屏幕快照 2019-01-15 下午5.08.33.png

2.如果出现下面报错:

屏幕快照 2019-01-15 下午5.10.11.png


将macOS Deployment Target 选择为你的mac系统版本就可以,我的是10.13

屏幕快照 2019-01-15 下午5.10.28.png


3.编译过后,在product目录将MachOView.app文件拷贝到Application目录下就可以正常使用了

 

二、使用MachOView工具打开一个.a文件

我使用的是友盟的一个.a文件

  • 1.打开MachOView,左上角File-->Open 然后选中要分析的.a文件

     

    屏幕快照 2019-01-15 下午5.30.59.png

可以看到该.a文件是一个Fat二进制文件,支持ARM/X86/ARM64/X86_64四种架构

三、关于MachOView的解读请移步另一篇文章 mach-o 介绍

mach-o 介绍

四、扩展:

1. Fat二进制文件拆分:
上面说到Fat二进制文件,是指该.a文件是个集合文件,支持多种cpu架构,我们可以用命令将此胖二进制文件进行拆分:**

步骤如下:
将.a文件放到桌面,打开终端,cd到桌面,执行

$ lipo libUMessage_Sdk_1.5.0a.a -thin arm64 -output UM_ARM64_SDK.a

$ lipo libUMessage_Sdk_1.5.0a.a -thin x86_64 -output UM_X86_64_SDK.a

执行完成在桌面可以看到UM_ARM64_SDK.a 和UM_X86_64_SDK两个.a文件.

2. 查看拆分结果:
使用MachOView打开拆分前后的.a文件,对比可以看出已经将ARM64的可执行文件拆开了,同样其他架构的也可以拆出来:

6483406-9500977b966ec059.png

 

从下图可以看出拆开的二进制文件内容并不会发生变化:

6483406-0426ccd94cf6679f.png

3.将多个单架构二进制文件合并成为Fat二进制文件

$ lipo -create UM_ARM64_SDK.a UM_X86_64_SDK.a -output test.a

屏幕快照 2019-01-16 下午2.14.54.png

6483406-fcc5a9cd035bb0f1.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值