近几年来,无线平台特别是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. MySQL的那点事!

    我先简单的介绍下事务:事务必须满足4个条件:1.原子性,2.一致性,3.隔离性,4.持久性. MySQL的事务处理主要有两种方法: 1.用 begin rollback commit 来实现 begi ...

  2. WebStorm 2016.2 破解方法

    http://www.jetbrains.com/ 以前的 http://idea.lanyus.com/ 不能激活了 有帖子说的 http://15.idea.lanyus.com/ http:// ...

  3. Beginning Scala study note(3) Object Orientation in Scala

    1. The three principles of OOP are encapsulation(封装性), inheritance(继承性) and polymorphism(多态性). examp ...

  4. SQL Server中的Merge关键字

    本文转载地址:http://www.cnblogs.com/CareySon/archive/2012/03/07/2383690.html 简介 Merge关键字是一个神奇的DML关键字.它在SQL ...

  5. 光标失去焦点事件 onblur

    onblur="judgeLandCode()" function judgeLandCode(){ $.ajax({ type:'post', dataType:'json', ...

  6. Maven依赖包下载慢--阿里云让你飞

    当用maven下载依赖包的时候,用官方的镜像库,那慢的真是要死要死的.后来在网上搜到英国的库(也是慢的不行),国内的oschina更是直接没法下载呀.不过还好突然发现阿里云也有镜像库,尝试了以下,速度 ...

  7. 使用Android Butterknife

    我之前浏览过android butterknife 的使用 在android studio 中,很惊喜,已经成为一个插件来使用 这个android butterknife 最大的用处,就是直接生成la ...

  8. mac安装java8

    http://stackoverflow.com/questions/24342886/how-to-install-java-8-on-mac brew tap caskroom/cask brew ...

  9. 【转】Oracle 执行计划(Explain Plan) 说明

    转自:http://blog.chinaunix.net/uid-21187846-id-3022916.html       如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQ ...

  10. 实现Myxls设置行高的功能(转)

    MyXLS是一个导出Excel的好工具,速度快,体积小,而且也不用担心使用Com生成Excel时资源释放的问题了.但是作者提供的代码没有设置行高 要实现这个效果,首先需要修改两个文件: 1.Row.c ...