iOS逆向开发-砸壳

我们知道AppStore的APP都是经过Store加密的,我们想要对其进行一些逆向破解,必须先砸掉这层壳,主要介绍一下怎样用dumpdecrypted砸壳。

  1. 下载并编译
    从这里下载压缩包,然后解压,会得到 dumpdecrypted-master 文件夹,用终端命令行进入该文件夹执行make命令进行编译:
    编译
    然后会得到我们需要的 dumpdecrypted.dylib 库文件。
    这里有些坑,但是我没踩到,如果遇到编译过程中有问题的童鞋,可以看看这个他踩的坑
  2. 准备
    接下来我们要找到要砸的App,然后把动态库加进去,为我们最后砸壳做好充分准备。这里我以微信示例。
    首先我们要知道两个路径:
    一个是微信App可执行文件的存放路径,否则我们砸什么呢。
    一个是微信App的沙盒路径,我们需要把动态库放置到沙盒路径下才能保证动态库能正常运行。
  • 寻找可执行文件路径
    首先把你的微信先跑起来,切到前台
    然后用ssh登陆到你的手机上
    ssh root@yourPhoneIP
    执行ps命令,查看当前跑着的进程(如果你的iphone执行不了ps命令,去cydia安装adv-cmds软件包就好了)
    ps -e
    然后在众多进程中找到我们要找的微信,显示的就是他的可执行文件路径,记下来

    微信

  • 用Cycript寻找沙盒
    Cycript不多介绍,第一次用的话可以从这里看一下基本用法。
    执行命令行
    cycript -p WeChat
    cy#[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
    #"file:///var/mobile/Containers/Data/Application/CAD8A685-F1F3-42D8-AB7E-FF18767D7A30/Documents/"
    就找到了微信的沙盒目录。记录下来。

  • 把动态库放到沙盒Document目录下
    现在dumpdecrypted.dylib还在我们的电脑上,我们需要把他移到微信沙盒Document下。
    新打开一个终端并且cd到dumpdecrypted.dylib所在的目录下,执行命令行:
    scp dumpdecrypted.dylib root@yourPhoneIP:/var/mobile/Containers/Data/Application/CAD8A685-F1F3-42D8-AB7E-FF18767D7A30/Documents/dumpdecrypted.dylib
    后面的路径就是你之前查到的沙盒路径,别无脑把我这里的复制上去了。
    当然你也可以用PP助手这些工具软件直接把dumpdecrypted.dylib拖到微信的沙盒里。

  1. 砸砸砸
    回到之前ssh在你iphone上的终端,先"ctrl + D"退出cycript, cd到微信的沙盒Document下:
    cd /var/mobile/Containers/Data/Application/CAD8A685-F1F3-42D8-AB7E-FF18767D7A30/Documents/
    执行砸壳,目标路径就是之前查到的微信可执行文件路径:
    DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/5F7F9D80-7EF9-4DEE-82B1-51D028E2752B/WeChat.app/WeChat
    当看到 WeChat.decrypted ,大功告成!


    砸壳

    之后随便用PP助手之类的工具,直接从微信沙盒把WeChat.decrypted拿出来,就可以用于之后的class-dump之类的了。

     class-dump -H 需要导出的框架路径 -o 导出的头文件存放路径    
    

Tip:关于 dumpdecrypted.dylib 要放在沙盒Document目录下。 如果不放在沙盒下执行,会直接报错如下:
dyld: could not load inserted library 'dumpdecrypted.dylib' because no suitable image found. Did find:
dumpdecrypted.dylib: stat() failed with errno=1
Trace/BPT trap: 5
来自http://bbs.iosre.com/的一段话:

我们都知道,StoreApp对沙盒以外的绝大多数目录没有写权限。dumpdecrypted.dylib要写一个decrypted文件,但它是运行在StoreApp中的,与StoreApp的权限相同,那么它的写操作就必须发生在StoreApp拥有写权限的路径下才能成功。StoreApp一定是能写入其Documents目录的,因此我们在Documents目录下使用dumpdecrypted.dylib时,保证它能在当前目录下写一个decrypted文件,这就是把dumpdecrypted.dylib拷贝到Documents目录下操作的原因。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 本人小白一个,带着兴趣学习反编译,什么都是爬博客新学习,写此博客只为方便记忆,当然如果能给读者带来收获那就更...
    孔凡伍阅读 1,030评论 0 0
  • 逆向工具集的安装和使用 iOS 逆向工程的工具分类 检查工具如:Reveal(界面分析工具)、tcpdump(抓包...
    Yochi阅读 5,849评论 1 5
  • 首先得准备一部已经越狱过的iPhone,并且安装好OpenSSH和cycript插件 步骤: 下载 https:/...
    gmfx阅读 1,042评论 1 1
  • 文章砸壳使用到了ssh连接手机,Cycript注入进程查看应用的一些路劲,以及越狱的手机,所以在开始对应用进行砸壳...
    James_Gong阅读 6,581评论 0 3
  • 文字是奇妙的,它可以有形,也可以无形。 它可以开心,也可以不开心。它源于生活,又高于生活。 在生活中,常常遇到词不...
    小小毅阅读 800评论 2 1