有没有办法从正在调试的程序中检测是否使用了调试器?
Is there a way to detect if the debugger has been used, from within the program being debugged?
我在我的程序中进行了内部一致性检查,以验证具有相同输入的相同代码的两个 运行 是否给出相同的结果。这个想法是在开发过程中检测未说明的输入。如果检查失败,它会进入调试器。
在调试器中执行某些其他操作之前,这一切都很好而且花花公子 - 尤其是 编辑并继续 - 在执行过程中修改了一个 运行。我想检测到这一点并禁用一致性检查。
显然因为检查本身需要调试器,我不能做一些简单的检查 Debugger.IsAttached
。
我唯一能想到的就是使用某种计时方式(这似乎是个糟糕的主意)。如果完成一项任务所需的时间比平时高出几个数量级,则可能表明某些东西正在被篡改。如果涉及磁盘 reading/writing 之类的东西,这可能会导致很多误报。同样,这不是一个好主意,只是一个想法
我在我的程序中进行了内部一致性检查,以验证具有相同输入的相同代码的两个 运行 是否给出相同的结果。这个想法是在开发过程中检测未说明的输入。如果检查失败,它会进入调试器。
在调试器中执行某些其他操作之前,这一切都很好而且花花公子 - 尤其是 编辑并继续 - 在执行过程中修改了一个 运行。我想检测到这一点并禁用一致性检查。
显然因为检查本身需要调试器,我不能做一些简单的检查 Debugger.IsAttached
。
我唯一能想到的就是使用某种计时方式(这似乎是个糟糕的主意)。如果完成一项任务所需的时间比平时高出几个数量级,则可能表明某些东西正在被篡改。如果涉及磁盘 reading/writing 之类的东西,这可能会导致很多误报。同样,这不是一个好主意,只是一个想法