由于安卓APP是基于Java的,所以极容易被破解,一个不经过加固的APP犹如裸奔一样,毫无防备。之前曾有新闻报道,一些专职的APP打包党就是专门从各种渠道找到apk,通过各种破解手段将apk文件破解、反编译,然后加入广告、病毒代码,重新打包投入市场,不明真相的用户将带病毒广告的apk下载下来,甚至因此造成利益损失。
下面,我将为大家介绍一下APP加固的原理和实现的步骤,希望对大家有所帮助。
Android自底层向上分为4个功能层,分别是:Linux内核层、系统运行库层,应用程序框架层和应用程序层。其中,应用程序框架层提供开发Android应用程序所需的一系列类库,包含4类基本组件,丰富的控件、资源管理器、内容提供器、活动管理器等等。
传统的安卓应用一般由Java语音编写,由四个主要组件组成:Activity、Intent Receiver、service、content provider。
Android应用程序所使用的编程语音是Java语言,和Java SE一样,编译时将使用Sun JDK将Java源程序编程成标准的Java字码文件(.class文件),而后通过工具软件DX把所有字节码文件转成DEX文件,最后使用Android打包工具(aapt)将DEX文件,资源文件以及Android-Manifest.xml文件组合成一个应用程序包(APK)。
源码加密:Dex文件保护、防二次打包、so文件保护、资源文件保护。其中,各个加密项目又包括好多个小项目,以dex文件加密保护为例,dex加密需要Dex加壳保护、dex加花、dex动态类加载等。
应用加密:应用加密包括log日志输入屏蔽和清场技术。以清场技术为例,清场技术依赖于云端黑名单、白名单DB,应用每次启动后便自动进行本地的黑名单、白名单DB数据更新,若检测到有异常情况,则可对用户进行提示。
数据安全:页面防劫持、本地数据保护、截屏保护、内存数据防查询、协议加密、虚拟键盘。
以防截屏录屏功能为例,通过Hook技术监控系统底层截屏相关函数(操作),阻止相关函数调用,也可以在界面中添加代码防止页面截屏。
APP加固是一个庞大的工程,包含却不止于上述的加固方式
来源:百度
之前分享过的资料:
ctf web/ctf misc 学习资料,私聊公众号发送“ctf学习资料”会自动回复你下载链接;
hw期间分享过溯源思维脑图,私聊公众号发送“获取高清图”会自动回复你下载链接;
hw期间分享的个人收集的子域名字典,私聊公众号发送“获取子域名字典”会自动回复你下载链接;
私聊发送“hw”或者“2020hw”,获取hw期间系列文章阅读链接;
一如既往的学习,一如既往的整理,一如即往的分享。感谢支持
扫描关注LemonSec
本文始发于微信公众号(LemonSec):Android安全(六)--apk加固原理
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论