分享:APK高级保护方法解析(一)

查天气、找美食、玩游戏、买电影票、网上购物……安装APP后,手机变成“百事通”。不过,智能手机越来越“聪明”,也越来越不安全,病毒感染、垃圾短信、隐私泄露等关乎手机用户切身利益的问题频发。保护手机安全,不仅需要用户到正规官网下载APP,更重要的是开发者要做好APK安全保护工作。                      
http://write.blog.csdn.net/postedit

下面小编就分享一下APK高级保护的方法——运行时验证

运行时验证,主要是指在代码启动的时候本地获取签名信息,然后对签名信息进行检验来判断自己的应用是否是正版,如果签名信息不是正版则提示盗版或者直接崩溃。

它的原理:APK的唯一识别是根据包名+签名,包名信息是写死在Android Manifest.xml里面的,但是签名则是与APK绑定的,一旦APK被反编译后签名会自动消失。APK的签名需要签名文件,签名文件的md5值基本上是无法伪造成一样的。

签名验证的方法也可以细分为3种:

1) Java 层验证

获取签名信息和验证的方法都写在android 的java层。这种保护方法保护的意义并不大,因为反编译出源码后通过关键字搜索很快就能够找到验证的代码块,稍微一修改这验证保护就完全无效了。

2) 服务器验证

在android 的java层获取签名信息,上传服务器在服务端进行签名然后返回验证结果。这种保护还不如在纯java层验证有用,一旦没有网络验证保护就无效了。用android方法获取的签名信息用java方法也可以获取,验证存放在服务器上也是为了把保护正确的签名信息值,但是保护的意义其实没有任何作用,同样破解后全局搜索关键字然后伪造一个正确的签名信息就可完美破解了。

3) NDK技术底层获取签名和验证

通过把Context,Activity,PackageManager,PackageInfo四个对象中的一个作为参数参入底层,在底层获取签名信息并验证。因为获取和验证的方法都封闭在更安全的so库里面,能够起到一定意义上的保护作用。不过通过java层的hook技术一样可以把这种保护完美破解。但是相比于前两种,此保护的意义和价值就更大了。

再来看一下爱加密(www.ijiami.cn)的APK保护方法,它采用指纹校验保护APK中的文件。加密后,APK中所有的文件都对应一个唯一的指纹,每次运行时,APK内部会再次进行指纹生成,如果生成的指纹和原本指纹不相同,则判断为被二次打包过的APK,程序就会自动退出或直接崩溃。该方法可以防止资源文件、主配置文件被修改或删除等操作,完全保证APK的安全。

分享:APK高级保护方法解析(一)

时间: 2024-08-07 00:23:52

分享:APK高级保护方法解析(一)的相关文章

分享:APK高级保护方法解析(二)

F-Secure在2013下半年威胁研究报告中称,Android手机恶意软件占所有手机恶意软件的97%,比2012年的79%上升了18%,仅从这些数据来看,就知道Android用户的安全环境是多么糟糕.解决这些问题,需要开发者对自己的APK做好安全保护,防止被恶意篡改.二次打包及盗版. 下面小编就接着分享一下APK高级保护的第二种方法--文件夹混淆 文件夹混淆主要指的是利用Windows,Linux,Android 三个系统环境下的文件夹名的特殊性来对源码文件夹进行混淆,让混淆后的文件夹在Win

分享:APK高级保护方法解析(三)

刷朋友圈.玩游戏.看新闻,智能手机正在以我们无法想象的速度飞快发展,但是随之而来的安全问题也越来越引人关注,APP二次打包.反编译.盗版的现象屡见不鲜,因此需要对APK进行加固保护. 目前市面上常见的APK保护方式主要有图片故意破坏.伪加密.APK包破坏,但是这些方式的保护效果都存在局限性:图片故意破坏在老版本的APK tool上面可行,在最新版本的APK tool就不可行:伪加密的加密方式和解密方式也早已公布导致它的安全程度大大降低:APK包破坏会在个别市场不能识别而导致不能上传,并且使用压缩

清除浮动方法解析

清除浮动方法解析 清除浮动带来的额外影响 如果对于浮动不熟悉的同学,可以看看介绍float的文章.传送门:CSS float 我们知道,在一个父元素内如果遇到某个浮动元素,此时父元素的高度会发生塌陷.针对父元素高度塌陷的问题,现在已经有了很多的解决方案.针对每一个方案,我们来进行深度的剖析. 添加空块级元素 这种方法比较容易,但是要注意的是这个空元素必须是一个块级元素,不能是行内元素或者是行内块元素.缺点就是多了一些没有意义的标签.代码如下. //HTML <div class="cont

用原始方法解析复杂字符串,json一定要用JsonMapper么?

转自数据之巅原文用原始方法解析复杂字符串,json一定要用JsonMapper么? 阅读目录 1.不规则非json字符串 2.键值对字符串分割函数 3.复杂Json格式的字符串 4.标准的json格式 5.总结 经常采集数据,肯定会碰到解析字符串,包括整个页面的html,或者json以及一些不标准的json格式... 以前用json序列化,有时候需要实体类,有的时候没有,比较麻烦,听说可以用JsonMapper,解析为字典格式.不过没用过,习惯了用最原始的方法来解析字符串,所以这里分享几个解析的

Javascript创建对象几种方法解析

Javascript创建对象几种方法解析 Javascript面向对象编程一直是面试中的重点,将自己的理解整理如下,主要参考<Javascript高级程序设计 第三版>,欢迎批评指正. 通过字面量形式,创建对象: var person_1 = { name: "userName", age: 20 } 工厂模式创建对象 通过一个构造函数接收参数的方式构造对象,可无数次调用这个函数,通过改变参数构造不同的对象 function createPerson(name,age){

微信内置浏览器直接下载APK的解决方法

最近很多朋友问我微信内置浏览器直接下载APK有没有什么解决办法?那么今天我就跟大家分享一下有关微信内直接下载APK的解决方法.微信作为一个通讯平台,使用人数一直稳居第一.也正因如此,微信成为了目前最具有营销价值和推广产品的渠道之一.但是使用过微信的人都知道,在微信里面,用户是不能直接下载APK的.原因很简单,腾讯为了自身利益,在微信中屏蔽了外来下载链接.最简单的解决方法,在微信中打开第三方链接或下载apk需要用户通过点击"微信右上角的三个点"然后选择在浏览器里面打开,如下图 就是因为这

Python字典高级使用方法汇总

Python字典高级使用方法汇总 字典(dictionary)是python中的一种非常灵活和强大的数据结构,可以完成很多操作.本文总结了一些除了基本的初始化.赋值.取值之外的常用的字典使用方法. 字典基础参考: [1]:http://www.w3cschool.cc/python/python-dictionary.html [2]:http://www.111cn.net/phper/python/56355.htm [3]:http://skyfen.iteye.com/blog/5675

【Android 多媒体开发】 MediaPlayer 状态机 接口 方法 解析

作者 : 韩曙亮 转载请著名出处 :  http://blog.csdn.net/shulianghan/article/details/38487967 一. MediaPlayer 状态机 介绍 Android MediaPlayer 状态即图例 : 1. Idle (闲置) 状态 和 End (结束) 状态 MediaPlayer 对象声明周期 : 从 Idle 到 End 状态就是 MediaPlayer 整个生命周期; -- 生命周期開始 : 进入 Idle (闲置) 状态; -- 生

用json方法解析webqq好友列表文本

本节课主要讲解了用json方法解析webqq好友列表文本,并显示在超级列表框里.相信大家看完本节课,会对json格式文本的解析有更深层次的理解. 用json方法解析webqq好友列表文本,布布扣,bubuko.com