保护资源不被提取?

逆向工程 可执行 爪哇 资源
2021-06-28 15:43:09

我有一个带有资源文件夹的 jar 文件,我已经使用Launch4J.

如何保护我的资源不被使用winzip/提取winrar

3个回答

唯一真正的保护是不交付资源!

只要你把资源交给你,它们就可以被提取出来。这可能很困难,但可以提取它们。

最安全的方法是将资源存储在服务器上并以远程方式访问它们。但是,如果资源在客户端计算机上,则可以从内存中提取它们。

您在这里唯一真正的选择是将资源存储为加密数据并在加载到 java 之前解密它们。您可以将加密数据存储为字节数组,并使用某种异或加密。

这是不安全的,您不应在任何资源文件中存储任何重要的密钥、密码或凭据。

我知道几种防止资源提取/读取的方法:

  1. 加密您的资源并在运行时动态解密它们,而无需编写临时文件。

  2. 从 Internet 加载资源(需要 Internet 连接)。

  3. 破坏资源文件的CRC32,这将导致WinZipWinRAR无法提取您的资源。

  4. \u0000( \x0)设置为文件名前缀。 NUL 终止符将使 WinZip 或 WinRAR 无法解压缩文件(也无法读取文件名)。

然而,这些都没有增加安全性。资源将能够被解密或提取,这些只是防止标准读取/提取的“简单技巧”。但是拥有足够知识的人将能够绕过它们并修复文件。