近几年来,无线平台特别是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. Error:Execution failed for task ':clean'. > Unable to delete directory :\build\intermediates (转)

    第一种方法: build文件夹,可以使用360文件粉碎机删除,然后重启Android Studio即可! 转自 第二种方法: 进入studio,进入settings,搜索instant run,进入该 ...

  2. C#改善程序的50种方法

    作者: suyan010203  来源: 博客园  发布时间: 2011-07-09 14:47  阅读: 11976 次  推荐: 8   原文链接   [收藏] 从去年找工作以来,都没什么时间写博 ...

  3. MsSQLserver中修改字段值系统自动生成的脚本

    主要参考一下脚本的实现思路: ①创建临时表 ②创建临时表 ③向临时表插入数据 ④删除原表 ⑤临时表改名 /* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之 ...

  4. VIew-CoordinatorLayout 笔记

    CoordinatorLayout 协调者:一般会是两个控件,一个Dependency一个child ,CoordinatorLayout的主要功能就是协调这两个控件,使child跟随Dependen ...

  5. 给mac配置adb 路径

    给mac配置adb 路径 (1)找到对应的adb 所在路径 /Users/***/Library/Android/sdk/platform-tools (2)启动终端,输入 cd $Home (3)输 ...

  6. tornado学习笔记18 _RequestDispatcher 请求分发器

    根据Application的配置,主要负责将客户端的请求分发到具体的RequestHandler.这个类实现了HTTPMessageDelegate接口. 18.1 构造函数 定义: def __in ...

  7. 不错的 iOS 工具

    1.LSUnusedResources,移除不用图片资源

  8. 基础3.Jquery操作Dom

                  1 内部插入节点 <body> <ul id="city"> <li id="bj" name=&qu ...

  9. 基于synchronized 或 ReadWriteLock实现 简单缓存机制

    package cn.xxx.xxx; import java.util.HashMap; import java.util.Map; import java.util.concurrent.lock ...

  10. [field:picname/]和[field:litpic/]区别

    显示出二级栏目及以下的所有图片(包含三级栏目的) <ul class="incps"> {dede:arclist row=9 col="3" ty ...