一,前言
本质上讲,Android App 的安装包文件(apk)就是一个压缩包,解压之后,其中包含 Android App 的源码、配置文件和资源文件等。
做一个测试,将一个名为 scrape-app4.apk 的文件,修改文件拓展名为zip,然后解压这个文件后,得到的结果如下:
这里的 classes.dex 文件就是 apk 文件的指令集,只需要简单地反编译一下就能得到 Java 代码。由此可见,如果一个 App 能轻易被反编译出源码,若有人想复制和抄袭,对开发者、运营该 App 的公司无疑很不利。所以,加壳作为常见的防护手段应运而生。
壳就像一个铠甲,用于保护 App 的源码不被轻易反编译和修改。某加壳 App 由 jadx-gui 反编译后的结果如下:
二,加壳的原理
壳本身也是一个 dex 文件&