我正在使用 XNA 4 和 Monogame 开发应用程序。此外,我使用 EasFuscator 来混淆 C# 源代码。是否有可能以及使内容文件夹中的文件名非人类可读的最佳方法是什么?
基本上,像“title_image.xnb”这样的文件名应该自动重命名为“hdRv4EEdx.xnb”(仅作为示例)。不一定需要对内容进行加密。
我正在使用 XNA 4 和 Monogame 开发应用程序。此外,我使用 EasFuscator 来混淆 C# 源代码。是否有可能以及使内容文件夹中的文件名非人类可读的最佳方法是什么?
基本上,像“title_image.xnb”这样的文件名应该自动重命名为“hdRv4EEdx.xnb”(仅作为示例)。不一定需要对内容进行加密。
我知道没有内置的方法可以做到这一点。
您可以创建一个 powershell 脚本,该脚本将递归地遍历您的所有内容文件,然后使用正则表达式在您的代码中查找适当的 Content.Load 函数并用随机生成的哈希替换这些函数。然后,您将运行此脚本作为混淆的一部分。
如果您将所有 Content.Load<> 调用都放在一个文件中,那么编写起来可能会很简单。那么伪代码将类似于:
For All Files in Content directory (and subdirectories, recursively):
String hash = CreateRandomHash()
File.renameTo(hash)
"LoadContent.cs" = "LoadContent.cs".replace("Content.Load<Texture2D>(" + File.original.Name + ")", "Content.Load<Texture2D>(" + hash + ")");
但是,你知道,“伪代码”。:)。这需要一些工作。
为什么不将具有这些名称的所有资源添加到内容管理器中,从代码中您会知道,title_image
如果最终用户打开文件夹,这将是并且不会被最终用户读取。
title_image = Content.Load<Texture2D>("hdRv4EEdx");