安卓app保卫发展历程史

安卓app保卫发展历程史

ID:8835130

大小:444.00 KB

页数:5页

时间:2018-04-09

安卓app保卫发展历程史_第1页
安卓app保卫发展历程史_第2页
安卓app保卫发展历程史_第3页
安卓app保卫发展历程史_第4页
安卓app保卫发展历程史_第5页
资源描述:

《安卓app保卫发展历程史》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、很多智能手机用户可能并没有意识到,自己下载在手机中的APP,可能是山寨APP或被破解的官方APP。以游戏“植物大战僵尸”为例,只要在安卓市场搜索“植物大战”关键词,会出现 “植物大战小鸟”、“植物大战小怪兽”、“植物大战害虫”等一系列相关APP。这些APP背后的开发者之间可能没有关系,更与官方APP的软件原始创作者毫无渊源。很明显,Android平台已经成为恶意程序和破解者攻击的众矢之的,于是越来越多的Android开发者开始意识到应用安全的重要性。于是,一场APP反编译和防止APP反编译上演了一场惨烈无比的世纪大战,防止APP反编译也从最

2、初最简单的单一的代码混淆发展成今天越来越成熟的一个体系。下面,就让我为大家介绍一下“防止APP反编译”这位斗士成长的历程。 原始社会时期——代码混淆   最早的应用保护当属代码混淆,谷歌官方发布的sdk中就包含ProGuard这种混淆工具。混淆工具会把你用java语言编写的代码的类名、变量名混淆为自己定义的格式,这样可以增加破解者在破解时阅读难度。   图1是用ProGuard混淆过的dex文件截图,从图中可以看到,左侧的类名大多都变成了a、b等这样自定义字母的形式。在未混淆前,破解者可以根据一个类名叫做HttpGet的文件,大致猜测出它是

3、做httpget相关的。而混淆后,变成了a等自定义类名,破解者无法猜测它的含义,增加了阅读难度。      但代码混淆只是简单的改变类名或者变量的名,只要能找dex,反编译为smali或者java,花些时间还是可以轻松破解的。如果说不用混淆工具我们破解一个apk需要2两天,那么用了这个工具,破解者可能需要4天,只是时间成本增加了。   奴隶社会时期——自我校验   经过漫长的混淆时期,开发者发现他们的应用还是照常被破解。于是新的保护方式又出现了——自我校验。   简单说,自我校验就是在程序中加一些对自己应用的完整性校验,可以借助签名、或计算

4、自己应用dex的md5值等等来完成。有些开发者直接把校验功能加入到dex中,有些则是通过http协议请求相关服务来得到校验。有了这种校验,应用在被二次打包的时候会无法运行。   那这种方法的弊端是什么?举一个有意思的例子。在悬崖的拐弯处都会有一个路标,用来正确指示方向。但如果有人故意搞破坏,把路标指示方向弄反,那开车的人被误导后,顺着错误的方向行驶,就会发生不幸的悲剧。   这个例子的意思是,计算机在执行指令的时候也是按照预先定义好的逻辑(开发者写的)去执行,然而如果破解者对开发者校验的地方近进行了修改,那么计算机也会按照新的逻辑执行,这种

5、保护措施风险很大,所以也就逐渐没落了。   封建社会时期——dex文件变形   经历了两个时代,开发者也逐渐提高了保护技能。于是很多做java出身的开发者,在经过无数日夜的努力下摇身一变成为了c、c++专家。越来越多的逻辑被写入到c层,并且所有的校验也被移到c层,混淆也同样存在。同时,开发者开始对dex文件AndroidManifest文件做变形处理,这样做的好处是既能保证应用能正常运行,也能使一些反编译工具如apktool在反编译时奔溃。由下图可见,apktool在反编译时完全失去了作用。   但对dex文件和manifest文件的变形同

6、样有它的弱点。基本世面上的dex变形都可以通过baksmali来得到smali,这样破解者就可继续分析。而manifset文件格式官方有明确的规范,破解者按照规范去解析,遇到不正确字节可以推敲,最终还是可以将其还原。   资本主义社会时期——混合加密   这是一个移动互联网高速发展的时期,但盗版和二次打包等问题也日益凸显,在这个开放的时期,为了满足开发者保护应用的迫切需要,相继出现了一些基于AndroidAPP加固的第三方产品如梆梆、爱加密、360等,通常他们的基本做法有:   1.Dex保护   (1)隐藏dex文件   既然dex文件中

7、包含了核心逻辑,那么把dex隐藏,再通过另外的方式加载起来,是不是就能达到保护dex的目的了呢?于是这成为一些第三方加固产品保护应用的方式。   他们通过加密甚至压缩(早期是不存在压缩的,只是单纯的加密)方式把dex转换为另外一个文件。而被加固后的apk里面的dex则是那些第三方加固产品用来启动和加载隐藏dex的入口,也就是壳。   (2)对dex文件进行变形   这里所说的变形,不同于封建社会时期提到的变形。这种办法不隐藏dex,而是让dex保留在外面,但是当破解者去分析这个dex的时候,会发现dex里面的内容是不完整的。   (3)对d

8、ex结构进行变形   此类方法是比较复杂的,了解dex结构的人应该很清楚,dex结构中包含DexClassDef、ClassDataItem、DexCode,这些是dalvik虚

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。