如果你渴望成为一名精通iOS逆向开发的工程师,但却缺乏自己的工具集,那么在着手实战开发之前,提前准备好逆向开发工具是必不可少的。接下来,我们将逐一介绍这些工具的安装和使用方法。
1.工具盛宴:从pp助手到MonkeyDev,全面解析
- pp助手
- go2shell
- iTerm2
- Alfred+32
- XtraFinder
- iFunBox
- IDA Pro
- app-signer
- MachOView
- Cycript
- theos
- MonkeyDev
12款工具,带来意想不到的惊喜。接下来,逐一细细品味。
绝对没错。拥有这些工具能让你深入了解应用的内部结构,甚至能够修改其行为。但是,正因为如此,加强应用的安全防护变得尤为重要。通过采取适当的安全措施,比如加密、代码混淆、权限控制等,可以有效地防止应用攻击。在逆向开发的过程中,保护用户数据和隐私始终是首要任务。
2.汇编逆向工具安装
1.pp助手
- 1.你可以从官方网站下载软件,下载后,只需简单安装即可。
- 2.安装pp助手的目的是为了方便下载已经砸壳的应用程序。在这里不详细介绍,我们将在后续实战阶段进行详细讲解。
-
3.下载IPA包
- 这些IPA包已经是越狱过的,无需再进行砸壳操作。
- 我们将在MonkeyDev项目开发中使用这些IPA包(先进行了解)。
- 同时,也可以通过终端程序进行安装和调试(也是先进行了解)。
2.go2shell-一款懒人命令行必备神器
1.打开软件,把Go2Shell拖入Applications中
-
2.打开Go2Shell
go2shell启动页面.png -
3.点击install Go2Shell,然后会在Finder中出现,如下图
go2shell安装完成.png 4.这样的工具让命令行操作更加高效和便捷,无需频繁地切换目录,大大提升了工作效率。
-
5.使用
使用.png
使用这些工具可以直接进入所在目录,无需使用cd命令,是懒人命令行的必备神器。
点击go2shell快捷工具后,直接打开终端,并且自动跳转到指定目录。
通过ls命令,我们可以立即查看目录下的内容,非常方便。
这种操作方式确实很方便,让人意外而惊喜!
3. iTerm2
下载地址:https://www.iterm2.com/downloads.html
1.下载好应用后,只需将其拖到应用文件夹即可开始使用。
2.iTerm2是一款基于OS X平台的开源免费终端工具,许多人使用它替代了原生的Terminal,因为它功能更强大、更灵活。
- 重点:(在这里,我们将介绍如何使用终端连接越狱设备。)
重点
无线连接:
安装OpenSSH
1.打开WiFi设置,找到你的IP地址。
2.使用终端执行命令:ssh root@你的IP地址(默认密码是alpine)。
-
3.进行终端连接,愉快地开始使用吧!
我配置了公钥,所以只需输入连接命令ssh root@192.168.3.46,即可直接连接。如果你没有配置公钥,则需要输入默认密码。
重点
有线连接:
我们要用到的工具是一个python脚本工具和2个shell脚本:
-
iPhone的22端口映射到Mac本地的10000端口
- 是否继续连接?
yes
-
连接成功,拿到root权限.(如果第一次连接是需要默认密码)
重点
免密登录:
-
在mac下-找到.ssh下的公钥
-
将客户端/.ssh/id_rsa.pub中的内容自动添加到服务器的/.ssh/authorized_keys文件末尾,并将其上传到手机的~/.ssh目录中。
下次连接手机时,即可实现免密登录。
4. Alfred+32
1.将Alfred 3 拖入应用程序文件夹中。
2.打开图中的Alfred 3 KG,点击Patch,弹出对话框,找到Alfred 3.app并打开。
-
3.点击Save,提示“License information saved successfully”。
4.完成后,你就可以愉快地使用了。
5.使用快捷键 command + 空格 可以启动Alfred 3。
-
6.开始享受Alfred 3带来的便利吧!
以上两个例子只是冰山一角,还有许多功能等待你去探索!
5. XtraFinder
下载地址: http://www.trankynam.com/xtrafinder/
(让你的 Mac 资源管理器变得更加强大)
- 根据个人需求,进行个性化配置。
6.iFunBox
1.介绍
- iFunBox是一款小巧的iPhone文件管理软件
- 界面类似于Windows资源管理器,以简练时尚的窗口方式浏览和管理iPhone、iPad、iPod touch上的文件和目录。
- 既可以在手机与电脑之间同步传递数据,使你轻松上传电影、音乐、电子书、桌面、照片以及应用程序。
- 还能够把你的iPhone变成一个U盘,大量信息随身携带,但也需要iTunes支持。
2.iFunBox是一款老牌iOS文件管理工具,可以非常方便地操作iOS中的文件.
- 这是我的越狱设备:iPhone 5s,运行iOS 7.1.1。 (建议大家准备iOS 8.3.3的越狱设备)
- 在红色箭头下,可以查看到iPhone的系统文件。
-
注意
: 越狱iOS设备必须安装“Apple File Conduit 2”,这样iFunBox才能浏览iOS的全系统文件。
7. IDA Pro--汇编程序员的生命
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。
是目前最棒的一个静态反编译软件,为众多[0day]世界的成员和[ShellCode]安全分析人士不可缺少的利器!
IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉[Windows]或[Linux] [WinCE] [MacOS]平台主机来分析程序, 被公认为最好的逆向工程利器。
只需要next进行安装,然后启动,就可以分析自己的汇编程序了.
使用:
-
1.创建项目
-
2.找到可执行文件
Mach-O
-
3.IDA打开可执行文件
-
4.找到main编译的汇编代码
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
-
6.可以通过伪代码分析,恢复main函数下代码的实现。这样可以了解代码的执行流程和结构。
8.ios-app-signer-master--ipa文件重签名
下载地址:http://dantheman827.github.io/ios-app-signer/
1.介绍
- 一般情况下,我们上线的应用都需要打包生成IPA文件。
- (在这里只作为了解,值得注意的是,如果你想要对从App Store下载的IPA进行重签名,必须进行砸壳操作,这个实战会在后面详细介绍。)
- 从图中可以看到,我们可以导入IPA文件,选择你的配置文件,然后点击Start即可。
- 接着会生成一个新的IPA文件,这就表示重签名成功了。
- 有了IPA文件,我们就可以通过终端将应用安装到设备上。
2.使用
以上以QQ音乐.iPA为例:
- 1.选择下载好的QQ音乐.iPA文件,并进行信息配置。
- 2.点击Start按钮,选择保存目录。
- 3.将重签名后的IPA文件保存到指定目录进行查看。
通过以上三步,我们完成了对iPA文件的重签名操作。
有两种方法可以安装重签名后的应用:
- 1.我们可以使用MonkeyDev安装项目进行尝试。(MonkeyDev的使用介绍在第12个工具处)
- 2.我们可以使用终端进行安装。(具体操作会在后续进行详细讲解)
9.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 :可重定向文件类型-
使用:
在iDA中导出的可执行文件,依然可以用MachOView进行打开.
BEA3DD5D1CA0FB08179B5DF16530C12D.png
如图,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
Cycript是由saurik推出的一款脚本语言,可以看作是Objective-JavaScript.
我们首先下载sdk
-
下载后的SDK文件应该放在/opt目录下,与theos和MonkeyDev同级目录。
-
切换到/opt/cycript目录下,执行cycript命令,即可进入Cycript环境。(在图中,可以进行加法计算、输出等操作)
注意
:进入Cycript环境后,需要连接越狱设备才能进行操作。
-
在进入Cycript环境之前,请确保已配置了环境变量,否则无法进入。
-
配置环境变量
-
只需在任何地方启动终端,即可进入Cycript环境。
在这里,你已经成功配置了Mac系统下的Cycript环境。
- 接下来我们将安装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
-
theos使用
在终端模式下,使用nic.pl可以创建tweak工程文件。
如果希望在任意地方使用nic.pl命令,需要配置环境变量。
- 一旦配置好环境变量,以后使用起来会非常方便。
-
使用:
在你配置好环境变量的情况下,在终端中输入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再新建项目。
-
6.使用
安装成功后,打开Xcode创建项目,你会发现多了MonkeyApp选项。
这样你就可以创建项目了。
3.总结
工具的安装和配置确实考验大家的动手能力,但一旦配置好,它们就是你最好的朋友。
这12款软件对于逆向开发来说是必不可少的,它们就像一把锐利的工具,能够打开应用的另一个世界。
还有许多其他帮助性的工具需要介绍,今天先介绍到这里。文章会持续更新,更多的软件使用方法也会写入文章中,请持续关注。
现在是该睡觉的时间了,希望这篇文章能够帮助到你。