方舟编译器来了,apk里的代码都变成so文件了,还怎么做加固?
热烈欢迎方舟编译器上线开源!
根据华为发布的方舟编译器架构图可看出,应用方舟编译器后,输出变成了二进制文件,并添加编译器运行时库后最终链接成可执行文件。类 Linux 系统的可执行文件一般是指无后缀的二进制文件(对应 Windows 下的 .exe 文件)和 .so 文件(对应 Windows 下的 .dll 文件)。华为官方表示方舟编译器能够将系统操作流畅度提升 24%、系统响应力提升 44%、第三方应用操作流畅度提升 60%。如此大的性能提升,简直是一统江湖之势。所谓:优化尽头谁为峰,一见方舟道成空!
有鉴于安卓平台各种黑产极为猖狂,一般的应用软件开发者都要将自己的 apk 软件包做加固之后再发布。而讲到 apk 加固,主要是对 dex 文件做加密。dex 是 Android 平台上(Dalvik/Art 虚拟机)的可执行文件, 相当于 Windows 平台中的 exe 文件, 每个 Apk 安装包中都有 dex 文件, 里面包含了该 app 的所有代码, 通过反编译工具可以获取到相应的 java 源码。dex 文件加密就是 apk 加固的核心问题。那么问题来了,方舟编译器直接把 Java 代码变本地代码( .so 文件)了,apk 加固的重心必将转到 so 文件加壳。那么我们有现成的 so 加壳技术吗?现有的 so 加壳技术能保证我们的应用安全吗?援引现有的基于 dex 的 apk 加壳技术,将 so 库加壳也做一下分代介绍
商业化产品分析1代:upx2代:基于ollvm的互联网产品:梆梆、爱加密、360、腾讯、网易、百度… 所谓安全编译器都是2.5 梆梆(SI2S安全编译器)、深思数盾(Virbox Compiler)3代:深思数盾-VirboxProtector4代:无。
总结
世界上从来没有无缘无故的爱,也没有无缘无故的恨。任何高大上的技术都不是空中楼阁。方舟编译器横空出世极大改变了安卓生态环境,但我们也不必因此而惊慌失措。安全技术公司深厚的技术积累足以应对因此而带来的变局。
附录ollvm常见混淆手段控制流扁平化 这个模式主要是把一些if-else语句,嵌套成do-while语句指令替换 这个模式主要用功能上等效但更复杂的指令序列虚假控制流程 这个模式主要嵌套几层判断逻辑,一个简单的运算都会在外面包几层if-else 参考文档:《OLLVM代码混淆移植与使用》 ???