好吧,我正在努力为我的 Java 类文件添加安全性。我不希望它被反编译。所以我所做的是创建一个登录系统,java 应用程序通过网络请求检查它。如果登录信息正确,那么它将运行脚本。但是,我想进一步提高安全性并在线托管类文件。
如何让它下载并运行在线托管文件?
此外,当应用程序/脚本停止运行或关闭时,.class 文件将被删除。
我更喜欢不需要下载文件的地方,只需从在线服务器获取并编译/运行即可。
最佳答案
让我们回顾一下你已经做过的事情,以及你打算做的事情,看看它们是否真的有效:
- 询问密码。这很容易被击败:
- 捕获类文件。
- 反编译它。
- 确定进行远程调用的位置,进行登录检查,并检查响应。
- 修改字节码以删除所有这些内容。
- 与其安装类文件,不如按需下载并在完成后将其删除。也很容易打败。
- 捕获下载文件的网络请求。
- 使用(例如)
curl
或wget
重放请求并捕获下载的类文件。 - 按上述步骤进行。
而且变体也相对容易打败:
- 混淆最终总是可以通过手动反编译和/或使用调试器运行字节码来解决。
- 使用一次性 key 或其他方式进行下载可以通过对程序进行逆向工程并在使用前提取一次性 key 来破解。
- 加密字节码可能会失败,因为 JVM 必须在某些时候以解密形式处理字节码。因此,字节码的解密方法必须嵌入代码中……可以进行逆向工程。
底线是,不可能阻止技术娴熟且意志坚定的人攻破依赖于对控制其自己的执行平台的用户保密的安全方案。
您能做的最好的事情就是阻止低技能的攻击者,并减缓熟练的攻击者。您需要问问自己……真的值得付出努力吗?
(注意:无论你使用什么实现语言,你都会遇到同样的问题。)
关于java - 下载 Java 类文件并运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16115229/