1 什么是 iOS 逆向工程
2 iOS 逆向的目的
3 iOS 逆向过程以及方法
一 什么是 iOS 逆向工程
iOS 逆向工程指的是在软件层面上进行逆向分析的过程, 用大白话来讲就是推导应用的代码实现和逻辑. 就是给你一个 IPA 包, 你能推导出他的代码实现, 和逻辑实现, 因为我们拿不到别人的源代码, 但是我们又想知道它是怎么编码实现的, 所以才有了逆向这么个玩意, iOS 逆向过程简单的图示:
逆向过程
就等于拿到手机上的应用程序, 分析它的可执行文件, 通过工具转成汇编, 以至于转换成更高级的语言 object c /swift 等的一个过程
二 iOS 逆向的目的
1 学习优秀 App 的设计
当你看到一个 App 有一些非常好用的功能, 你想学习或者你也需要实现相同的功能, 这样你就可以逆向它的实现, 去分析它的实现过程
2 更好的去加强自己开发 App 的安全
当你熟悉了 iOS 逆向工程, 今后在开发自己 App 的时候, 哪些地方更容易别被人攻破, 从而有效的去避免
3 学习 iOS 系统未开源库的一些实现.
比如我们常用的 UIKit 的实现等等
4 视野更远了, iOS 开发就会不在局限于画界面, 数据, 网络这些操作了
iOS 逆向你能够了解到整个 iOS 系统的大致底层, 内核, 程序加载过程呀, App 编译过程呀, 等等
5 可以改变现有 App 的一些功能
去爱奇艺 App 的广告, 微信抢红包等等.(当然这个学习可以, 不可以作为商业利益, 违法的)
三 iOS 逆向过程以及方法
不废话, 先看图:
逆向过程及方法
逆向 App 思路
1 界面分析 (Cycript ,Reveal)
2 代码分析
对 Mach-o 文件的静态分析
MachOView ,class-dump, Hopper Disassembler,ida 等
3 动态调试
对运行中的 App 进行代码调试
debugserver, LLDB
4 代码编写
注入代码到 App 中
必要时还可能需要重新签名, 打包 ipa
从上到下整个一个流程, 每个步骤都有相应的开发工具, 循序渐进, 把每一步都学好了, 整个逆向你也就熟悉的差不多了.
来源: http://www.jianshu.com/p/209bd8a771c3