iOS逆向工程准备工作

前言

工欲善其事,必先利其器。在开始iOS逆向工程前,我们需要准备一些工具让我们事半功倍。

1、iOS篇(cydia)

1.1 OpenSSH

一个允许其他终端远程访问当前设备的插件,在cydia下载即可。


iOS逆向工程准备工作_第1张图片
OpenSSH

在Mac终端中输入下面命令即可登陆越狱设备(默认密码为alpine,记得使用passwd命令修改):

$ ssh [email protected]
[email protected]'s password: 
Tidus-iPhone:~ root# 

1.2 Apple File Conduit 2

一个确保越狱插件正常运行的补丁,在cydia下载即可。


iOS逆向工程准备工作_第2张图片
AFC2

1.3 Cycript

Cycript是一款由saurik推出的脚本语言,在逆向工程中可以帮助我们测试App。可直接在越狱设备中用Cydia安装。


iOS逆向工程准备工作_第3张图片
Cydia中安装Cycript

安装后在终端中SSH到我们的设备,输入cycript如果命令行显示cy#则说明安装成功,按control+d退出cycript。

iOS逆向工程准备工作_第4张图片
cycript安装成功

1.4 RevealLoader

RevealLoader帮助我们通过Reveal来偷窥别人的应用。

iOS逆向工程准备工作_第5张图片
RevealLoader

安装后用iFunBox检查 /Library路径下是否有 RHRevealLoader目录,如果没有自己新建一个,然后将Reveal中的iOS动态库复制到此目录下。

# Tidus-iPhone:~ root# ls /Library/RHRevealLoader
libReveal.dylib

亲测使用Reveal2-1.6.3可以在越狱设备上通过RevealLoader进行偷窥。

2、Mac篇

2.1 usbmuxd

由于OpenSSH默认在无线局域网中访问目标设备,无线网络有时候连接不稳定,影响工作效率。usbmuxd是一个可以帮助我们在USB连接下使用OpenSSH的工具。
在https://cgit.sukimashita.com/usbmuxd.git/这里下载usbmuxd1.0.8(1.0.9与1.1.0不支持Mac),解压后将目录中python-client中的两个文件放到自己喜欢的目录中(只需要这两个文件即可,这里的目录是~/Application/iOS-RE/usbmuxd/),并对其执行权限:

$ sudo chmod +x ~/Application/iOS-RE/usbmuxd/tcprelay.py
$ sudo chmod +x ~/Application/iOS-RE/usbmuxd/usbmux.py

可以考虑将usbmuxd的路径加入.bash_profile中:

export USBMUXD=~/Application/iOS-RE/usbmuxd
export PATH=$PATH:$USBMUXD

最后执行下面的命令,表示将本地端口2222转发到远程端口22(远程OpenSSH监听的端口):

$ tcprelay.py -t 22:2222
Forwarding local port 2222 to remote port 22
$ ssh root@localhost -p 2222

即可使用usb访问越狱设备。

2.2 class-dump

class-dump是一个利用Object-C runtime特性,将存储在Mach-O可执行文件中的Class信息读取出来的命令行工具。
http://stevenygard.com/projects/class-dump/
最新的版本从上面的官网下载,下载后将里面的class-dump可执行文件复制到/usr/local/bin中改下权限即可在命令行中使用。

$ cp /Volumes/class-dump-3.5/class-dump /usr/local/bin
$ sudo chmod 777 /usr/local/bin/class-dump 
$ class-dump 
iOS逆向工程准备工作_第6张图片
准备class-dump

2.3 dumpdecrypted

dump decrypted是一个砸壳工具,用于解密被加密过的App可执行文件。
https://github.com/stefanesser/dumpdecrypted
需要自己从github上下载源码后编译才能使用,进入dumpdecrypted的所在目录,输入make命令即刻生成对应的.dylib文件,生成的.dylib文件可重复使用,向下兼容低的iOS版本。
如果执行make后报错,尝试将Xcode的名字改回Xcode.app

iOS逆向工程准备工作_第7张图片
编译dumpdecrypted成功

2.4 Theos

Theos是一个越狱开发工具包,用于将自己开发的插件发布到Cydia上,也可以用于hook目标进程。

1.使用homebrew帮我们安装dpkg和ldid。
dpkg帮助Theos正确打包程序为deb-pkg格式,ldid则是用于签名可执行文件。

brew install dpkg ldid

2.将Theos github clone下来,目录的位置可以放在自己喜欢的位置,我选择了放在~/Application/iOS-RE/Theos中。
然后添加Theos的路径到环境变量中,在.bash_profile中输入:

export THEOS=~/Application/iOS-RE/Theos
export PATH=$PATH:$THEOS/bin

关闭终端并重新启动就可以看到Theos的路径被添加到环境变量中去了:

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/Users/Tidus/Application/iOS-RE/Theos/bin

同时在任意目录下使用命令nic.pl检查是否设置成功:


iOS逆向工程准备工作_第8张图片
设置成功

具体安装方法可以参考:
http://bbs.iosre.com/t/theos/4928

2.5 LLDB & debug server

LLDB & debug server可以帮助我们调试应用。debug server在我们的设备连接Xcode调试时已经被安装在设备的/Developer/usr/bin中,但由于权限问题只能调试我们自己的App,还需要做一下配置。

2.5.1 debug server

1从设备中拷贝debugserver到本地

$ scp [email protected]:/Developer/usr/bin/debugserver ~/Application/iOS-RE/LLDB\&debugserver

2.从下面的表格选择我们的设备类型瘦身debugserver

iOS逆向工程准备工作_第9张图片
针对自己要调试的设备瘦身debugserver

使用下面的命令可以帮debugserver瘦身:

$ lipo -thin arm64 ./debugserver -output ./debugserver-arm64
iOS逆向工程准备工作_第10张图片
瘦身成功

3.配置task_for_id权限
下载http://iosre.com/ent.xml到debugserver所在目录,然后执行(确保你之前已经安装了ldid):

$ ldid -Sent.xml debugserver-arm64

4.将处理过的debugserver放回设备上,并配置x权限

$ scp debugserver-arm64 [email protected]:/usr/bin/debugserver
$ ssh [email protected]
$ chmod +x /usr/bin/debug-server

放到/usr/bin下即可,调用debugserver默认就是调用被修改过的,到此debugserver的配置完成了。

2.5.2 LLDB

在设备上执行

$ debugserver *:1234 -a "WeChat"

表示依附在微信上监听来自任意ip:1234的lldb请求,在Mac上使用tcprelay.py -t 1234:1234转发接口,并使用命令

$ lldb
(lldb) process connect connect://localhost:1234
Process 2036 stopped
* thread #1: tid = 0x1a233, 0x0000000181b44fd8 libsystem_kernel.dylib`mach_msg_trap + 8, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x0000000181b44fd8 libsystem_kernel.dylib`mach_msg_trap + 8
libsystem_kernel.dylib`mach_msg_trap:
->  0x181b44fd8 <+8>: ret    

libsystem_kernel.dylib`mach_msg_overwrite_trap:
    0x181b44fdc <+0>: movn   x16, #0x1f
    0x181b44fe0 <+4>: svc    #0x80
    0x181b44fe4 <+8>: ret
(lldb) 

连接到设备上的debugserver,出现上面结果就是连接成功了。

2.6 IDA & Hopper

IDA和Hopper都是帮我们对已经砸壳的可执行文件进行反编译的工具。这两款应用都是收费的,都有Demo版,下载后可直接打开,把破解后的二进制文件拖到应用中即可开始反编译。
下载地址可以自己在网上找一下,或者到爱盘 -- 在线破解工具包看看。
IDA:http://down.52pojie.cn/Tools/Disassemblers/IDA%20Pro%20Standard%20v6.1%20(MacOS)%20(Fraunhofer-Institut)%20(c)%20Hex-Rays.zip
Hopper:

2.7 Reveal

大名鼎鼎的偷窥工具,无需多说。亲测使用Reveal2-1.6.3版本可以配合RevealLoader工作。
破解版下载

iOS逆向工程准备工作_第11张图片
Reveal

2.8 MonoDevelop

MonoDevelop 是个适用于Linux、Mac OS X和Microsoft Windows的开源开发环境,主要用来开发Mono与.NET Framework。可以帮助我们对Unity3d安卓游戏中的Assembly-CSCarp.dll 进行反编译。
IDE:
http://www.monodevelop.com/download/
Mono framework:
http://www.mono-project.com/download/

最后

如果后续涉及到新的工具,将会继续更新原文。

你可能感兴趣的:(iOS逆向工程准备工作)