iOS逆向与安全 - 1. dumpdecrypted 砸壳

砸壳开始

App Store上的应用都是加密的。

获取可执行文件

下载了的app(这里以TIM为例) 通过iTools 保存在电脑本地得到TIM.ipa文件 通过解压得到TIM文件夹 进入Payload文件夹 右键点击文件显示包内容 找到可执行文件TIM 之后打开终端查看该可执行文件是否已经被加了密
iOS逆向与安全 - 1. dumpdecrypted 砸壳_第1张图片

命令行

otool -l 可执行文件 | grep cryptid

结果如图:
iOS逆向与安全 - 1. dumpdecrypted 砸壳_第2张图片
cryptid为1 表示加密了 cryptid为0 表示未加密
上图显示该包有两个架构 且都加密了

下载dumpdecrypted砸壳工具

砸壳工具github下载地址
https://github.com/stefanesser/dumpdecrypted

下载后 打开终端 进入该砸壳工具的路径 开始编译文件
终端输入

make

编译后便会得到dumpdecrypted.dylib这个动态库 这个动态库在之后会注入到目标应用程序的沙盒里(后话) dumpdecrypted.dylib会把砸壳文件写到文件里 在App Store里下载的app对沙盒以外的目录是没有写的权限 所以此处把dumpdecrypted.dylib注入到沙盒的Document目录 砸壳后的解密文件就可以写在沙盒里
iOS逆向与安全 - 1. dumpdecrypted 砸壳_第3张图片

连接越狱手机

注意:越狱手机 务必在Cydia中安装OpenSSH

有两种方法可以进行连接通过usb进行端口转发或者通过wifi进行。
①usb方式连接
Mac下载
usbmuxd下载地址
https://cgit.sukimashita.com/usbmuxd.git
选择usbmuxd-1.0.8进行下载 解压后打开终端 进入其中的usbmuxd-1.0.8/python-client 输入以下命令 将22端口映射到2222

python tcprelay.py 22:2222

iOS逆向与安全 - 1. dumpdecrypted 砸壳_第4张图片

打开新的终端窗口,输入 此时输入密码进行连接 默认密码是alpine

ssh root@localhost -p 2222

想要改密码可以输入 passwd进行改密

②wifi方式连接
连接和Mac一致的wifi 打开手机设置 查看ip地址
打开终端 输入

ssh root@192.168.31.53 -p 2222

ip地址记得换成你自己的ip
输入密码 默认alpine 修改密码 请输入passwd

开始砸壳操作

注意:越狱手机 务必在Cydia中安装cycriptadv-cmdspstree

①获取当前所有进程
查看当前手机的所有进程(把你要砸壳的进程记得打开,比如我就运行了TIM)我们要找到我们要砸壳的应用程序, 记住进程id,记住Bundle路径(后续需要使用)

ps -e   

iOS逆向与安全 - 1. dumpdecrypted 砸壳_第5张图片

最左边就是进程id 右边路径是Bundle路径

②cycript进入(钩入)该应用程序
确保手机已经下载了cycript工具 使用命令cycript 进程id

cycript 3792 

③cycript获取沙盒路径
进入后 可以执行相应的OC代码 此处要获取的是沙盒路径

[NSHomeDirectory() stringByAppendingString:@"/Documents"]

可以使用control+d 或者 输入exit(0)命令 退出cycript
iOS逆向与安全 - 1. dumpdecrypted 砸壳_第6张图片

④将砸壳工具拷贝到沙盒路径下
新打开一个终端窗口 把dumpdecrypted.dylib 拷贝进去沙盒路径路径
(usb连接)

scp -p 2222  Mac中dumpdecrypted.dylib的路径  root@localhost:沙盒路径路径  

(wifi连接)

scp  Macdumpdecrypted.dylib的路径  root@越狱机ip地址:沙盒路径路径 

如图:
拷贝砸壳工具

拷贝完成后可以cd到手机的沙盒路径去看看有没有该文件
iOS逆向与安全 - 1. dumpdecrypted 砸壳_第7张图片
图中可以看到该砸壳软件已经在沙盒里了

⑤开始砸壳
在该沙盒路径下 指定一个环境变量,这个环境变量会去加载指定目录下的文件
输入

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可执行文件的路径(即之前获取到的Bundle路径)

运行后 就会开始解密 解密文件会放到同级目录 可以ls查看是否有.decrypted这个解密文件 有的话 则为解密成功
iOS逆向与安全 - 1. dumpdecrypted 砸壳_第8张图片

⑥将解密文件拷贝到Mac上
新开终端 将越狱机内的解密文件拷贝到Mac上
(usb连接)

 scp -p 2222  root@localhost:沙盒中解密文件路径    Mac指定路径    

(wifi连接)

scp   root@越狱机ip地址:沙盒中解密文件路径  Mac指定路径    

⑦验证
查看解密状态 可以看到手机相应的架构被砸壳

otool -l 砸壳文件 | grep cryptid 

iOS逆向与安全 - 1. dumpdecrypted 砸壳_第9张图片

⑧提取被解密架构部分
提取被砸壳的部分 单个架构被提取
(这里假设armv7被砸壳)

lipo app.decrypted -thin armv7 -output armv7_output 

iOS逆向与安全 - 1. dumpdecrypted 砸壳_第10张图片

砸壳结束!感谢!

自己也是从前几天开始着手iOS逆向 有不对的问题请指出 再次感谢!
并附上我的个人博客:
个人博客地址
www.nullgirl.com

有问题可以加QQ讨论: 422453403

你可能感兴趣的:(iOS应用逆向工程)