首先可以拿自己的 ipa 包进行尝试。
选择你的 ipa 包,然后把后缀名改为 zip,解压缩得到 Payload 文件夹,里面就是你的 APP。
打开终端,直接 cd 到你的 xxxx.app 目录下。具体做法,输入 cd,然后把 xxxx.app 直接拖到终端里打个回车。
然后输入
1 | otool |
会得到
1 | Usage: /Applications/Xcode9.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool [-arch arch_type] [-fahlLDtdorSTMRIHGvVcXmqQjCP] [-mcpu=arg] [--version] <object file> ... |
有兴趣的同学可以仔细研究一下每个命令是干吗用的,这里介绍几个常用命令:
1 | otool -L |
可执行文件的名称可以右键 xxxx.app 文件,选择显示包内容,然后找到里面的 exec 文件,把名字打进去。一般来说这个文件的名字跟 xxxx 是一样的
然后奇迹就出现了。。。
1 | /System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth (compatibility version 1.0.0, current version 1.0.0) |
是不是很熟悉?这个命令列出了你使用的所有库的名字。
查看 ipa 包是否加壳:
1 | otool -l 可执行文件 | grep crypt |
显示:
1 | cryptoff 16384 |
其中 cryptid 代表是否加壳,1 代表加壳,0 代表已脱壳。我们发现打印了两遍,其实代表着该可执行文件支持两种架构 armv7 和 arm64.
1 | otool -hv filename #地址随机化测试 |
https://github.com/MobSF/Mobile-Security-Framework-MobSF
加壳查验
1 | otool -l 可执行文件 | grep crypt |
其中 cryptid 代表是否加壳,1 代表加壳,0 代表已脱壳。我们发现打印了两遍,其实代表着该可执行文件支持两种架构 armv7 和 arm64.
查看App所使用的动态库
1 | otool -L Mach-O文件路径 |