gpt4 book ai didi

java - Java 中操作系统的名称(不是 "os.name")

转载 作者:搜寻专家 更新时间:2023-11-01 00:59:30 25 4
gpt4 key购买 nike

我想知道如何了解运行 jvm 的操作系统类型。它也必须是“安全的”,所以 System.getProperty("os.name") 并不是一个真正的选择,因为它可以通过 -D 指令轻松规避。

我所说的“安全”是指非常容易规避。它适用于桌面应用程序。用户总是可以对代码进行反混淆、反编译、编辑和重新编译,但这比将 -D 传递给 jvm 要难得多。我们想让修补变得不平凡,而不是不可能(因为那是不可能完成的)。

最佳答案

首先,不可能保护代码不被其运行时环境任意操纵。但是为了让它至少难以欺骗你的支票,最好的选择可能是某种基于文件系统的 OS fingerprinting .

File.listRoots()是你的起点;在类 Unix 系统上,它将返回一个包含特征目录(如/etc、/usr 等)的根目录。在 Windows 上,它将返回多个结果,但据我所知,操作系统安装驱动器不一定是 C:,并且特征目录因人而异Windows 版本和语言环境 - 注意不要假定每个人都运行英文版的 Vista。

您可以投入大量工作来识别不同版本的 Windows 和 Linux,以及 BSD 或 MacOS - 一旦它出现,从编译代码中删除检查可能需要更少的工作。

关于java - Java 中操作系统的名称(不是 "os.name"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1293533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com