壳
当我们将应用上传App Store后,Apple经过审核发布的时候会将我们的可执行文件进行加壳。
加壳就是利用特殊的算法,对可执行文件的编码进行改变,例如压缩,加密等,已达到保护程序代码的目的。
脱壳就是将未加密的可执行文件还原出来。
检测可执行文件是否加壳
通常来说只要是从App Store中下载的程序都是加过壳的。而从越狱商店下载的都是未加壳的。
可以使用otool工具进行检测,可执行文件的crypt id的值 如果是0就是未加壳。
加壳的 未加壳除此之外可以使用MachOView查看Mach-O文件
MachOView另外Clutch脱壳工具的Clutch -i
命令可以列出加过壳的应用。
脱壳工具
Clutch
Clutch将其放到iPhone的/usr/bin目录下保证可以随时使用Clutch命令。
当执行Clutch的时候发现权限不够可以使用chmod +x
命令添加权限。
Clutch -i
命令可以列出加壳的应用。
然后使用Clutch -d
加需要脱壳的序号比如今日头条:Clutch -d 4
就可以执行脱壳操作了。脱壳结束之后会提示在某个路径下生成.ipa包。
然后就可以通过ipa包获得脱壳了的Mach-O文件了。
dumpdecrypted
dumpdecrypted在下载的源码目录下(makefile存在的目录)执行make命令编译获得dylib动态库。并将其放在iPhone的var/root目录下。
进入dylib所在的目录使用DYLD_INSERT_LIBRARIES环境变量将动态库注入需要脱壳的可执行文件中。
微信脱壳执行结束会在当前目录生成一个.decrypted的脱壳之后的Macj-O文件。
.decrypted文件获取头文件
可以使用class-dump的class-dump -H xx -o xx
获取脱壳之后的Mach-O可执行文件的头文件。
头文件
头文件笔记来自 www.520it.com 小码哥iOS逆向
网友评论