iOS逆向工程

逆向学习笔记6——MachO文件

2018-05-04  本文已影响131人  危险地带_浅笑

官方介绍总共有11种格式! 是 Mach Object的缩写,是Mac/iOS 上用于存储程序,库的标准格式!
常见的格式:

.o文件

1,首先自己创建一个test.c文件,并写一些自己需要的代码

image.png
在终端执行clang -c test.c,获得test.o文件,通过file test.o查看文件类型Mach-O 64-bit object x86_64
image.png
从他的文件类型,我们知道Object不是可执行文件,执行clang -o test1 test.o就可以获得一个test1的可执行文件,在终端执行./test1就直接打印出test了。

.c,.o文件转成可执行文件,常用命令

.a文件

image.png

注:.dylib查看方式也和.a文件的方式一样,这里就不在赘述了

动态库共享缓存

为了提高性能,系统的动态库文件都存在了动态库共享缓存里面!


image.png

动态加载器(dyld)

选择MachO文件的类型

image.png

app包的架构

image.png

拆分/整合二进制文件

瘦身/拆分

$ lipo xxx -thin armv7 -output macho_armv7    //xxx是app包的可执行文件
$ lipo xxx -thin armv64 -output macho_armv64

整合

$ lipo -create macho_armv7 macho_arm64 -output machO_v7_64

class-dump

如果安装MonkeyDev了,注意配置好环境变量,
vim ~/.zshrc

export MonkeyDevPath=/opt/MonkeyDev
export MonkeyDevDeviceIP=
export PATH=/opt/MonkeyDev/bin:$PATH

拿到所有可执行文件中.h文件

$ class-dump -H MachO文件Path -o 头文件路径

相关资源趣探 Mach-O:文件格式分析

上一篇下一篇

猜你喜欢

热点阅读