iOS逆向工程准备工作

前言

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

1、iOS篇(cydia)

1.1 OpenSSH

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


OpenSSH

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

$ ssh root@192.168.1.104
root@192.168.1.104's password: 
Tidus-iPhone:~ root# 

1.2 Apple File Conduit 2

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


AFC2

1.3 Cycript

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


Cydia中安装Cycript

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

cycript安装成功

1.4 RevealLoader

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

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 
准备class-dump

2.3 dumpdecrypted

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

编译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检查是否设置成功:


设置成功

具体安装方法可以参考:
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 root@192.168.16.71:/Developer/usr/bin/debugserver ~/Application/iOS-RE/LLDB\&debugserver

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

针对自己要调试的设备瘦身debugserver

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

$ lipo -thin arm64 ./debugserver -output ./debugserver-arm64
瘦身成功

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

$ ldid -Sent.xml debugserver-arm64

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

$ scp debugserver-arm64 root@192.168.16.71:/usr/bin/debugserver
$ ssh root@192.168.16.71
$ 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工作。
破解版下载

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/

最后

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容