iOS逆向工程之App脱壳

"砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解密的过程。
本文以微信为例。

一、生成dumpdecrypted.dylib动态库

首先我们要生成“砸壳”用的动态库dumpdecrypted.dylib,我们“砸壳”时主要用到这个动态库。该动态库的源码在github上是开源的,要想得到dumpdecrypted.dylib这个动态库,只需要从github上下载代码,然后进行编译,生成dumpdecrypted.dylib即可。
使用make命令对dumpdecrypted的源码进行编译。
编译完成后,dumpdecrypted文件夹中就会多一个dumpdecrypted.dylib动态库,该动态库就是稍后我们砸壳使用的工具。

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

  1. 用iExplorer打开手机文件,将dumpdecrypted.dylib拖到微信Document中。


    iOS逆向工程之App脱壳_第1张图片
    docment.png

    2.获取到微信Document路径。
    很多文章都说用cycript获取,但是我发现用find也能方便取到。

find /var/mobile/Containers/Data/Application/ -name dumpdecrypted.dylib

将这个路径存好(砸壳时用)
前提是只有这个应用有dumpdecrypted.dylib,否则分辨不出哪个是微信的。。。

  1. 获取到应用名称
    手机打开微信,ssh连到手机中,用以下命令获取微信应用名称
ps -e | grep /var/mobile

如果找不到ps命令,在手机Cydia中搜索adv-cmds 安装。

adv-cmds #finger,fingerd,last,lsvfs,md,ps 
basic-cmds #msg,uudecode,uuencode,write 
bc #计算器工具 
cURL #就是curl了 
Diff Utilities #diff 
diskdev-cmds #mount,quota,fsck等,忘记是否默认安装的 
file #常用的file命令 
file-cmds #chflags,compress 
Find Utilites #find 
Gawk #awk 
grep #grep 
inetutils #ftp,inetd,ping,telnet… 
less #less 

结果如图,名称WeChat(砸壳时用)

WeChat.png

三、开始砸壳

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

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/5897759F-D179-4194-AAF1-E0726F7DD147/WeChat.app/WeChat

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


iOS逆向工程之App脱壳_第2张图片
zake.png

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

http://www.jianshu.com/p/6a5c8c685d2c

四、导出脱壳App的头文件

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

  1. 导出头文件
class-dump --arch armv7 -S -s -H WeChat.decrypted -o ./Headers

就不贴图了。。。
ps : 后来砸了一个自己的项目,swift和oc混编的,发现这步不成功:

Error: Cannot find offset for address 0xc8002a76 in stringAtAddress:

度娘说是class-dump解不出swift

五、Hopper

上面使用了class-dump来操作我们脱壳的文件,木有问题。那么接下来来看一下在Hopper上的效果如何,下方就是使用Hopper打开“脱壳”文件的效果,汇编语言的,慢慢研究吧。。。


iOS逆向工程之App脱壳_第3张图片
hopper.png

最后,非常感谢青玉伏案,这篇文章也拷贝了不少他的文章,链接附在了推荐阅读中。

你可能感兴趣的:(iOS逆向工程之App脱壳)