美文网首页iOS收藏逆向
iOS逆向工程准备工作

iOS逆向工程准备工作

作者: Tidus | 来源:发表于2016-12-30 19:00 被阅读1615次

    前言

    工欲善其事,必先利其器。在开始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/

    最后

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

    相关文章

      网友评论

      • 菜先生:“Reveal”已损坏
        菜先生:@Tidus sudo spctl --master-disable 终端输入这句可以了
        Tidus:MacOS的安全性限制?看看你的系统设置

      本文标题:iOS逆向工程准备工作

      本文链接:https://www.haomeiwen.com/subject/fpjyvttx.html