Macho文件(Mach Object的缩写)
开发中常见的格式有
- 可执行文件
- .o文件(目标文件)/a 静态库文件.其实就是N个.o文件的集合
- 动态库文件(dylib/framework)
- 动态连接器
- DSYM
我们首先使用MachoView,去查看App的核心可执行文件的内部,这里以微信App为例


取出微信的二进制可执行文件(Macho文件) ,打开MachoView进行分析

首先能看到的就是这个App包含2个架构(Arm64 和 Armv7)
接着展开,Arm64架构,看一下里面的东西

其实通过英语,都能简单知道大概这是啥,里面的objc_methodname,objc_classname,里面记录了App的各种类名和方法名。
个人猜测苹果查看是不是马甲包,除了二进制的相似度之外,还会根据这里的类名和方法名进行校准。
其他后面用到再解释咯
网友评论