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

前言:

为了伟大的装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登录移动端.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.png
  • 上传成功ssh登录移动端cd到沙盒目录进行脱壳

    su mobile  //防止报错 killed:9
    DYLD_INSERT_LIBRARIES=XXX    //目标应用进程路径
    
应用脱壳.png

脱壳后的包.png
  • 把脱壳后的包导出到Mac端

     scp ssh [email protected]:XXX XXX    // XXX:WeChat.decrypted路径 XXX:目标路径
    
iOS逆向开发-微信应用脱壳_第1张图片
导出脱壳包.png
  • cd到WeChat.decrypted路径导出.h文件
    class-dump -S -s -H WeChat.decrypted -o ./Headers
iOS逆向开发-微信应用脱壳_第2张图片
头文件.png

总结

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

你可能感兴趣的:(iOS逆向开发-微信应用脱壳)