美文网首页
记一次 iOS 逆向踩的坑(从砸壳到重签安装)

记一次 iOS 逆向踩的坑(从砸壳到重签安装)

作者: Real_young | 来源:发表于2018-07-07 10:24 被阅读172次

    前言

    最近 iOS 逆向莫名火了起来,从逆向课程到最近阿里的大神出了一本《iOS应用逆向与安全》,看到圈子一直在刷着,按捺不住躁动的心想学习,恰逢这几天有机会拿到越狱设备机器,于是开始一次 iOS 逆向之旅。

    准备

    越狱设备一台(最好是9.0 - 9.1系统,支持完美越狱,9.2-9.3.3也是可以重启再越狱的)
    MonkeyDev (用于重签安装 ipa)
    Cycript (用于hook正在运行的进程,能够在运行时修改应用的很多东西)
    Clutch (用于砸壳,当然还有其他工具)

    开始砸壳

    先确定你的设备跟电脑处于同一网段且打开 openssh ,用 ssh 命令登录到设备

    ssh root@192.168.2.3
    
    ssh 到设备.png

    密码一般是 alpine

    将下载好的 Clutch 传输到设备的 /usr/bin 下, 在 Mac 中执行

    scp Clutch-2.0.4 root@192.168.2.3:/usr/bin
    

    传输完成后到目录下修改文件名把带 "-2.xxx" 后面的去掉,在设备中执行

    cd /usr/bin
    mv Clutch-2.0.4 Clutch
    

    据说 Clutch 此工具使用比较简单,但有时候好像有些问题,我所用的设备用这个没砸出来,后来托了哥们的手机砸出来了,还有另外的dumpdecrypted工具,使用方法自行 Google ,dumpdecrypted 需要 hook 到进程,由于种种原因,打不开我要砸壳的 App ,至今未解,可能是设备问题?另外 Clutch 砸出来的是 ipa 后缀,dumpdecrypted 砸出来 是 decrypted 后缀,可以多尝试,下面说 Clutch 的用法,刚才我们已经把 Clutch 放入手机设备中,接着执行

    Clutch -i
    

    可列出设备中的 App 信息:

    App 信息.png

    下一步选择你想砸的 App ,可用序号也可用 Bundle ID 如:

    Clutch -d 4    此命令等价于  Clutch -d com.tencent.xin
    

    接着神奇的事情即将发生


    执行砸壳命令.png

    到此砸壳成功,并且会告诉你 ipa 的目录,到目录下将 ipa 包 scp 到 Mac 上即可,也可以采用 itools pro 等工具将 ipa 包导出。
    当然也可能出现砸壳失败的情况: (原因未知,可能是设备打不开 App 的问题)

    砸壳失败.png

    很多人都是第三方软件导出出现问题,这里最简单的方法就是用 scp 命令传输,先 cd 到上边给出的目录,然后 mv 改一下这个这么长的命名,不然的话转义字符好像也会有点问题,这里 mv com.xxxxx.ipa wechat.ipa

    mv ipa

    scp 从远程传到本地桌面命令 scp root@地址:包的全路径 ~/Desktop

    scp 远程到本地

    至此导包成功,顺便讲下我们用 scp 和 ssh 都是可以不用接USB到电脑的,只要保持手机设备和 Mac 在统一网段就可以了,第三方软件需要 USB 接上Mac 导包,scp 和 ssh 走的都是22号端口,ftp是21号端口,telnet是23号端口,所以22合并了两者可以登录和做文件传输,有兴趣的朋友可以自行 Google ssh22号端口的由来。



    拿到 ipa 包之后借助某阿里某大神的工具 MonkeyDev 可以进行重签,工具的安装使用方法就直接看 wiki 吧,默认集成了 RevealCycript 、class-dump ,利用自己的开发者账号重新编译至真机即可调试。

    class-dump 导出头文件

    简单导头文件可直接用命令,先解压 ipa 包,mkdir 创建一个文件夹,执行:
    class-dump -H 你的app(注意是.app后缀) -o 文件夹
    即可导出头文件,当然用MonkeyDev编译导出的亦可

    Cycript报错

    Cycript 走的是 6666 号端口,到 Cycript 文件夹下 ./cycript -r 设备地址:6666
    连接的时候可能会出现以下问题:

    ruby 库缺失
    dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
    Referenced from: /Users/Jveryl/Desktop/Crash/cycript_0/Cycript.lib/cycript-apl
    Reason: image not found
    

    原因是缺失 ruby 的库,看了别的方法是关闭 SIP 之类的,后面找到比较简单的解决方法如下:
    1.先安装brew
    2.用brew安装ruby@2.0 brew install ruby@2.0
    3.安装成功后把/usr/local/Cellar/ruby@2.0/2.0.0-p648_2/lib/libruby.2.0.0.dylib拷贝到Cycript.lib目录下再次执行即可

    Reveal 报升级

    MonkeyDev 的 RevealServer.framework 版本好像比官方的低了,如果报错说需要升级的话,到官网下载新版找到新的 RevealServer.framework 替换掉Mac系统中路径 /opt/MonkeyDev 下的 framework 即可。

    Reveal 报升级

    Xcode重签名安装到设备的时候安装失败

    安装失败
    解决办法: 直接 cmd+shift+k clean一下重新编译

    后记

    总算也是有机会接触 iOS 逆向了,踩了不少坑,完全是站在巨人的肩膀上编程,据说今天 iOS 11.3.1 越狱 也开放了,大家可以试试,感谢开源,感谢巨人们的贡献,此次的砸壳重签安装到此就结束啦,有任何问题疑虑的朋友欢迎留言讨论指正。

    相关文章

      网友评论

          本文标题:记一次 iOS 逆向踩的坑(从砸壳到重签安装)

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