Java安全类,防止您使用exit(0)终止代码!在哈克朗克
有人能解释一下黑客银行的代码吗Java安全类,防止您使用exit(0)终止代码!在哈克朗克,java,system.exit,Java,System.exit,有人能解释一下黑客银行的代码吗 class DoNotTerminate { public static class ExitTrappedException extends SecurityException { private static final long serialVersionUID = 1; } public static void forbidExit() { final SecurityManager sec
class DoNotTerminate {
public static class ExitTrappedException extends SecurityException {
private static final long serialVersionUID = 1;
}
public static void forbidExit() {
final SecurityManager securityManager = new SecurityManager() {
@Override
public void checkPermission(Permission permission) {
if (permission.getName().contains("exitVM")) {
throw new ExitTrappedException();
}
}
};
System.setSecurityManager(securityManager);
}
}
以下代码将阻止您使用退出(0)终止代码 当程序试图通过调用
System.exit(…)
来停止JVM时,它首先通过询问安全管理器是否授予exitVM
权限来检查此操作是否被允许
您发布的代码将安全管理器替换为自定义安全管理器,该安全管理器在检查exitVM
权限时将抛出ExitTrappedException
那么,发生的情况是:
System.exit(…)
方法询问安全管理器是否允许exitVM
权限
System.exit(…)
不会继续停止JVM,而是将异常传递给调用方;JVM一直在运行