android 防动态调试,Android应用安全与校验之反动态调试
是不是有很多初学者认为没有拿到源码就不可以调试Android应用了?不是这样子的。只要通过反编译拿到smali代码工程,再加上smalidea调试神器,分分钟就可以在Android Studio中调试应用。即便核心代码被放到了JNI层,我们也可以使用IDA Pro继续调试,而且实例开发中能放进JNI层实现的核心代码实在有限。为了对抗动态调试,可以考虑在源码中随意穿插相关的检测代码,在检测到动态调试
是不是有很多初学者认为没有拿到源码就不可以调试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);
}
}
}
这只是一个简单的例子,市面上还有很多为了加固产品做出的动态调试对抗措施,就希望大家自己去发掘了。
网易易盾是国内领先的数字内容风控服务商,依托网易二十余年的先进技术和一线实践经验沉淀,为客户提供专业可靠的安全服务,涵盖内容安全、业务安全、应用安全、安全专家服务四大领域,全方位保障客户业务合规、稳健和安全运营。
更多推荐


所有评论(0)