赞
踩
针对 Android 应用 进行 动态调试攻击 , 攻击者利用 Frida、Xposed 等调试工具 , 对 Android 应用进行 运行时 分析和修改 , 从而获取应用的 关键函数、核心逻辑 和 敏感数据 等信息 ;
Frida、Xposed 动态调试攻击应对措施 :
在 Android 应用程序中 , 可以使用 Debug.isDebuggerConnected 方法来检测当前是否有调试器连接 , 这个方法返回一个布尔值 , 指示调试器是否已连接到应用程序 , 该函数的函数原型如下 :
public final class Debug {
/**
* Determine if a debugger is currently attached.
*/
public static boolean isDebuggerConnected() {
return VMDebug.isDebuggerConnected();
}
具体实践 : 调用 Debug.isDebuggerConnected 函数查询是否被动态调试 , 在 Application 的 onCreate 函数中调用该函数 , 判定是否处于调试模式 ,
完整代码示例 :
import android.os.Debug import android.os.Process.myPid import kotlin.system.exitProcess object DebugUtils { // 防止该类被实例化,私有构造方法 private fun DebugUtils() { throw AssertionError("Utility class cannot be instantiated") } /** * 检测是否处于调试模式,并处理动态调试检测 */ fun isDynamicDebug() { // 如果不处于调试模式,继续执行 if (!BuildConfig.DEBUG) { // 检查是否有调试器连接 if (Debug.isDebuggerConnected()) { // 获取当前进程的 PID val currentPid = myPid() // 结束当前进程 Process.killProcess(currentPid) // 强制退出虚拟机 exitProcess(1) } } } }
在 自定义 Application 中 的 onCreate 函数中 , 调用上述 DebugUtils.isDynamicDebug 函数 ;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。