前言
在逆向工程中,将会使用到许多效率工具和分析工具。这篇文章记录逆向需要的相关工具,大致分为 移动设备工具
和 mac电脑工具
这两大类。
工具箱
在 iOS 逆向分析流程中,需要使用:
解密工具
、class-dump
、Cycript
、Reveal
、Charles
、Hopper
、IDA
、LLDB
、Xcode
、Theos
等工具。
iPhone工具
这一类工具包括在 iPhone
越狱设备里安装的插件和APP,所以这就涉及到 iOS
的系统版本,本人使用的是 iOS 10
的设备。
- Cydia:越狱后的应用商店
- Cydia Substrate:工具提供给越狱设备注入和
hook
指定的C和OC方法 - MTerminal:
iOS
终端APP,通过Cydia 商店
里搜索安装 - adv-cmds:
iOS
终端APP的进程相关指令扩展集,通过Cydia 商店
里搜索安装 - shell-cmds:
iOS
终端APP的Shell指令扩展集,通过Cydia 商店
里搜索安装 - system-cmds:
iOS
终端APP的指令扩展集,通过Cydia 商店
里搜索安装 - Apple File Conduit 2:安装后才可以访问系统文件,通过
Cydia 商店
里搜索安装 - AppAync:避免系统验证APP签名,通过
Cydia 商店
里搜索安装 - Filza:文件管理器,可代替
iFile
,主要用于方便查看系统文件,通过Cydia 商店
里搜索安装 - rsync:远程拷贝文件指令,
iOS 10
用于替代scp
指令,通过Cydia 商店
里搜索安装
macOS效率工具
这一类工具主要用于提高使用效率,在逆向工程中也扮演着重要的角色。
- iTools:方便查看
iOS
端的系统文件,可在官网下载安装 - iTerm2:方便快捷的终端,用于代替 Terminal
- Homebrew:包管理工具,安装其他
macOS
端的插件,通过/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装 - libimobiledevice:提供了
macOS
和iOS
的交互工具,通过brew install libimobiledevice
安装 - tree 查看当前目录结构树的命令行工具,通过
brew install tree
安装 - MonkeyDev:基于
iOSOpenDev
为基础研发的非越狱插件开发集成神器
macOS逆向分析工具
大部分逆向分析工具都是命令行工具,只有一小部分是有图形化界面。
- dumpdecrypted:这是一个解密执行文件工具,原理是动态注入后,dump 内存中解密后的代码部分
- Clutch:这是一个解密执行文件工具,原理是通过调用
posix_spawnp
生成一个进程,然后暂停进程后,并且dump 内存中解密后的代码部分 - class-dump:是一个在执行文件中获取类、方法和属性信息的工具。
- Reveal:这是一个用于查看程序界面结构和调试界面的工具。
- Hopper:支持
MacOS
和Linux
的反汇编工具。 - IDA:支持
Windows
、MacOS
和Linux
的反汇编工具。 - Theos:注入、拦截函数工具
- insert_dylib:是一个命令行指令,可对执行文件dyld进行汇编注入、修改静态文件
- optool:是一个命令行指令,可对执行文件dyld进行汇编注入、修改静态文件
- JTool:查看文件结构和代码签名
- Capstone:支持多平台和多架构的反汇编框架
- Keystone:将汇编转化为
Hex
机器码的汇编框架 - Radare2:开放源代码的逆向工程平台
- Mobiledevice:用于安装APP或ipa包的工具
逆向编程源代码框架
利用这些源代码框架可以注入到目标APP中,以便调试修改。
- Reveal:这是一个用于查看程序界面结构和调试界面的工具,需要注入对应的框架使用。
- Cycript:允许开发人员使用
Objective-C++
和JavaScript
语法的混合使用,查看以及修改运行时APP的内存信息工具 - Fishhook:
FaceBook
开源框架,用于注入和修改C函数,非越狱设备也可使用。 - Method Swizzle:利用
Runtime
机制去hook
掉Objective-C
的方法
总结
目前,越狱的大环境并不是很好。而且前几天,Cydia 商店
已经宣布关闭。iOS
设备能提供完美越狱的还停留在 iOS 9
,能越狱的版本越来越少。