天天看点

如何去反编译一个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 [email protected]
ssh: connect to host . port : 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 '.' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Dankal-Device-s:~ 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 [email protected] –p 2222

,然后提示输入密码,这是手机的密码,默认为alpine。

最后,此时,同样可以达到ssh访问手机的效果,而且比WiFi更快更稳定

<h5>1.设备中打开需要砸壳的APP</h5>

通过

ssh [email protected]

登录到越狱手机之后,在电脑终端执行

ps -e

查看所有正在运行的进程

如何去反编译一个ipa包

Snip20170720_1.png

通过上面的截图,可以看见我们要脱壳的app的进程号是885

然后执行

cycript -p 885(附加进程)

当你执行这个指令,一定要保证你的app是处于打开状态的。不能是处于后台。

如何去反编译一个ipa包

Snip20170720_3.png

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

然后通过执行

[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

查看Doumnets的位置。

如何去反编译一个ipa包

Snip20170720_3.png

<h5>2.拷贝dumpdecrypted.dylib 到App的Documents的目录:</h5>

重新打开一个终端执行

scp ~/dumpdecrypted.dylib [email protected]:/var/mobile/Containers/Data/Application/221A0662-311C-4659-9BE5-5F952BDF5D30/Documents/

当我们直接执行这个指令的时候会报错:

如何去反编译一个ipa包

Snip20170720_4.png

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

如何去反编译一个ipa包

Snip20170720_5.png

<h5>3.执行砸壳</h5>

进入到 Documents 目录下,然后进行砸壳:

需要用到的命令:

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/F606BDF-DAFFF02-B34E-BF1FDB5FF432/yidian-x.app/yidian-x 
                

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

如何去反编译一个ipa包

Snip20170720_6.png

解决方法:(这个命令设置MAC上执行,不在手机终端上执行)

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

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

如何去反编译一个ipa包

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砸壳)

作者:流星大石头

链接:https://www.jianshu.com/p/a1f2b70fa292

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。