分享:APK高级保护方法解析(一)
来源:互联网 发布:网络教育会计要考什么 编辑:程序博客网 时间:2024/06/05 15:25
查天气、找美食、玩游戏、买电影票、网上购物……安装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高级保护方法解析(一)
- 分享:APK高级保护方法解析(二)
- 分享:APK高级保护方法解析(三)
- 读-爱加密分享:APK高级保护方法解析(一)
- 读-爱加密分享:APK高级保护方法解析(一)
- 读.爱加密分享:APK高级保护方法解析(二)
- APK保护方法之:代码高级混淆
- APK自我保护方法[转载]
- 浅谈:APK混淆保护解析,如何保护APP应用安全
- APK动态加载框架解析(一)
- apk文件结构解析一
- 容器模式插件(一)——解析APK
- APK动态加载框架(DL)解析(一)
- 分享几个avd安装apk的方法!
- 变压器保护(一)
- 进程保护(一)
- apkprotect(免费android代码混淆、加密保护工具) Android中的Apk的加固(加壳)原理解析和实现
- unix环境变量高级编程(一):erron变量解析
- TIANKENG’s restaurant
- Gray Code
- ArcGis for android 加载tpk离线文件(http://blog.csdn.net/vpingchangxin/article/details/8778869)
- hdu 4893 线段树+二分fib
- Spring AOP(面向切面编程)【Spring AOP的技术基础】
- 分享:APK高级保护方法解析(一)
- 关于二进制补码
- 把字符串转换为整数
- Business Rules(From Wiki)
- java.util.RandomAccessSubList cannot be cast to java.util.ArrayList解决办法
- 山东理工OJ【2117】数据结构实验之链表二:逆序建立链表
- 分析碳素钢与合金钢的区别是什么?
- hdu 4893 Wow! Such Sequence! (线段树+ 心得)
- HTTP工作原理