如何去反编译一个ipa包
<h3>1.前言</h3>
上传到appStore的ipa苹果会自动加一层防护壳,如果想要反编译从appStore下载的ipa包,必须要先要进行一次脱壳操作。直接使用Xcode打出的企业包可以直接进行反编译。
<h3>2.工具</h3>
1.有一部已经越狱的手机
2.dumpdecrypted
<h3>3.步骤总结</h3>
0.连接你已经越狱的手机
1.设备中打开需要砸壳的APP
2.SSH链接到手机,找到ipa包的位置并记录下来
3.Cycript附加到进行,找到App的Documents文件夹位置并记录下来
4.拷贝dumpdecrypted.dylib 到App的Documents 的目录。
5.执行砸壳后,并拷贝出砸壳后的文件,然后完成。
<h5>0.连接你已经越狱的手机</h5>
一、在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 root@192.168.1.22
ssh: connect to host 192.168.1.22 port 22: Connection refused
Bingos-MacBook-Pro:~ bingo$ ssh root@192.168.1.22
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.
root@192.168.1.22'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更快更稳定
<h5>1.设备中打开需要砸壳的APP</h5>
通过ssh root@192.168.8.132
登录到越狱手机之后,在电脑终端执行 ps -e
查看所有正在运行的进程
通过上面的截图,可以看见我们要脱壳的app的进程号是885
然后执行
cycript -p 885(附加进程)
当你执行这个指令,一定要保证你的app是处于打开状态的。不能是处于后台。Snip20170720_3.png
要想使用cycript需要在越狱手机上使用Cydia搜索cycript安装才可以
然后通过执行[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
查看Doumnets的位置。
<h5>2.拷贝dumpdecrypted.dylib 到App的Documents的目录:</h5>
重新打开一个终端执行
scp ~/dumpdecrypted.dylib root@192.168.8.179:/var/mobile/Containers/Data/Application/221A0662-311C-4659-9BE5-5F952BDF5D30/Documents/
当我们直接执行这个指令的时候会报错:
Snip20170720_4.png
这个问题在Cydia上安装OpenSSH就可以了,注意安装了不要重启,重启之后就无法通过WIFI进行SSH连接了。
Snip20170720_5.png
<h5>3.执行砸壳</h5>
进入到 Documents 目录下,然后进行砸壳:
需要用到的命令:
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/5F606BDF-DAFF-4F02-B34E-BF1FDB5FF432/yidian-x.app/yidian-x
执行上面的指令时会报一下错误
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,再次砸壳即可。
Snip20170720_10.png查看当前文件夹就生成了一个.decrypted的文件,这个问价就是砸壳之后生成的文件
另外开启一个终端,使用
scp root@192.168.8.179:/var/mobile/Containers/Data/Application/221A0662-311C-4659-9BE5-5F952BDF5D30/Documents/yidian-x.decrypted ~/Desktop/
将生成的文件拷贝到电脑桌面
可以安装一个Hopper(https://www.hopperapp.com/download.html) ,然后将砸壳后的文件,去掉后缀名,拖进Hopper里面就可以看见反编译的伪代码了