一、使用 Cycript 动态修改 iPhone 真机运行中的 App
下载封装好语法的 cy 文件 下载地址 MJCript
将下载好的
MJCript复制到 iPhone 的usr/lib/cycript0.9目录下.启动需要动态修改的 App
命令行
cycript -p ting进入喜马拉雅 App 的cycript模式@import mjcript导入我们的 cy 库将
立即登录动态修改为demo

二、使用 Reveal 查看其他优秀 APP 的页面结构

我们有时候需要参考一些优秀 App 的设计理念,这时候我们就可以用
reveal来查看了。
安装 reveal (mac 软件)免费版下载地址 密码:obyu
在手机上通过
Cydia安装Reveal2loader在手机设置页面开启 Reveal 对 App 的访问权限

将 Mac 电脑中,此路径
/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework下的RevealServer复制到电脑桌面并重命名为reveal2Loader.dylib将
reveal2Loader.dylib复制到 iPhone 的/Library/MobileSubstrate/DynamicLibraries(里面有一个同名文件,覆盖它)-
重启手机,或者输入
killall SpringBoard,然后打开 App,即可在电脑中看到iPhone 打开的 App,可以点击查看了。
mac 上的 reveal
三、逆向 APP 的思路
- 页面分析
- Cycript
- Reveal
- 代码分析
- 对 Mach-O 文件的静态分析
- MachOView
- class-dump
- Hopper Disassembler
- ida
- 动态调试
- 对运行中的 APP 进行代码调试
- dbugserver
- LLDB
- 代码编写
- 注入代码到 APP 中
- 必要时还可能需要重新签名、打包 ipa
四、 class-dump
顾名思义,它的作用就是把 Mach-O 文件的 class 信息给 dump 出来(把类信息给导出来),生成对应的 .h 头文件
- 官方下载地址 http://stevenygard.com/projects/class-dump/
- 下载完工具包后,将
class-dump可执行文件复制到/usr/local/bin目录,这样在终端就能识别 class-dump 命令了。 - 常用格式
class-dump -H Mach-O文件路径 -o 头文件存放目录 - 这样只能 dump 出未加密和越狱的 Mach-O 文件,现在基本还要进行砸壳处理。
五、 Mac 终端命令识别小知识补充
- 首先 Mac 会去
/usr/bin里面找,里面有比如常用的cd指令。 -
/usr/bin这个目录现在默认是不可写入的。 - 如果Mac 还未找到用户输入的指令,那么它会去 Mac 的
/usr/local/bin目录下寻找 - 如果我们要给系统添加一些可执行命令,就添加到
/usr/local/bin目录下
六、Hopper Disassembler
Hopper Disassembler 能够将 Mach-O 文件的机器语言代码反编译成汇编代码、OC 的伪代码和 Swift 的伪代码。

七、Xcode 项目编译过程
在
同一种架构平台下,每一条汇编指令都有与之对应的唯一的机器指令。
-
代码编程成汇编语言再编译成机器语言 -
机器语言可以反编译成汇编语言可以反编译成OC伪代码(只能是伪代码,不能唯一确定)
