我需要阻止调试器应用程序调试我的代码。 为此,我在类的构造函数中使用了以下代码:
RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
java.util.List<String> arguments = RuntimemxBean.getInputArguments();
//System.setErr(null);
for ( String str : arguments)
{
System.out.println("\n"+str);
if ( str.contains("jdwp") || str.contains("debug"));
System.exit(1);
}
请确认这段代码是否足够,或者仍然需要更聪明的方法(认为应该有!)来做到这一点... 我已经使用 JDB、Eclipse IDE、Netbeans 等调试器编写了这段代码。
最佳答案
您为防止调试而添加的任何代码都可能被准备修改您的 JAR 文件的人禁用。您能做的最好的事情就是使逆向工程变得艰苦。您无法通过任何可用的技术手段阻止它,包括混淆、加密的 JAR 文件甚至基于硬件的方法(如 TPM)。
防止人们对您的软件进行逆向工程的唯一方法是永远在物理上安全且能够抵御基于网络的入侵的机器上存储或运行它。
关于java - 如何避免在java中调试代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2371104/