美文网首页iOS点点滴滴
iOS逆向开发-微信应用脱壳

iOS逆向开发-微信应用脱壳

作者: 退役程序猿 | 来源:发表于2017-11-22 17:42 被阅读0次

    前言:

    为了伟大的装X,最近一直在研究iOS逆向工程,逆向工程可以做到很多事情也可以让你更好的了解iOS底层实现原理,玩别家的应用,么事做个自动抢红包?或者是为自己的应用进行相应的加固。所以脱壳/砸壳都是在iOS逆向开发中的必要工作,因为从AppStore直接下载安装的App是加壳的通俗的说就是加密的,我们无法做后续的各种分析工作,所以先要脱壳进行解密下面我会以微信应用为例子做一个脱壳处理,我会慢慢跟着我的学习线路更新博客和大家一起学习,废话就不多说了,兄弟们请往下看

    应用脱壳所需要工具:

    工具 下载地址 平台
    Openssh Cydia 移动端
    dumpdecrypted 下载地址 Mac
    class-dump 下载地址 Mac端
    Cycript Cydia 移动端

    Openssh安装及使用

    • 越狱移动端Cydia应用中搜索Openssh安装即可

    dumpdecrypted安装及使用

    • cd到dumpdecrypted目录下
    • 运行make命令生成“dumpdecrypted.dylib”

    class-dump安装及使用

    • 前往usr/bin
    • 将class-dump 拖到/usr/bin
    需要注意:
    问题1:class-dump无法拖入/usr/bin目录

    原因:Mac当前系统为Mac OS X 10.11 El Capitan,对于Mac OS X 10.11 El Capitan用户,由于系统启用了SIP(System Integrity Protection), 导致root用户也没有权限修改/usr/bin目录。
    解决办法:重启Mac,按住command+R,进入recovery模式。选择打开Utilities下的终端,输入:csrutil disable并回车,然后正常重启Mac即可。

    问题2:使用class-dump权限问题

    解决办法:sudo chmod 777

    开始破壳

    • ssh登录移动端

      ssh root@XX.XX.XX.XX    //默认密码:alpine
      
    ssh登录移动端.png
    • 查看进程

      ps -e
      
    查看进程.png
    • 获取应用进程


      WeCht进程ID.png
    • 注入应用进程

       cycript -p XXX     //XXX:进程ID 1490
      
    注入WeCht进程.png
    • 获取应用沙盒路径

      [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
      
    获取沙盒路径.png
    • 退出ssh登录

       logout    //退出ssh登录
      
    退出ssh登录.png

    注意:退出ssh登录之前需要先退出cycript模式 退出方法:control+d

    • 上传dumpdecrypted.dylib到目标程序沙盒

       scp XXX/dumpdecrypted.dylib root@10.10.242.107:XXX  //sap  dumpdecrypted.dylib路径 root@10.10.242.107:目标应用沙盒路径
      
    上传dumpdecrypted.png
    • 上传成功ssh登录移动端cd到沙盒目录进行脱壳

      su mobile  //防止报错 killed:9
      DYLD_INSERT_LIBRARIES=XXX    //目标应用进程路径
      
    应用脱壳.png
    脱壳后的包.png
    • 把脱壳后的包导出到Mac端

       scp ssh root@172.20.10.4:XXX XXX    // XXX:WeChat.decrypted路径 XXX:目标路径
      
    导出脱壳包.png
    • cd到WeChat.decrypted路径导出.h文件
        class-dump -S -s -H WeChat.decrypted -o ./Headers
    
    头文件.png

    总结

    • 获取进程前移动端先打开应用,最好是杀死所有进程只保留目标应用
    • 获取到进程ID,进程路径,沙盒路径 记起来方便使用
    • ssh登录首先是和Mac端使用同一网络

    相关文章

      网友评论

        本文标题:iOS逆向开发-微信应用脱壳

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