iOS逆向:App脱壳/ipa破解

App脱壳

在iOS开发中,有时候想看下其他App里面用了哪些开源库,这时候就可以通过工具导出它的头文件来看。

从AppStore下载的App( 以下简称StoreApp) 是被苹果加密过的( 从其他渠道下载的一般没有加密) , 可执行文件被套上了一层保护壳, 而class-dump无法作用于加密过的App。 在这种情况下, 想要获取头文件, 需要先解密App的可执行文件, 俗称“砸壳”。 dumpdecrypted就是由越狱社区的知名人士Stefan Esser( @i0n1c) 出品的一款砸壳工具, 被越狱社区广泛运用在iOS逆向工程研究中。 引自 《iOS应用逆向工程第二版》

当然前提是你有一台越狱的设备哦。

这里就记录下,本人脱壳的步骤。

前提条件

  1. 越狱设备
  2. dumpdecrypted:用于脱壳

下载地址:https://github.com/stefanesser/dumpdecrypted/archive/master.zip

下载后,解压运行make编译,就会在当前目录下生成dumpdecrypted.dylib文件

1

注:如果出现“make: Nothing to be done for ‘all’”,说明目录下已经有dumpdecrypted.dylib了。

3.class-dump:用于导出头文件

下载地址:http://stevenygard.com/

下载后,把class-dump放到/usr/bin,这样在终端就可以使用class-dump命令了。

步骤

上传dumpdecrypted.dylib到目标APP的Documents下

我们可以使用iFunBox或scp都可以。

1

确定APP的可执行文件的路径

1

把目标应用运行起来,然后通过SSH连接到设备上,运行ps -e来打印所有进程信息。(设备上要先安装Open SSH,在Cydia里面查找安装)

1

1

你也可以用91助手查看具体应用的安装目录:

1

执行命令脱壳

定位到Documents下,执行如下命令

1

1

此时就会在Documents下,生成一个xxx..decrypted的文件,这就是脱壳的文件了。

使用class-dump导出头文件

把xxx.decrypted复制到mac上执行命令

1

就会在outHeader目录里面,生成出App的所有头文件。

之前由于没有加–arch armv7,而导致没有生成头文件。原因可能是APP里面包含了多个架构的可执行文件,因此需要针对架构导出头文件。

我们也可以用MachOView来查看下加密标志位。

App是有两个架构:armv7和arm64

1

脱壳前:

1

脱壳后:

1

arm64下的加密标志为1,说明arm64的架构是没有脱壳的。

1

我们使用命令,是得不到头文件的。

1

是因为我使用的是iPhone 5c,它的架构是arm7s。

后来我是了一台iPhone6的话,使用–arch arm64这个命令是可以的,反而用–arch armv7就不行了。

因此,初步断定要使用你APP安装的设备一样的架构才可以。

最后在总结下:

  1. 上传dumpdecrypted.dylib文件到设备上
  2. ssh上设备,执行DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib命令
  3. 用class-dump工具导出头文件

参考资料

Apple移动设备默认指令集

  • armv6 设备: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch
  • armv7 设备: iPhone3GS, iPhone4, iPhone4S
  • iPad, iPad2, iPad3(The New iPad), iPad mini
  • iPod Touch 3G, iPod Touch4
  • armv7s设备: iPhone5, iPhone5C, iPad4(iPad with Retina Display)
  • arm64 设备: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)

ipa破解

使用工具:

  1. 一台越狱设备(本人的是iOS 8 iPhone5c)
  2. Clutch
  3. MobileTerminal(用SSH连接也可以)

破解步骤

在Cydia 里面添加数据源

http://apt.so/brian0817 安装MobileTerminal和Clutch.

1

打开Terminal,输入su, 密码:alpine

1

输入Clutch, 这时候会出现很多选项。很多都是默认,直接return即可。

NumberBaseMenu这个输入YES,这个是数字破解方式。

ListWithDisplayName这个列表上显示的应用名称

1

1

然后会列出可以破解的APP列表:

1

要破解哪个应用,只需要输入Clutch 加上应用前面的数字即可。

例如:

破解Clips(这个是我从AppStore上下载的)

1

结果:

1

破解的ipa就在/User/Documents/Cracked里面

1

这时候你可以解压里面的应用出来,通过MachOView查看加密标志位,已经是无加密了。通过class-dump也可以导出头文件了。

注意点

如果发现输入Clutch命令后,提示”There no xxxx”(具体忘了,意思就是没有可破解的应用),说明Clutch版本低,或者版本不匹配。

破解的应用,是正版的,如果是从91助手等商店下载的,就不需要破解了。

文章出处:Mottoin

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容