近几年来,无线平台特别是Android平台的安全逐渐成为各厂商关注的重点。各种新的思路和玩法层出不穷。所以,笔者基于前一段时间的学习和整理,写了这系列关于Android应用安全和保护的文章。

这5篇文章主要关注客户端代码和数据的保护,介绍了几种针对Android应用的逆向分析、攻击和防护的方法。内容比较浅显,适合没有Android安全研究背景的同学入门和科普阅读。

无线端应用对抗的出发点和背景

根本上来说,手机客户端是完全控制在使用者手上的,是不可信的,不应该依靠客户端来实现任何安全、逻辑、业务相关的控制。客户端应该是极“瘦”的,不做任何安全相关的逻辑上的操作和判断,不存储敏感信息,甚至像浏览器一样简单,所有逻辑都由服务端处理然后下发结果。

1.为了用户体验,本地必须保存登陆者的认证信息,避免每次打开都需要输入密码登录

2.为了用户体验和减少服务器负载,展示给用户的页面大多需要本地绘制

3.有一部分安全逻辑必须由本地控制,如本地手势密码的设置和验证

所以必须要赋予本地客户端部分安全相关和逻辑控制相关的功能。而这些功能和逻辑一旦在本地客户端实现,就一定会面临着请求伪造、逻辑篡改、代码泄露等的风险。(可以类比于B/S架构中的以Js为代表的本地脚本:Js在本地运行,可能会被修改、注入、绕过,Js代码会被攻击者直接看到)。

不过好在安全本身就不是绝对的,是和场景和价值结合起来讨论的。如果能通过一些方法,让应用分析者分析应用的难度提升到一个非常高的水平,或者说让应用分析者分析的过程消耗的资源大于其成功之后获得的回报,再或者说是让应用逆向分析、攻击者获得的成果对用户的资金和安全感的造成的影响很小到可以忽略的话,我们也可以认为是安全的。

无线客户端分析和保护的出发点就是基于上述背景。实现逻辑的控制和绕过,敏感数据的加密和窃取等。在应用攻防中,双方各有优劣。无线应用因为自身所能做的事情有限,在防御中是处于劣势地位。

攻防

攻击者可以使用root权限,可以使用特殊构造的操作系统(TaintDroid等),可以获取并修改应用的动态代码(Xposed,cydia substrate)、系统的环境(Xposed),可以修改重打包应用的静态代码(smali/baksmali/dex2jar)。

而在在防御中,开发者为了保护自己的应用,也相应采取了各种方法,把自己应用的安全性寄托在了各种地方。

1.寄托于破坏攻击者的工具。

2.寄托在java层代码逆向、调试、阅读的难度和java自身的机制上。

3.寄托在Native层(c/c++)代码逆向、调试、阅读的难度上。

这就分别对应了无线客户端攻防的三个维度。

一般而言,对于无线客户端的安全攻防上,企业或开发者由于精力有限可能无法满足应用的安全需求,如鲠在喉般的遏制着应用的健康发展。

作者:纳池@阿里移动安全,更多安全技术文章,请点击这里

浅谈Android应用保护(零):出发点和背景的更多相关文章

  1. 浅谈Android应用保护(一):Android应用逆向的基本方法

    对于未进行保护的Android应用,有很多方法和思路对其进行逆向分析和攻击.使用一些基本的方法,就可以打破对应用安全非常重要的机密性和完整性,实现获取其内部代码.数据,修改其代码逻辑和机制等操作.这篇 ...

  2. 浅谈android代码保护技术_ 加固

    浅谈android代码保护技术_加固 导语 我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服.虽然我们混淆,做到native层,但 ...

  3. 浅谈android代码保护技术_加固

    可看原文: http://www.cnblogs.com/jiaoxiake/p/6536824.html 导语 我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结 ...

  4. 浅谈Android保护技术__代码混淆

    浅谈Android保护技术__代码混淆   代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元 ...

  5. 安卓开发_浅谈Android动画(四)

    Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1.  ValueAnimator 基本属 ...

  6. 浅谈Android应用性能之内存

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 文/ jaunty [博主导读]在Android开发中,不免会遇到许多OOM现象,一方面可能是由于开 ...

  7. 浅谈Android五大布局

    Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLay ...

  8. [转]浅谈Android五大布局(二)——RelativeLayout和TableLayout

    在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局Relati ...

  9. [转]浅谈Android五大布局(一)——LinearLayout、FrameLayout和AbsoulteLayout

    Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLay ...

随机推荐

  1. Enterprise Achitect使用与类的关系的简单介绍

    本文作为Enterprise Achitect初步使用,另外也是类图基本介绍,是设计模式的基础.  类的关系有泛化(Generalization).实现(Realization).依赖(Depende ...

  2. 14.linux按键驱动程序(一)

    按键驱动程序 本文学习主要包含按键硬件的实现.中断分层管理.按键定时器去抖.阻塞性驱动程序设计.这里面需要使用到混杂设备驱动和中断处理程序的内容. 一.创建按键混杂设备驱动模型 int key_ope ...

  3. Bootstrap UI 编辑器

    1. BootSwatchr BootSwatchr 是由 Drew Strickiand 独立开发和维护的,是唯一支持从右到左语言显示的 Bootstrap 自定义构建工具,这也是它的特色之一.Bo ...

  4. 蓝桥杯算法提高 P1001(大数乘法)

      算法提高 P1001   时间限制:1.0s   内存限制:256.0MB   当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法. 具体 ...

  5. vue2.0有哪些变化

    vue2.0之后有哪些变化: 1.每个组件模板template,不再支持片段代码 之前: <template> <h3>vue-router+vue-loader</h3 ...

  6. Good Bye 2016 - B

    题目链接:http://codeforces.com/contest/750/problem/B 题意:地球的子午线长度为40000,两极点的距离为20000.现在你从北极出发,按照题目输入方式来走. ...

  7. python 小程序 查找最大的python文件

    使用os.path模块方法介绍 1. 扫描标准库目录     I 通过glob模块遍历一个目录下面的所有文件,glob接收shell中常用文件名模式语法:"?"代表任何单个字符,* ...

  8. 我的Python学习之路 Python的初识与准备工作

    注:文笔不好,不喜勿喷,当个段子看看就好 一.初识Python 第一次听到Python是在2016年大概暑假 时候(即将大三),因为对黑客技术的蜜汁热爱(虽然自己并不会),在玄魂大大的公众微信号中看到 ...

  9. Vue - 过滤器

    1.内部过滤器 1):字母操作: ---- 针对字符串 A:capitalize B:uppercase C:lowercase 2):json过ingfy滤器,可将表达式的值转化为Json字符串,本 ...

  10. import sun.net.www.MimeTable报错

    我原以为是要导什么jar包,仔细一看是 Access restriction: The type * is not accessible due to restriction on required ...