zoukankan      html  css  js  c++  java
  • (爱加密系列教程十六) 浅谈现有的防止反编译技术之一

          Android app的安全越来越受人重视,大部分市场上存放的apk已经经过各种加密来防止反编译。现在我们就来浅谈一下市面上已经过加密防止反编译的apk和它是如何防止反编译的方法和这些方法的可靠性吧。

    捕鱼达人2

          各大市场游戏下载排行都名列前茅、下载实数不下百万的捕鱼达人2是怎么做的安全保护来防止二次打包呢?

          在手机内部获取data/app下的apk 文件对象通过java的方式来获取签名MD5值。然后再本地对这个签名MD5值进行验证。因为此验证是在so库里面来进行并且在非主线程里面进行验证,没有卡主线程很难让破解的人发现它加密的主要方法具体在哪,但对下的验证的方法带有apk的路径的参数让它也有一定的漏洞。只需要伪造一个路径(正版apk路径)传递给so库就可以让其保护无效。

          总结:运行在so库里面、用java获取签名信息的方法、非主线程进行验证大大增加此方法的安全作用,但是在java层提供的native方法依旧有一个String类型的参数让其很容易伪造参数来破坏保护。

    神庙逃亡2

          依据是各大市场炙手可热、下载量都极高的游戏神庙逃亡2,因为用户量极高所有它的安全要求会更高。那神庙逃亡2是如何做安全保护来防止二次打包的呢?

            如上图可以看到,此游戏在验证签名信息非官方的情况下会弹出模式窗体提示给用户此APK是盗版软件。一切验证都是在java层通过android提供的方法来获取签名信息上传服务器再服务器来进行验证,通过服务器的返回值来让客户端软件知道自身是否是正版软件。此方法可以说作用不大,首先是无网络的情况下是完全无法进行验证;其次是所有验证方法都在java层让它的可靠性大大降低,很容易就反编译到源码修改代码让其保护作用基本无效。

           总结:本地java层使用android方法来获取签名信息,上传服务器进行验证,通过服务器反馈来告知软件是否官方版;可利用漏洞太多,保护作用意义基本为零。

     

     

    更多内容,期待您的探索,请关注爱加密,让您精彩不断!

    爱加密官方地址:http://www.ijiami.cn/

     

     

     

     

     

     

  • 相关阅读:
    服务器编程入门(12) 守护进程
    Effective C++(10) 重载赋值操作符时,返回该对象的引用(retrun *this)
    C++ Primer(6) 模板和泛型编程(上)
    Effective C++(9) 构造函数调用virtual函数会发生什么
    Android开发(7)数据库和Content Provider
    Effective C++(7) 为多态基类声明virtual析构函数 or Not
    Effective C++(6) 如何拒绝编译器的自动生成函数
    Effective C++(4) 确定对象被使用前已先被初始化
    Effective C++(5) 了解C++默默地编写并调用哪些函数
    Effective C++(1-2) 编译器替换预处理器
  • 原文地址:https://www.cnblogs.com/ijiami/p/3453509.html
Copyright © 2011-2022 走看看