iOS逆向之砸壳原理

2,528 阅读2分钟

前言

如果想要学习别人优秀的 APP , 第一步就要拿到别人的 ipa 进行砸壳, 砸壳也被称为 脱壳. 顾名思义, 就是对软件加壳的逆操作, 把软件上存在的壳去掉.

要想破解别人的App,第一步就是拿到ipa包进行砸壳,砸壳也称作软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(即解密)。

砸壳原理

1.1 应用加壳(加密)
  • 提交给 App Store 发布 App, 都经过官方的保护而加密. 这样就能保证机器上的应用是苹果审核的, 也就可以管理软件授权.

  • 经过 AppStore 的加密的应用, 我们无法通过 Hopper 等反编译静态分析, 也就无法 Class-Dump 导出头文件

  • 在逆向分析过程中, 需要对加密的二进制进行解密, 然后才能进行静态分析, 这一过程就是砸壳(脱壳).

  • App Store 是通过对称加密(AES)加壳的, 为了速度和效率

1.2 iOS运行原理
  • 加壳的程序 CPU 是读不懂的, 只有解密后才能载入内存

  • iOS 系统内核会对 MachO 进行脱壳, 所以我们只需要江解密后的 MachO拷贝出来

  • 非越狱手机无法做到跨线程访问, 越狱后拿到 root权限可以访问. 这就是砸壳的原理

1.3 应用砸壳

静态砸壳

在已经掌握和了解到了壳应用的加密算法和逻辑后,在不运行壳应用程序的前提下,将壳应用程序进行解密处理。静态脱壳的方法难度大,而且加密方发现应用被破解后,就可能会改用更加高级和复杂的加密技术。

动态砸壳

从运行在进程内存空间中的可执行程序映像(image)入手,将内存中的内容进行转储(dump)处理来实现脱壳处理。这种方法实现起来相对简单,且不必关心使用的是何种加密技术。

在iOS系统中,应用砸壳所使用的都是动态砸壳技术。

砸壳方法一

砸壳方法二

砸壳方法三

砸壳方法四

....


End