MonoToque:Como proteger meu aplicativo
-
12-12-2019 - |
Pergunta
Usei o Dotfuscator para proteger meu aplicativo contra engenharia reversa. Criptografei os arquivos dll no aplicativo Windows, mas como posso fazer isso no OSX/MonoTouch?
Extrair a dll do ipa, confundir as dlls no Windows, reembalar as dlls criptografadas no IPA e publicá-las no appstore?
Existe alguma solução simples?
Solução
Acima de tudo, você precisa lembrar que o iOS não permite JIT (bem na hora) compilando.Isso significa que tudo precisa passar pelo AOT (antecipadamente) compilador.
Isso resulta que todo o código IL de seus assemblies está sendo convertido em instruções ARM nativas (v6, v7 e/ou polegar) e que a IL é não requerido não mais.
Isso significa que, quando você está construindo para Release|iPhone
, o código IL será removido dos seus assemblies.Como foi removido, ele não estará presente (para ser descompilado) no aplicativo que você publicar.
NOTAS
os assemblies ainda estarão dentro do aplicativo porque os metadados ainda são necessários (por exemplo,
System.Reflection
precisa).Portanto, nomes de símbolos e arquivos de recursos não serão mutilados/criptografados como os ofuscadores geralmente fazem;Você pode desmontar o assembly ARM (isso seria verdade mesmo se você ofuscasse os assemblies antes da compilação AOT), mas é muito mais difícil de entender (e voltar ao C#) do que IL.
Extrair os assemblies do IPA e processá-los irá quebrar pelo menos a assinatura do aplicativo (você pode assiná-lo novamente).Também irá provável quebrar muitas outras coisas (já que o código se referirá a nomes/estruturas que podem ter mudado).Não acho que isso funcione (mas depende das opções que você usaria no seu ofuscador).