前言:Android开发者常常面临的一个安全问题就是防反编译**、 防二次打包。因此,App在上线某些应用市场比如腾讯的应用宝时会要求你的应用apk进行安全加固,也就是和Windows平台exe程序的加壳一样。
一、为什么要对Android应用加固?
由于安卓APP是基于Java的,所以极容易被**,一个不经过加固的APP犹如裸奔一样,毫无防备。之前曾有新闻报道,一些专职的APP打包黑产就是专门从各种渠道找到apk,通过各种**手段将apk文件**、反编译,然后加入广告、病毒代码,重新打包投入市场,不明真相的用户将带病毒广告的apk下载下来,甚至因此造成利益损失。
二、加壳的概念
1、加壳定义
移动平台攻防技术的发展基本是沿着PC端发展轨迹在进行,从windows平台的加壳脱壳反调试到Andriod的平台apk加固,反调试和代码混淆等。
加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。PC EXE文件加壳的过程如下:
2、加壳的作用和分类
作用:
加壳的程序可以有效阻止对程序的反汇编分析,以达到它不可告人的目的。这种技术也常用来保护软件版权,防止被软件**。
分类:
从App的加固技术来看:主流分为dex加密和so加密,目前来看保护dex文件更为重要,应为dex反编译后的java代码可读性更强。
三、使用第三方工具自动化加固
对于移动应用开发工程师来说,应用自动化加固无疑是最便捷的一种安全方式了。通过加固可以在一定程度上达到反编译和防止被二次打包的效果。当然,现在网上很多平台都提供加固服务包括bat在内。加固原理差不多,但是加固强度和兼容性上还是有很大差别的。推荐腾讯的乐固移动应用加固的PC端工具:腾讯乐固应用加固助手
使用应用加固助手,可以一键完成应用加固、签名、多渠道打包等工作,如下图。
1、首先要登录,获取云API**登录加固助手
2、添加应用加固,会得到类似名字为app-yingyongbao-release1.0_legu.apk,后缀有legu
3、腾讯云应用安全需要将您的签名信息删除后才能加固,所以加固后的安装包是没有签名信息的,现在需要您对加固包重新签名。我们可以使用这个自主工具重签名。
你可以使用你Android Studio已有的签名文件,填完之后接可以了,会得到如下名字的文件:app-yingyongbao-release1.0_legu_aligned_signed。
我们可以看到主要是对apk的dex文件进行了加固处理,现在我们就可以重新在应用市场上传我们加固好的app了。
参考链接:Android应用加固原理