🔒 Sistema de Ofuscação JavaScript
Este projeto implementa um sistema automatizado de ofuscação de JavaScript que funciona tanto localmente (pre-commit) quanto na produção (GitHub Actions).
📁 Estrutura de Arquivos
1
2
3
4
5
6
7
8
9
js/
├── src/
│ ├── main.js # Código fonte limpo (para desenvolvimento)
│ └── .gitkeep # Mantém pasta no git
└── main.js # Código ofuscado (gerado automaticamente)
scripts/
├── obfuscate.sh # Script de ofuscação
└── dev.sh # Script auxiliar de desenvolvimento
🔄 Fluxo de Trabalho
1. Desenvolvimento Local
- Edite apenas:
js/src/main.js(código fonte limpo) - Nunca edite:
js/main.js(será sobrescrito)
2. Pre-commit (Automático)
- Quando você faz commit de mudanças em
js/src/main.js - O pre-commit automaticamente ofusca o código
- O arquivo
js/main.jsé atualizado e incluído no commit
3. GitHub Actions (Automático)
- Durante o build na produção
- O código é re-ofuscado com configurações avançadas
- O site é publicado com código totalmente protegido
🛠️ Comandos Úteis
Scripts de Desenvolvimento
1
2
3
4
5
6
7
8
# Ver status dos arquivos
./scripts/dev.sh status
# Usar código limpo para desenvolvimento local
./scripts/dev.sh dev
# Ofuscar manualmente para produção
./scripts/dev.sh prod
Ofuscação Manual
1
2
# Ofuscar código fonte
./scripts/obfuscate.sh
Pre-commit Manual
1
2
3
4
5
# Rodar pre-commit em todos os arquivos
pre-commit run --all-files
# Rodar apenas ofuscação
pre-commit run obfuscate-js
⚙️ Configuração de Ofuscação
O script obfuscate.sh usa as seguintes configurações:
- Control Flow Flattening: Dificulta análise do fluxo
- Dead Code Injection: Adiciona código inútil
- String Array: Codifica strings
- Self Defending: Código se protege contra debugging
- String Rotation: Rotaciona arrays de strings
- RC4 Encoding: Criptografia adicional
🔧 Desenvolvimento
Para Trabalhar Localmente
- Edite
js/src/main.jsnormalmente - Use
./scripts/dev.sh devpara testar sem ofuscação - Commit normalmente - o pre-commit ofuscará automaticamente
Para Testar Ofuscação Local
- Execute
./scripts/dev.sh prod - Teste o site com código ofuscado
- Use
./scripts/dev.sh devpara voltar ao desenvolvimento
🚨 Regras Importantes
- NUNCA edite
js/main.jsdiretamente - SEMPRE trabalhe em
js/src/main.js - CONFIE no sistema automático de ofuscação
- TESTE localmente antes de fazer push
📊 Verificação
Para verificar se o sistema está funcionando:
1
2
3
4
5
6
7
# Ver status
./scripts/dev.sh status
# Deve mostrar:
# 📁 Fonte: js/src/main.js (X bytes)
# 🔒 Produção: js/main.js (Y bytes)
# ✅ Aparenta estar ofuscado (poucas linhas)
🔐 Segurança
- Código fonte: Permanece legível em
js/src/ - Código produção: Ofuscado em
js/main.js - Dupla proteção: Pre-commit + GitHub Actions
- Self-defending: Código resiste a debugging
- Múltiplas camadas: Strings, controle de fluxo, dead code