如何去反编译一个ipa包

1.前言


上传到appStore的ipa苹果会自动加一层防护壳,如果想要反编译从appStore下载的ipa包,必须要先要进行一次脱壳操作。直接使用Xcode打出的企业包可以直接进行反编译。

2.工具


1.有一部已经越狱的手机
2.dumpdecrypted

3.步骤总结


0.连接你已经越狱的手机
1.设备中打开需要砸壳的APP
2.SSH链接到手机,找到ipa包的位置并记录下来
3.Cycript附加到进行,找到App的Documents文件夹位置并记录下来
4.拷贝dumpdecrypted.dylib 到App的Documents 的目录。
5.执行砸壳后,并拷贝出砸壳后的文件,然后完成。

0.连接你已经越狱的手机

一、在WiFi的情况下
yalu2 beta 8 此次越狱工具默认安装了 SSH,所以越狱后就要去更改 root 密码,更改方法打开 Cydia 首页就有,切记不需要再安装 openssh 插件了。
越狱开发者作者为了增强越狱后的 ssh 安全防护性,采用了 Dropbear 取代 Openssh,这会导致我们无法直接通过 ssh 连上 iOS10 设备,需要手动修改调整 dropbear.plist。
通过 filza 或者 ifile,或者在电脑上用 iTools 等工具,找到 yalu102 的程序目录,路径在 /private/var/containers/Bundle/Application/
下,找到对应的沙盒目录,然后到 yalu102.app 目录中修改 dropbear.plist。
其中 ProgramArguments 项展开,把 Item 4 中原来的内容 127.0.0.1:22直接改为22,保存然后重启设备即可通过 ssh 连上 iPhone。
重启设备后终端连接手机,保证 iPhone 和 Mac 在同个网络下,直接 ssh 连接 iPhone 所在的 IP,默认密码是alpine
,第一次连接会有个警告,敲 yes 即可。

Bingos-MacBook-Pro:~ bingo$ ssh [email protected]
ssh: connect to host 192.168.1.22 port 22: Connection refused
Bingos-MacBook-Pro:~ bingo$ ssh [email protected]
The authenticity of host '192.168.1.22 (192.168.1.22)' can't be established.
ECDSA key fingerprint is SHA256:pPdllw8r6fWz1InP8OpZbmyqieH1OarSdkjcQ98jvXI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.22' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Dankal-Device-5s:~ root#

这样就连上 iPhone 设备了,接下来就可以终端命令行玩转 Unix 系统了。
二、通过USB
首先,同样手机要越狱,越狱胡要安装openssh工具。
第二,通过USB访问,有没有WiFi无所谓了,但是你得在pc安装usbmuxd服务,没有的大家可以去http://cgit.sukimashita.com/usbmuxd.git/ 下载1.0.8版本。解压进入 Python-client目录后,执行命令:python tcprelay.py –t 22:2222,这样就开通了一个从本机2222端口通往目标主机22号端口的通道,执行完后会出现Forwarding local port 2222 to remote port 22
第三, 另起终端,执行命令ssh root@localhost –p 2222,然后提示输入密码,这是手机的密码,默认为alpine。
最后,此时,同样可以达到ssh访问手机的效果,而且比WiFi更快更稳定

1.设备中打开需要砸壳的APP

通过ssh [email protected]登录到越狱手机之后,在电脑终端执行 ps -e查看所有正在运行的进程

如何去反编译一个ipa包_第1张图片
Snip20170720_1.png

通过上面的截图,可以看见我们要脱壳的app的进程号是885
然后执行 cycript -p 885(附加进程) 当你执行这个指令,一定要保证你的app是处于打开状态的。不能是处于后台。
Snip20170720_3.png

要想使用cycript需要在越狱手机上使用Cydia搜索cycript安装才可以

然后通过执行[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]查看Doumnets的位置。

Snip20170720_3.png

2.拷贝dumpdecrypted.dylib 到App的Documents的目录:

重新打开一个终端执行
scp ~/dumpdecrypted.dylib [email protected]:/var/mobile/Containers/Data/Application/221A0662-311C-4659-9BE5-5F952BDF5D30/Documents/
当我们直接执行这个指令的时候会报错:
Snip20170720_4.png

这个问题在Cydia上安装OpenSSH就可以了,注意安装了不要重启,重启之后就无法通过WIFI进行SSH连接了。
Snip20170720_5.png

3.执行砸壳

进入到 Documents 目录下,然后进行砸壳:
需要用到的命令:

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/5F606BDF-DAFF-4F02-B34E-BF1FDB5FF432/yidian-x.app/yidian-x 

执行上面的指令时会报一下错误


如何去反编译一个ipa包_第2张图片
Snip20170720_6.png

解决方法:

## 列出可签名证书
security find-identity -v -p codesigning
## 为dumpecrypted.dylib签名
codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib

用签过名的dumpdecrypted.dylib,再次砸壳即可。

如何去反编译一个ipa包_第3张图片
Snip20170720_10.png

查看当前文件夹就生成了一个.decrypted的文件,这个问价就是砸壳之后生成的文件
另外开启一个终端,使用 scp [email protected]:/var/mobile/Containers/Data/Application/221A0662-311C-4659-9BE5-5F952BDF5D30/Documents/yidian-x.decrypted ~/Desktop/将生成的文件拷贝到电脑桌面

可以安装一个Hopper(https://www.hopperapp.com/download.html) ,然后将砸壳后的文件,去掉后缀名,拖进Hopper里面就可以看见反编译的伪代码了

参考文档:
iOS逆向之IPA脱壳
使用ssh 访问越狱iPhone的两种方式

iOS10.2 SSH连接越狱设备

iOS10.2下的ipa砸壳

iOS开发利器Reveal查看任意app 的界面

iOS逆向工程(简单利用"dumpdecrypted"给ipa砸壳)

你可能感兴趣的:(如何去反编译一个ipa包)