【问题标题】:Is there a way to hide assets from users within my Mac App?有没有办法在我的 Mac 应用程序中向用户隐藏资产?
【发布时间】:2023-03-27 21:28:01
【问题描述】:

我为 Mac 开发了一个简单的应用程序,它使用浏览器窗口来显示一些内容。现在,任何接收应用程序并使用“显示包内容”在查找器中披露内容的人都可以看到资产(图像等)。 有没有办法防止这种情况?我可以使用代码或某些 XCode 函数隐藏或封装它吗?

【问题讨论】:

  • 你能不能以句号开头来命名它们? (目前不在 Mac 上进行测试)。

标签: objective-c swift xcode macos


【解决方案1】:

一种简单的方法是更改​​文件的扩展名,这样系统就不会将它们识别为图像。然后,您必须将图像作为数据加载并在代码中将它们转换为图像,这会有点麻烦。

更严格的解决方案是加密应用程序包中的图像,然后编写一个实用程序函数来加载和解密图像。

【讨论】:

  • 删除扩展名只会让人类更加困难 - 如果您例如,系统仍将打开这些文件并正确显示它们。双击它们。
  • 我建议将扩展名更改为另一种文件类型,这会使系统混淆文件中包含的数据类型。 (这不是一个很好的解决方案,因为如果您知道原始文件类型,绕过它是微不足道的。)
  • 好的...更改名称和扩展名会混淆但不会更改文件的幻数,但请注意,我的只是评论,我同意您的解决方案。
  • 现在我想到了,这里有另一个建议——为什么不把资产放在某个压缩文件中。那会隐藏很多。此外,您可以对 zip 文件进行加密,并且如果您自己进行加密,这里的工具也没有问题。
  • @skaak 这不是一个坏主意。您可能想将其发布为另一个答案。您会让应用程序打开内存中的 zip 文件,还是将它们保存在某个地方?如果您解压缩到磁盘,则用户可以找到解压缩的内容。如果您在内存中解压缩,那么您需要足够的内存来保存所有解压缩的内容,或者您​​需要将您的内容分成多个小到足以放入内存的 zip 文件。
【解决方案2】:

这是另一种选择。

您可以压缩所有资产。使用最简单的方法,例如pkzip 或 gzip 甚至只是 tar 全部。然后你隐藏了很多信息,如果你想更进一步,加密压缩文件很容易,并且有很多库可以包含在你的项目中并用于解压缩。

直接从压缩文件中读取资产应该很容易,但如果您单独需要它们,您可以例如将单个文件/资源​​放入 zip 中,或者您可以将其解压缩。如果您有非常敏感的内容太大而无法放入内存,您甚至可以解压缩到临时空间并在应用退出时将其全部删除。

** 编辑 **

Java 就是这样工作的。 jar 文件只是一个重命名的 zip,它通常包含应用程序所需的所有资源,而且它似乎在那里工作。所以如果那是一个引导性能应该不会太差。

【讨论】:

    猜你喜欢
    • 2023-01-22
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2014-08-19
    • 1970-01-01
    • 2014-04-01
    • 2016-05-29
    相关资源
    最近更新 更多