本次实战的根本目的,是为了分析竞品,优化自身产品的用户体验。在我们之前版本中,增加了GIF制作的功能,用户可以拍摄视频、照片或者从相册选择视频、照片等来合成GIF图,并可以给GIF添加贴纸、文字,以及修改GIF速度的功能。最初,我们通过ffmpeg进行GIF的合成,由于中间有一系列的操作,为了保证图片质量,我们不得不做一些耗时的操作,导致合成速度慢,用户体验非常差。与此同时,我们发现了市面上一款类似的app,其合成效率很高,用户体验很好,于是,我们就走上了逆向之路。
软件逆向工程,指的是通过分析一个程序或系统的功能、结构或行为,将它的技术实现或细节推导出来的过程。当我们对一个软件的功能很感兴趣,却又拿不到它的源代码时,往往可以通过逆向工程来对它进行分析。
逆向工程主要有两个作用:
分析目标程序,拿到关键信息,可以归类于安全相关的逆向工程
- 评定软件的安全级别
- 逆向恶意软件
- 检查软件后门
借鉴他人的程序功能来开发自己的软件,可以归类于开发相关的逆向工程
- 逆向系统API
- 借鉴别的软件
最开始,iOS平台的逆向工程都是基于越狱环境的。目前非越狱环境下的软件逆向,也非常成熟了。有很多大神研究过,这方面的资料和文章也比较多。有的大神为了方便还做了一套框架,专门做非越狱逆向,现在用起来十分方便。本文不会话太多篇幅来讲概念的东西,主要以实战为主,那就开始吧。
获取砸壳后的app
从AppStore下载的App都是经过加密的,可执行文件被加上了一层“壳”,所以为了解密,我们就必须进行“砸壳”。
最早的砸壳工具是stefanesser写的dumpdecrypted,通过手动注入然后启动应用程序在内存进行dump解密后的内存实现砸壳,这种砸壳只能砸主App可执行文件。人都想偷懒,所以AloneMonkey大神就做了一条命令砸壳的工具frida-ios-dump。
如果我们单纯的要获取一个砸壳后的app,我们可以是直接从各种xx助手里面下载,注意的是这里下载的是越狱应用(不是正版应用),这些应用都是脱壳的应用。
MonkeyDev
如果已安装过的,可以直接跳过该步骤。
如果您对越狱开发了解的话,那么您应该听说过iOSOpenDev。他可以直接通过Xcode
新建Hook
的工程模板,然后编译生成安装deb
。通过它来进行越狱开发十分方便。但很遗憾,作者在13年就不更新了。Xcode7
及之后的版本,该环境就有很多问题。
MonkeyDev可以认为是iOSOpenDev的升级版。MonKeyDev不仅仅可以进行越狱开发,也可以进行非越狱的Hook
的开发。该非越狱逆向环境自动集成,只需要一个砸壳的应用即可,非常方便。
安装卸载,请查看