Pregunta

Estoy usando XNA 4 y Monogame para desarrollar una aplicación. Además, uso Easfuscator para ofuscar el código fuente de C#. ¿Es posible y cuál sería la mejor manera de hacer que los nombres de archivo en la carpeta de contenido no sean legibles?

Básicamente, un nombre de archivo como "title_image.xnb" debe renombrarse automáticamente a algo como "hdrv4eedx.xnb" (solo como ejemplo). El cifrado del contenido no es necesariamente necesario.

¿Fue útil?

Solución

No hay una forma incorporada de hacer esto que conozca.

Puede crear un script PowerShell que revise recursivamente todos sus archivos de contenido, luego use expresiones regulares para encontrar el contenido apropiado. Funciones de carga en su código y reemplazar aquellos con hashes generados aleatoriamente. Luego ejecutarías este script como parte de la ofuscación.

Probablemente incluso sería simple de escribir si tiene todo su contenido. Carga <> llamadas en un solo archivo. Entonces el seudocódigo sería algo como:

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 + ")");

Pero, ya sabes, "seudocódigo". :) Tomaría algo de trabajo.

Otros consejos

¿Por qué no agregar todos los recursos con esos nombres en Content Manager? Del código sabrá que esto es title_image y no será legible de los usuarios finales si abren la carpeta.

title_image = Content.Load<Texture2D>("hdRv4EEdx");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top