我使用XNA 4和Monogame开发应用程序。此外,我使用EasFuscator来混淆C#源代码。是否可能以及将内容文件夹中的文件名设置为非人类可读的最佳方法是什么?
基本上,像“title_image.xnb”这样的文件名应该自动重命名为“hdRv4EEdx.xnb”(仅作为示例)。不一定需要加密内容。
答案 0 :(得分:1)
为什么不将具有这些名称的所有资源添加到内容管理器中,从代码中您将知道这是title_image
,如果他们打开文件夹,将无法从最终用户读取。
title_image = Content.Load<Texture2D>("hdRv4EEdx");
答案 1 :(得分:1)
我知道没有内置的方法可以做到这一点。
您可以创建一个powershell脚本,该脚本将递归遍历所有内容文件,然后使用正则表达式在代码中查找相应的Content.Load函数,并用随机生成的哈希值替换它们。然后,您将运行此脚本作为混淆的一部分。
如果您拥有所有Content.Load&lt;&gt;,那么编写它甚至可能很简单。调用单个文件。然后伪代码就像:
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 + ")");
但是,你知道,“伪代码。” :)。这需要一些工作。