前言
如果想要学习别人优秀的 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