Flutter:检查是否附加了 Dart 调试器

问题描述 投票:0回答:1

安全团队希望我使用预防技术来阻止调试器连接到应用程序。

对于 Android,可以使用 android.os.Debug 类的 isDebuggerConnected 方法来完成。

对于iOS,可以使用PT_DENY_ATTACH来实现,这确保没有调试器可以附加到名为“ptrace”的进程。

目的是在检测到应用程序附加了调试器时终止应用程序。

我已经尝试过,但我不确定这是否是正确的方法,如下:

至少对于 Android,在 MainActivity 文件中:

import io.flutter.embedding.android.FlutterActivity
import android.os.Debug
import android.util.Log

class MainActivity: FlutterActivity() {
    override fun onResume() {
        super.onResume()
        Log.i("Kotlin lifeCycle", "onResume")
        val isBeingDebugged: Boolean = android.os.Debug.isDebuggerConnected()
        Log.i("Kotlin lifeCycle onResume", "isBeingDebugged: " + isBeingDebugged)
    }
}

但是我总是得到: isBeingDebugged: false

我尝试过 onCreate、onResume、生命周期方法,但这些方法并不总是被执行。

有没有办法在 Dart 类中使用这个“android.os.Debug”类及其方法以更受控的方式进行此检查?

android flutter application-security
1个回答
0
投票

您的代码检查是否附加了本机和/或 Java 调试器,而不是检查是否附加了 Dart 调试器。

在撰写本文时,即 2024/10,Dart 和/或 Flutter 本身无法检查调试器是否已附加。

但是,您可以等待调试器附加,例如:

import 'dart:developer' as developer;

static void waitForDebugger() {
  developer.debugger(
    message: "waitForDebugger was called at:\n${StackTrace.current}");
}
© www.soinside.com 2019 - 2024. All rights reserved.