如何去反编译一个ipa包

作者: 流星大石头 | 来源:发表于2017-07-20 12:15 被阅读4860次

    <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查看所有正在运行的进程

    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
    <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里面就可以看见反编译的伪代码了

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

    iOS10.2 SSH连接越狱设备

    iOS10.2下的ipa砸壳

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

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

    相关文章

      网友评论

      • 旅行家_a3d6:麻烦问一下,企业包如何反编译呐?具体需要那些软件辅助呐?
        white__light:麻烦请问下,swift的ipa可以反编译吗
        流星大石头:企业包就不需要去壳,直接解压ipa包,把Payload里面的东西拖到Hopper里面就可以了。

      本文标题:如何去反编译一个ipa包

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