Java 检测VirtualMachine.attach()/VirtualMachine.loadAgent

Java 检测VirtualMachine.attach()/VirtualMachine.loadAgent,java,Java,我试图停止(或至少检测)其他程序注入我的。他们是这样做的: VirtualMachineDescriptor vmd = /* my program */; VirtalMachine vm = VirtualMachine.attach(vmd); vm.loadAgent(new File('custom-jar.jar')); /* their modified code */ vm.detach(); 根据链接: 使用Java Attach API的进程必须由与目标进程相同的UNIX用

我试图停止(或至少检测)其他程序注入我的。他们是这样做的:

VirtualMachineDescriptor vmd = /* my program */;
VirtalMachine vm = VirtualMachine.attach(vmd);
vm.loadAgent(new File('custom-jar.jar')); /* their modified code */
vm.detach();
根据链接:

使用Java Attach API的进程必须由与目标进程相同的UNIX用户ID拥有。此约束确保只有目标进程所有者或根用户可以将其他应用程序附加到目标进程

这意味着:“攻击者”首先可能拥有对运行JVM的系统的完全访问权。我想在保护一个已经被其他人拥有的系统方面真的没有什么可以做的。

根据link:

使用Java Attach API的进程必须由与目标进程相同的UNIX用户ID拥有。此约束确保只有目标进程所有者或根用户可以将其他应用程序附加到目标进程


这意味着:“攻击者”首先可能拥有对运行JVM的系统的完全访问权。我想在保护一个已经被其他人拥有的系统方面真的没有什么可做的。

是的,这是为了防止游戏中的作弊。我知道这很容易绕过,但我的玩家使用免费的公开作弊-我只想保护这些已知的公开程序。如果你不能控制JVM,一切都是可能的。即使你写的代码试图破坏这些代理。。。如何防止编写另一种类型的代理破坏您的新代码?人们如何防止操纵JVM,使其在启动过程中已经受到危害?我想大型游戏公司在自己的服务器上运行游戏是有原因的。如果游戏的所有重要方面“只存在于”客户拥有的系统上。。。从长远来看,没有办法阻止作弊。我知道从长远来看,它不会阻止作弊,但它会阻止我的大部分用户群-因为创建这些作弊的人不会安装包含此代码的我的mod。是的,这是为了防止游戏中的作弊。我知道这很容易绕过,但我的玩家使用免费的公开作弊-我只想保护这些已知的公开程序。如果你不能控制JVM,一切都是可能的。即使你写的代码试图破坏这些代理。。。如何防止编写另一种类型的代理破坏您的新代码?人们如何防止操纵JVM,使其在启动过程中已经受到危害?我想大型游戏公司在自己的服务器上运行游戏是有原因的。如果游戏的所有重要方面“只存在于”客户拥有的系统上。。。从长远来看,没有办法阻止作弊。我知道从长远来看,它不会阻止作弊,但它会阻止我的大部分用户群,因为创建这些作弊的人不会安装包含此代码的mod。