当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS逆向工程使用dumpdecrypted工具给App脱壳

iOS逆向工程使用dumpdecrypted工具给App脱壳

2019年07月24日  | 移动技术网IT编程  | 我要评论

相公 造反吧,水泄不通造句,刘惠璞微博

本篇以微信为例,给微信脱壳。"砸壳"在ios逆向工程中是经常做的一件事情,,因为从appstore直接下载安装的app是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解密的过程。未砸壳的app是无法在class-dump、hopper等工具中使用的。所以我们要将app进行砸壳处理。在android开发中也存在app加壳的处理,比如什么360加固了,其实就是给app加一层壳。

本篇我们就以wechat(微信)为例,从appstore上下载微信并安装,然后使用dumpdecrypted工具(当然你也可以使用其他砸壳工具)进行砸壳处理。砸壳后会生成解密后的app文件,然后我们就可以使用class-dump和hopper处理解密后的文件了。废话少说,就开始今天的主题。

一、生成dumpdecrypted.dylib动态库

首先我们要生成“砸壳”用的动态库dumpdecrypted.dylib,我们“砸壳”时主要用到这个动态库。该动态库的源码在github上是开源的(github地址),要想得到dumpdecrypted.dylib这个动态库,只需要从github上下载代码,然后进行编译,生成dumpdecrypted.dylib即可。下方就是使用make命令对dumpdecrypted的源码进行编译。

进入到dumpdecrypted文件夹下,运行make命令即可。

编译完成后,dumpdecrypted文件夹中就会多一个dumpdecrypted.dylib动态库,该动态库就是稍后我们砸壳使用的工具。

二、“砸壳”前的准备工作

接下来就是要在越狱手机上寻找要“砸壳”的app路径了,首先使用ssh连接到你的越狱设备,然后在越狱设备中打开你要砸壳的app, 此处我们以微信为例。从aippstore中下载安装的应用都会位于/var/mobile/applications中,下方的截图就是我手机上从appstore中下载的应用的安装路径。当然,下方是使用iexplore工具进行查看的,下方内容中,文件的拷贝我们都会用到iexplorer,当然你也可以使用之前提到过的ifunbox。

从上方的截图中要找出微信所在的目录是非常困难的,应用少的话你可以点开一个个的看。向上面这种应用比较多的情况的话,一个个文件夹点开是不太现实的,所以我们得通过另一种方式来定位“微信”app所在的目录。

这种快捷定位“微信”所在目录的方式就是“查看应用进程”的方式,首先你需要打开微信,然后运行下方的命令,来查看文件目录/var/mobile/目录下的所有正在运行的app进行,具体要用到的命令如下所示:

ps -e | grep /var/mobile

上方截图就是上述命令运行后所输出的内容,从上述内容中我们轻而易举的就可以找到“wechat”所在目录。我们可以通过iexplore打开该目录,更直观的来看一下微信app所在的目录,具体内容如下所示. 上面这个进程的绝对路径我们要记下来,因为后边砸壳的时候会使用到该路径。

接下来我们就要使用cycript工具来寻找wechat的document路径了,如果你的越狱设备上没有安装cycript工具的话,那么请前往cydia下载安装cycript工具。下方步骤就是使用cycript工具来查看附加进程的document目录的步骤。

1.使用cycript注入目标进程中

cycript -p wechat

上述命令执行完毕后,会进入到cycript模式中,如下所示。当然,在ios9.2.1上的越狱设备执行上述命令会报错,可能是目前cycript这个强大的工具还不支持ios9.2吧。所以我是在ios7.2上做的该实验。

2.获取该进程的document目录

[[nsfilemanager defaultmanager] urlsfordirectory:nsdocumentdirectory indomans:nsuserdomainmask][0]

输入上述内容,然后点击回车,就会输出wechat进程的document目录,输出结果如下所示。下方的红色部分就是wechat的document目录的绝对路径。

找到上述目录后,使用iexplore进入到该目录下,将上面我们生成的dumpdecripted.dylib动态库拷贝到该目录下即可,如下所示:

三、开始砸壳

上述“砸壳”的准备工作就绪后,接下来我们就要开始砸壳了。进入到wechat的document目录中,执行下方的命令进行砸壳。

dyld_insert_libraries=dumpdecrypted.dylib /var/mobile/applications/3dc16044-e5bb-4038-9e31-cfe3c7134a7b/wechat.app/wechat

在上述命令中,dyld_insert_libraries后边这个动态库就是我们上面生成的动态库,后边这个路径就是wechat执行文件的绝对路径,运行上述命令后,就开始砸壳了,下方截图就是我们砸壳的过程。

砸壳过程完成后,会在我们的document目录下生成一个wechat.decrypted文件,如下截图所示。该文件就是脱壳后的文件,我们可以将该文件拷贝到我们的mac上,以备使用。

四、导出脱壳app的头文件

将上面生成的wechat.decrypted脱壳文件拷贝的我们的mac上,接下来就是我们class-dump出厂的时刻了。接下来我们要使用class-dump导出该脱壳文件的所有头文件。具体步骤如下所示。

1.前奏

wechat.decrypted文件后,我执行了下方的命令来导出其头文件,下方的命令在没有加壳的app中是好使的,直接就可以导出相应app的头文件,如下所示:

class-dump -s -s -h wechat.decrypted -o ./headers

执行上述命令结束后是下方这个结果, 并没有导出想要的头文件,google了一下,是arm的架构不对,所以就没导出成功。

2.开始导出头文件

从上述截图中我们可看到,headers文件夹中并没有生成相应的头文件。是我们解密的文件有问题吗?于是乎,我使用了hopper打开了解密后的文件,是可以正常打开的,于是乎又google一下,原来是我们在导出头文件时指定的arm架构不正确,于是乎使用class-dump的--arch配置项来指定了armv7的架构,这样的话,头文件就导出成功了。

class-dump --arch armv7 -s -s -h wechat.decrypted -o ./headers

操作步骤和结果如下图所示, 导出成功,你可以慢慢的分析了。

五、hopper

上面使用了class-dump来操作我们脱壳的文件,木有问题。那么接下来来看一下在hopper上的效果如何,下方就是使用hopper打开“脱壳”文件的效果。当然,你也可以使用ida pro来查看,当然此处我们使用的是hopper。从下方的截图来看,结果是perfect的。

以上所述是小编给大家介绍的ios逆向工程使用dumpdecrypted工具给app脱壳,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

  • ios uicollectionview实现横向滚动

    现在使用卡片效果的app很多,之前公司让实现一种卡片效果,就写了一篇关于实现卡片的文章。文章最后附有demo实现上我选择了使用uicollectionview ... [阅读全文]
  • iOS UICollectionView实现横向滑动

    本文实例为大家分享了ios uicollectionview实现横向滑动的具体代码,供大家参考,具体内容如下uicollectionview的横向滚动,目前我使... [阅读全文]
  • iOS13适配深色模式(Dark Mode)的实现

    iOS13适配深色模式(Dark Mode)的实现

    好像大概也许是一年前, mac os系统发布了深色模式外观, 看着挺刺激, 时至今日用着也还挺爽的终于, 随着iphone11等新手机的发售, ios 13系统... [阅读全文]
  • ios 使用xcode11 新建项目工程的步骤详解

    ios 使用xcode11 新建项目工程的步骤详解

    xcode11新建项目工程,新增了scenedelegate这个类,转而将原appdelegate负责的对ui生命周期的处理担子接了过来。故此可以理解为:ios... [阅读全文]
  • iOS实现转盘效果

    本文实例为大家分享了ios实现转盘效果的具体代码,供大家参考,具体内容如下demo下载地址: ios转盘效果功能:实现了常用的ios转盘效果,轮盘抽奖效果的实现... [阅读全文]
  • iOS开发实现转盘功能

    本文实例为大家分享了ios实现转盘功能的具体代码,供大家参考,具体内容如下今天给同学们讲解一下一个转盘选号的功能,直接上代码直接看viewcontroller#... [阅读全文]
  • iOS实现轮盘动态效果

    本文实例为大家分享了ios实现轮盘动态效果的具体代码,供大家参考,具体内容如下一个常用的绘图,主要用来打分之类的动画,效果如下。主要是ios的绘图和动画,本来想... [阅读全文]
  • iOS实现九宫格连线手势解锁

    本文实例为大家分享了ios实现九宫格连线手势解锁的具体代码,供大家参考,具体内容如下demo下载地址:效果图:核心代码://// clockview.m// 手... [阅读全文]
  • iOS实现卡片堆叠效果

    本文实例为大家分享了ios实现卡片堆叠效果的具体代码,供大家参考,具体内容如下如图,这就是最终效果。去年安卓5.0发布的时候,当我看到安卓全新的material... [阅读全文]
  • iOS利用余弦函数实现卡片浏览工具

    iOS利用余弦函数实现卡片浏览工具

    本文实例为大家分享了ios利用余弦函数实现卡片浏览工具的具体代码,供大家参考,具体内容如下一、实现效果通过拖拽屏幕实现卡片移动,左右两侧的卡片随着拖动变小,中间... [阅读全文]
验证码:
移动技术网