• Android应用安全与校验之反动态调试

    发布:51Code 时间: 2017-03-16 09:21

  • 是不是有很多初学者认为没有拿到源码就不可以调试Android应用了?不是这样子的。只要通过反编译拿到smali代码工程,再加上smalidea调试神器,分分钟就可以在Android Studio中调试应用。即...

  • 是不是有很多初学者认为没有拿到源码就不可以调试Android应用了?不是这样子的。只要通过反编译拿到smali代码工程,再加上smalidea调试神器,分分钟就可以在Android Studio中调试应用。即便核心代码被放到了JNI层,我们也可以使用IDA Pro继续调试,而且实例开发中能放进JNI层实现的核心代码实在有限。

           为了对抗动态调试,可以考虑在源码中随意穿插相关的检测代码,在检测到动态调试时,直接进程自杀,异常退出虚拟机。

    大致实现如下:
    /**
    *检测动态调试
    */
    public void detectedDynamicDebug(){
           If(!BuildConfig.DEBUG){
                  If(Debug.isDebuggerConnected()){
                     //进程自杀
                     int myPid = android.os.Process.myPid();
                     android.os.Progress.killProcess(myPid);
                     //异常退出虚拟机
                     System.exit(1);
                     }
              }
    }

           这只是一个简单的例子,市面上还有很多为了加固产品做出的动态调试对抗措施,就希望大家自己去发掘了。

  • 上一篇:致程序员:10个迹象表明你编码太久了

    下一篇:Android应用安全与防范之数据保护和资源保护

网站导航
Copyright(C)51Code软件开发网 2003-2018 , 沪ICP备16012939号-1