Pergunta

Estou usando o XNA 4 e o Monogame para desenvolver um aplicativo. Além disso, eu uso o Easfuscator para ofuscar o código -fonte C#. É possível e qual seria a melhor maneira de tornar os nomes de arquivos na pasta de conteúdo não legíveis?

Basicamente, um nome de arquivo como "title_image.xnb" deve ser automaticamente renomeado para algo como "hdrv4eedx.xnb" (exatamente como um exemplo). A criptografia do conteúdo não é necessariamente necessária.

Foi útil?

Solução

Não há uma maneira interna de fazer isso que eu conheço.

Você pode criar um script do PowerShell que passará recursivamente por todos os seus arquivos de conteúdo e, em seguida, use expressões regulares para encontrar as funções apropriadas do conteúdo.Load em seu código e substituir aqueles por hashes gerados aleatoriamente. Você então executaria esse script como parte da ofuscação.

Provavelmente seria simples escrever se você tiver todas as suas chamadas de conteúdo. <> Em um único arquivo. Então o pseudocódigo seria 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 + ")");

Mas, você sabe, "pseudocódigo". :). Levaria algum trabalho.

Outras dicas

Por que não adicionar todos os recursos com esses nomes ao gerenciador de conteúdo, do código você saberá que isso é title_image e não será legível dos usuários finais se eles abrirem a pasta.

title_image = Content.Load<Texture2D>("hdRv4EEdx");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top