Android软件安全
Android APK的相关安全。
摘要: 从最近几年开始,做平台的公司都流行起Open API。这是一个非常好的理念,也受到广大开发者的欢迎。如今,开发一款软件,你可以很容易地集成微博、微信、人人网等流行社交媒介的分享功能,做一个社交应用变得越来越简单。
主流社交媒介要集成到第三方应用中,最重要的入口就是安全便捷的授权认证系统。让用户在享受一键分享和各种社交乐趣的同时,又不用担心帐号安全和隐私泄露等问题。而对于一些有特殊目的的组织或个人来说,攻占这个授权认证系统意味着自己获取了信息传播的入口和渠道,数量庞大地社交入口往往能带来巨大的社会效应。所以,这个入口就成了软件安全攻防双方的必争之地。
而本文所要讲的就是当前最为流行的新浪微博Android客户端SSO授权认证入口的一个安全缺陷。此缺陷使得第三方APK在一定条件下可以不通过授权,在不需要人为操作的情况下就可以操作Android手机用户的微博。包括关注、评论、发微博等OpenAPI中提供的功能。
阅读全文
摘要: 最近微信出了5.0,新增了游戏中心,并内置了一个经典游戏《飞机大战》。游戏其实很简单,但由于可以和好友一起竞争排名,一时间受到大家的追捧,小伙伴们进入“全民打飞机”时代。
ios 版出来不久就被破解出了无敌模式。Android版出后好像一直风平浪静。周末无事,加之看雪zmworm版主邀请,于是花了一天的工夫研究了下。也出了个Android版的无敌模式增强版。具体来说就是无敌、双排子弹加无限炸弹。当然,这个不是重点,我们的重点当然是技术细节啦!
微信的游戏继承了Android版手机QQ游戏中心的思想,也采用插件动态加载方式。具体来说,就是插件及游戏以jar包形式存在,jar包中有classes.dex及其他资源文件,在运行时动态加载资源及classes.dex代码。这样的好处是灵活管理,易于扩展。以后更多的游戏只要上架到微信的服务器,用户就能在微信应用内部下载、安装、运行。具体原理可以参考我2011年的一篇文章《Android类动态加载技术》 。
当然,那篇文章讲的只是基本原理,而微信在代码动态加载方面则走得更远。针对插件的管理
阅读全文
摘要: Bluebox Security在7月3号的时候,在官网上发布了一个据称99% Android机器都有的一个漏洞。国内最早在4号开始有媒体报道,并持续升温。该漏洞可使攻击者在不更改Android应用程序的开发者签名的情况下,对APK代码进行修改。并且,这个漏洞涉及到从1.6版本至今全部的Android版本,换句话说,这4年中生产的9亿设备,即当今市场上99%的Android产品都面临这一问题。
看到这样的报道,一开始我和我的小伙伴们都不敢相信。因为签名机制用了这么多年,多少大脑袋厚眼镜的天才们想要颠覆都没搞定,Bluebox Security怎么可能搞定的呢?不过,由于好奇心驱使,我开始查看Bluebox Security官方的说法:《UNCOVERING ANDROID MASTER KEY THAT MAKES 99% OF DEVICES VULNERABLE》,我意识到,这个问题应该不是签名机制本身的问题,而是Android安装APK过程中的校验存在漏洞。
如果是APK安装校验签名的漏洞,而这个Bug又从1.6开始就有,那
阅读全文
摘要: Android应用开发在一般情况下,常规的开发方式和代码架构就能满足我们的普通需求。但是有些特殊问题,常常引发我们进一步的沉思。我们从沉思中产生顿悟,从而产生新的技术形式。
如何开发一个可以自定义控件的Android应用?就像eclipse一样,可以动态加载插件;如何让Android应用执行服务器上的不可预知的代码?如何对Android应用加密,而只在执行时自解密,从而防止被破解?……
熟悉Java技术的朋友,可能意识到,我们需要使用类加载器灵活的加载执行的类。这在Java里已经算是一项比较成熟的技术了,但是在Android中,我们大多数人都还非常陌生。
阅读全文
摘要: 发布过Android应用的朋友们应该都知道,Android APK的发布是需要签名的。签名机制在Android应用和框架中有着十分重要的作用。
例如,Android系统禁止更新安装签名不一致的APK;如果应用需要使用system权限,必须保证APK签名与Framework签名一致,等等。在《APK Crack》一文中,我们了解到,要破解一个APK,必然需要重新对APK进行签名。而这个签名,一般情况无法再与APK原先的签名保持一致。(除非APK原作者的私钥泄漏,那已经是另一个层次的软件安全问题了。)
简单地说,签名机制标明了APK的发行机构。因此,站在软件安全的角度,我们就可以通过比对APK的签名情况,判断此APK是否由“官方”发行,而不是被破解篡改过重新签名打包的“盗版软件”。
阅读全文
摘要: ProGuard是一个SourceForge上非常知名的开源项目。官网网址是:http://proguard.sourceforge.net/。
Java的字节码一般是非常容易反编译的。为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。ProGuard的主要作用就是混淆。当然它还能对字节码进行缩减体积、优化等,但那些对于我们来说都算是次要的功能。
引用ProGuard官方的一段话来介绍就是:
ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining cla
阅读全文
摘要: 所谓APK指的是Android操作系统的应用程序安装文件。所谓Crack,简单地理解为“破解”。我具体指的是反编译APK文件进行汇编级的代码分析,并修改或插入自己的代码,重新签名打包为APK文件,以达到改变程序原有行为的目的。
由以上的说明可知,我们要Crack一个APK文件,主要流程有三步:反编译、代码分析、重新打包签名。
阅读全文