一、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/