Flutter – Obfuscando seu código

Gerar uma aplicação utilizando Flutter pode ser muito simples, mas você sabe proteger seu código na hora de gerar seus releases de produção?

Obfuscação de código não é nada novo ou exclusivo do Flutter, mas sim uma técnica para dificultar o entendimento humano e a engenharia reversa da sua aplicação.

Utilizando obfuscação na hora de gerar seu build fará com que seu binário tenha uma camada a mais de segurança, escondendo os nomes de funções e classes do código Dart quando compilado. Com isso, dificultamos a ação de possíveis atacantes que tentem utilizar engenharia reversa na aplicação. 

Para obfuscar seu código, basta adicionar algumas flags ao comando de build padrão, são elas:  –obfuscate e  –split-debug-info.

flutter build apk --obfuscate --split-debug-info=/<folder>

A flag –obfuscate informa ao compilador que o código deve ser obfuscado.

A flag –split-debug-info especifica o diretório onde os arquivos .symbols serão salvos. Esta flag é obrigatória ao usar –obfuscate. 

Você pode escolher qualquer pasta para salvar os arquivos gerados, mas deixo como sugestão utilizar as pastas de build da plataforma que esta gerando, como por exemplo: build/app/outputs/symbols/prod.

Na pasta que você definir, ao final da execução você deve encontrar alguns arquivos .symbols, como os abaixo:

Estes arquivos são necessários caso você deseje “desobfuscar” posteriormente.

Outro ponto interessante é que utilizando a flag –split-debug-info o binário gerado pode ter uma boa redução no tamanho final, isso porque os symbols são exportados ao invés de ficarem na aplicação.

É isso! Agora você tem seu binário com código obfuscado. 

Nota: para não gerar confusão utilizei o termo “obfuscação” que já é utilizado pela comunidade. A tradução direta do termo “obfuscate” é ofuscação.

Deixe um comentário

O seu endereço de e-mail não será publicado.