所在的位置: swift >> swift市场 >> iOS开发中的MachO文件

iOS开发中的MachO文件

白癜风诊疗目标 http://pf.39.net/bdfyy/bdfyw/150311/4588772.html

一、APP从开发到安装到手机的过程

APP开发的代码及相关资源被编译、链接、签名后是.app格式文件,被zip压缩后是.ipa(zip压缩后改格式为ipa)格式文件,其中的代码成为了可执行文件,文件格式是Mach-O。

通过AppSto、PP助手、iFunBox、Xcode等工具安装到手机上

二、逆向APP

界面分析:Cycript(命令行打出视图层级)、Reveal(图形化界面)代码分析:对Mach-O文件的静态分析MachOView、class-dump、HopperDisassembler、ida等动态调试对运行中的APP进行代码调试debugserver、LLDB代码编写注入代码到APP中必须时还可能需要重新签名、打包ipa

1.Mach-O分析工具class-dump

它的作用就是把Mach-O文件里的class信息给dump出来(把类信息给导出来),生成对应的.h头文件

官方地址下载完后工具包后将class-dump文件复制到Mac的/usr/local/bin目录,这样在终端就能识别class-dump指令了

常用格式:

class-dump-HMach-O文件路径-o头文件存放路径

-H:表示要生成头文件

-o用于指定头文件的存储目录

备注:1.在mac上命令行敲某个指令,系统会去/usr/bin(常用的cd指令就在这个目录,从mac11开始这个目录只能读,不能写)目录和/usr/local/bin(可以增加和删除)目录下。

.如果命令不在这两个指令下,需要进入到指令所在的文件夹,./指令名,./表明从当前文件开夹

.代码的编译过程

源代码-汇编代码-机器语言(Mach-O),通过编译,实现转化。

在同一种架构平台下,每一条汇编指令都有与之对应的唯一的机器指令。机器指令可以反编译成汇编指令

.反编译汇编代码-HopperDisassmbler

HopperDisassmbler能够将Mach-O文件的机器语言代码反编译成汇编代码、OC伪代码或者Swift伪代码

常用快捷键Shift+Option+X:找出哪里引用了这个方法找到相应的方法,右键菜单选择“Refencestoselectorloadview”,和快捷键作用相同

.Cycript

Cycript是Objective-C++、ES6(JavaScript)、Java等语法的混合物。可以用来探索、修改、调试正在运行的Mac/iOSAPP。

通过Cydia安装Cycript,即可在iPhone上调试运行的APP。

三、动态库共享缓存(dyldshadcache)

从iOS.1开始,为了提高性能,绝大部分的系统动态库文件都打包存放到了一个缓存文件中(dyldshadcache),公用部分头信息,尽可能的压缩占用的内存空间。缓存路径:/System/Library/Caches/


转载请注明:http://www.aierlanlan.com/rzdk/2934.html