2021-12-30 20:25:43|已浏览:2671次
安卓系统是由谷歌推出的一款移动终端,由于开源,所以国内出现了许多使用相关系统的厂商,比如小米,oppo,vivo,魅族等。
在国内,这些系统的用户群体甚多。我们日常使用的社交、游戏、工作等应用,很多都装在安卓系统上。
由于安卓系统的开源性,很多安全问题也随之而来。那么,在安卓系统上运行的应用又是如何保证自身安全的呢?
本文通过实战挖洞,展现一下Android应用的防守与攻击方式。
1
简介
为了避免应用被攻击,各种应用在投产前会用一些技术手段进行加固。但是在持续对抗下,总会出现各种反加固的手段。
部分开发者可能忽视应用的安全性,各大应用市场上也有很多未采取加固手段或进行简单加固的应用。
首先,我们来看一看一个未进行任何加固手段的应用,运行起来有多危险。
AES算法能保证身份证号以密文形式在网络上传输,不被他人窃取,将代码打包安装在我们手机中运行。
由于安卓应用包很容易获取,源码包被攻击者拿去反编译:
对比开发者写的代码和攻击者反编译的代码,几乎完全一样,攻击者很容易分析出我们的代码逻辑,从而造成破坏。
上面程序,拿到我们加密算法逻辑,对传输中的加密内容进行解密,来获取身份证号。
由此可见,没有做任何安全防护的安卓源码犹如“裸奔”。
2
防守原理
上面实例可见,没有加固的安卓应用,运行起来是相当危险的。下面介绍几种常见的应用加固方式。包括源码混淆、应用加壳、应用运行环境检测。
源代码混淆保护
混淆是将代码中的类、方法、变量等信息进行重命名,把它们改成一些如“a,b,c,d”这样毫无意义的名字,这样就增加了攻击者逆向难度。混淆效果图如下:
应用加壳保护
加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。
应用加固的一种手法对原始二进制原文进行隐藏。简单描述就是代码隐藏了,只有程序运行时才会还原。
我们将上面加密身份证号的应用加壳,然后使用工具反编译如下,已经看不到任何源码信息。
攻击者如果想要攻击,第一步就需要脱壳。我这里是只进行简单的加固,对安卓的关键dex文件整体加固,只有在运行的时候才会还原原有dex文件。当然还有其他不同类型的加壳手段。
本文由培训无忧网长沙牛耳教育课程顾问老师整理发布,希望能够对想在长沙参加安卓软件开发培训的学生有所帮助。更多课程信息可关注培训无忧网电脑IT培训频道或添加老师微信:15033336050
注:尊重原创文章,转载请注明出处和链接 https://www.pxwy.cn/news-id-11334.html 违者必究!部分文章来源于网络由培训无忧网编辑部人员整理发布,内容真实性请自行核实或联系我们,了解更多相关资讯请关注手机开发频道查看更多,了解相关专业课程信息您可在线咨询也可免费申请试课。关注官方微信了解更多:150 3333 6050