如果你想成为一名合格的iOS逆向开发工程师, 又没有一套自己的工具集, 又想做逆向开发, 唯一的办法:美美的做个梦, ~~ 哈哈 ~~ 开个小玩笑, 为了实战方便? 自己必须要提前准备逆向开发工具, 才能进行实战开发. 接下来我们会一一介绍工具的安装和使用.
- pp助手
- go2shell
- iTerm2
- Alfred+32
- XtraFinder
- iFunBox
- IDA Pro
- app-signer
- MachOView
- Cycript
- theos
- MonkeyDev
12款工具,想想不到的酸爽.接下来一一介绍哦
具备了这些工具,你就可以看一下App中的内部结构,App一下子变得很透明. 所以对App的安全防护是非常重要的.
- 1.官网是可以下载到的(如果你不想下载,我会把软件上传到github中),下载后,进行安装就OK了.
- 2.安装pp助手的目的: 是为了我们方便下载已经砸壳的app.在这里不详细介绍,以后实战阶段,会进行讲解.
- 3.使用(怎么样下载越狱ipa包)
- 这些ipa包是已经越狱的ipa包,不需要砸壳.
- 我们会在MonkeyDev项目开发中用到(先做了解).
- 也可以结合终端程序进行安装调试(先做了解).
-
1.打开软件,把Go2Shell拖入Applications中
-
4.这样你就可以在不同目录下执行命令行,不用再cd某个目录下.
我们直接就可以进入所在目录下,不需要用cd命令,懒人命令行必备神器. 以上(pp下载)目录为例, 我们点击2中go2shell快捷工具, 直接打开终端, 直接跳转到3.我们ls命令以后就可以查看pp下载目录下的内容了. 是不是很方便? 意不意外? 惊不惊喜?
下载地址:https://www.iterm2.com/downloads.html
-
1.下载好,直接拖到应用文件夹就可以使用了.
-
2.iTerm2 是 OS X 下一款开源免费的的终端工具,很多人基本用它替代了原生的 Terminal。
如图,个人配置的主题页面, 如果你也想配置, 不妨到这个链接进行配置: http://www.cnblogs.com/xishuai/p/mac-iterm2.html 按照步骤一步步配置, 就可以完成你想要的主题. 至于配置就要考验你的动手能力了.
- 重点:(这里讲解如何越狱机用终端连接手机)
重点
无线连接:
- 安装OpenSSH
- 打开你的wifi 设置 (图2)
- 找到你的ip地址
- (图3)--第6步: ssh [email protected]
- 打开终端连接,默认密码是alpine(第9步)
- 我们愉快的打开终端连接一下,哈哈~~
- (我配置了公钥,所以我只要输入连接命令ssh [email protected],直接就连接了.如果你没有配置的话,是需要输入默认密码的)
重点
有线连接:
我们要用到的工具是一个python脚本工具和2个shell脚本:
重点
免密登录:
- 1.把Alfred 3 拖入到应用程序
- 2.打开图中的Alfred 3 KG,点击Patch弹出对话框,找到Alfred 3.app,打开
- 3.点击save,提示License information saved successfully
- 4.完成,你就可以开心的使用了
- 5.command + 空格可以启动Alfred 3
- 6.使用
下载地址: http://www.trankynam.com/xtrafinder/ (让你的 Mac 资源管理器变得更加强大)
- 根据个人需求,配置选项.
1.介绍
- iFunBox是一款小巧的iPhone文件管理软件
- 界面类似于Windows资源管理器,以简练时尚的窗口方式浏览和管理iPhone、iPad、iPod touch上的文件和目录。
- 既可以在手机与电脑之间同步传递数据,使你轻松上传电影、音乐、电子书、桌面、照片以及应用程序。
- 还能够把你的iPhone变成一个U盘,大量信息随身携带,但也需要iTunes支持。
2.iFunBox是一款老牌iOS文件管理工具,可以非常方便地操作iOS中的文件.
- 这个是我的越狱机:iphone 5s ,iOS7.1.1 (
建议大家准备iOS 8.3.3的越狱机
) - 红色箭头下可以查看到iphone系统文件.
注意
: 越狱iOS必须安装“Apple File Conduit 2” ,这样iFunBox才能浏览iOS全系统文件.
-
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。
-
是目前最棒的一个静态反编译软件,为众多[0day]世界的成员和[ShellCode]安全分析人士不可缺少的利器!
-
IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉[Windows]或[Linux] [WinCE] [MacOS]平台主机来分析程序, 被公认为最好的逆向工程利器。
-
只需要next进行安装,然后启动,就可以分析自己的汇编程序了.
-
使用:
-
5.分析汇编代码
; int __cdecl main(int argc, const char **argv, const char **envp)
public _main
_main proc near
var_1C= dword ptr -1Ch
var_18= dword ptr -18h
var_14= dword ptr -14h
var_10= qword ptr -10h
var_4= dword ptr -4
push rbp
mov rbp, rsp
sub rsp, 20h
lea rax, cfstr_D ; "%d"
mov [rbp+var_4], edi
mov [rbp+var_10], rsi
mov [rbp+var_14], 1
mov [rbp+var_18], 2
mov edi, [rbp+var_14]
add edi, [rbp+var_18]
mov [rbp+var_1C], edi
mov esi, [rbp+var_1C]
mov rdi, rax
mov al, 0
call _NSLog
xor eax, eax
add rsp, 20h
pop rbp
retn
_main endp
####8.ios-app-signer-master--ipa文件重签名 下载地址:http://dantheman827.github.io/ios-app-signer/
1.介绍
- 一般我们上线的app,都需要打包生成IPA文件.
- (也可以在App Store下载,App Store下载的IPA呢,如果想重签名,必须要进行砸壳,这个实战会讲解砸壳,在这里作为了解)
- 从图中,我们可以导入IPA,选择好你的配置文件,然后start就可以了.
- 然后会生成一个新的IPA文件,这个就是重签名成功了.
- 有了IPA呢,我们就可以结合终端把app安装上去.(这里也是先了解,实战会讲到)
2.使用
以上我们用QQ音乐.iPA为例
- 1.选择下载好的QQ音乐.iPA进行信息配置
- 2.点击start,选择目录保存
- 3.保存到制定目录进行查看
以上三步,我们完成了iPA文件的重签名. 第一种方法,我们可以使用MonkeyDev安装项目试试.(MonkeyDev使用介绍在第12个工具处) 第二种方法,我们可以使用终端进行安装.(以后都有讲解,这里不再过多介绍) ####9.MachOView MachOView下载地址:http://sourceforge.net/projects/machoview/
MachOView源码地址:https://github.com/gdbinit/MachOView
-
Mach-O格式全称为Mach Object文件格式的缩写,是mac上可执行文件的格式.
-
mach-o文件类型分为: 1、Executable:应用的主要二进制 2、Dylib Library:动态链接库(又称DSO或DLL) 3、Static Library:静态链接库 4、Bundle:不能被链接的Dylib,只能在运行时使用dlopen( )加载,可当做macOS的插件 5、Relocatable Object File :可重定向文件类型
如图,Mach64 Header(64位架构),选中mach header 可以看到每个类的cpu架构信息、load commands数量 、load commandssize 、file type等信息
- 64位和32位架构有哪些不同?
32位架构:
struct mach_header {
uint32_t magic; /* mach magic number identifier */
cpu_type_t cputype; /* cpu specifier */
cpu_subtype_t cpusubtype; /* machine specifier */
uint32_t filetype; /* type of file */
uint32_t ncmds; /* number of load commands */
uint32_t sizeofcmds; /* the size of all the load commands */
uint32_t flags; /* flags */
};
64位架构:
struct mach_header_64 {
uint32_t magic; /* mach magic number identifier */
cpu_type_t cputype; /* cpu specifier */
cpu_subtype_t cpusubtype; /* machine specifier */
uint32_t filetype; /* type of file */
uint32_t ncmds; /* number of load commands */
uint32_t sizeofcmds; /* the size of all the load commands */
uint32_t flags; /* flags */
uint32_t reserved; /* reserved */
};
- 32位和64位架构的头文件区别是64位多了一个保留字段(reserved)
- magic:魔数,用于快速确认该文件用于64位还是32位
- cputype:CPU类型,比如 arm
- cpusubtype:对应的具体类型,比如arm64、armv7
- filetype:文件类型,比如可执行文件、库文件、Dsym文件
####10.Cycript 地址:http://www.cycript.org
Cycript是由saurik推出的一款脚本语言,可以看作是Objective-JavaScript.
这里就把mac系统Cy环境配置好了.
- 我们接下来安装iOS--Cycript
- 我们远程连接iOS终端
以百度外卖为例
####11.theos github地址:https://github.com/theos/theos
- 安装最新的theos
sudo git clone --recursive https://github.com/theos/theos.git /opt/theos
- 安装ldid(如安装theos过程安装了ldid,跳过)
brew install ldid
可以在终端中敲出nic.pl, 是在你环境变量配置好的情况下, 可以出现上面这个界面. 然后你就可以创建tweak项目工程了. (这里不过多介绍,项目实战会介绍的)
####12.MonkeyDev (注意:monkeyDev环境配置前,需要报theos环境配置好)
- 1.你可以通过以下命令选择指定的Xcode进行安装:
sudo xcode-select -s /Applications/Xcode.app
- 2.默认安装的Xcode为:
xcode-select -p
- 3.执行安装命令
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"
- 4.卸载
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-uninstall)"
- 5.更新
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-update)"
安装/更新之后重启下Xcode再新建项目。
工具安装和配置比较考验大家的动手能力, 配置好后, 它就是你最好的朋友. 这12款软件, 对于逆向开发必不可少, 就像一把锐利的工具, 打开了app的另一个世界. 还有很多帮助性的工具需要介绍, 今天就先介绍到这里, 文章会继续更新, 更多的软件使用也会写入文章, 请持续关注我的博客, 简书地址:https://www.jianshu.com/p/beea9f2b9f7d