Isenção de responsabilidade:
este artigo descreve os tipos de proteção de projetos VBA contra acesso não autorizado. Seus pontos fortes e fracos estão no ranking.
O objetivo do artigo é mostrar os pontos fortes e fracos de cada tipo de proteção para um projeto VBA no MS Office.
Demonstração das ferramentas desenvolvidas, no add-on Macro Tools VBA , para remoção e instalação de uma ou outra proteção.
Todas as ferramentas são implementadas usando ferramentas VBA padrão, sem usar bibliotecas adicionais.

Painel principal Add-ins Macro Tools VBA
O primeiro tipo de proteção - senha normal
Hora de remover: instantaneamente
Desvantagem: acesso rápido à
ferramenta padrão do módulo VBA protegido por senha (No VBE: painel Ferramentas -> Propriedades do VBAProject -> Proteção ).
A proteção mais facilmente removível. É fácil encontrar um código na Internet para remover essa proteção.
Esta proteção pode ser removida com a seguinte ferramenta:

O segundo tipo de proteção - Projeto não visível
Tempo de remoção: 10 a 15 minutos (manualmente)
Desvantagem: acesso ao código fonte do módulo VBA
Um dos tipos de proteção mais comuns. Encontrado em 95% dos arquivos com proteção de módulo VBA. Quando você tenta abrir um projeto, uma caixa de diálogo é aberta com a mensagem: Projeto não pode ser visualizado.

A maioria dos usuários do Excel não consegue remover esta proteção, pois ela possui muitas variações e nuances, para removê-la é necessário ter uma ideia da estrutura interna do arquivo Excel.
Este tipo de proteção é baseado na mudança de chaves:
CMG=«4A488FCC54D054D054D054D0»
DPB=«0B09CE0F8E108E108E»
GC=«CCCE09520B120C120CED»
no arquivo
vbaProject.bin
.

Resumidamente, como essa proteção é criada
Para criar essa proteção, você precisa descompactar o arquivo Excel. Vá para a pasta xl no arquivo , abra o arquivo vbaProject.bin , no final do arquivo estão as nossas chaves, edite os valores das chaves para esvaziar, salve o arquivo. Traduzimos nosso arquivo de volta para um arquivo Excel. Feito!
Esta é a versão mais simples dessa proteção, mas há muitas modificações.
Algoritmo para remover o projeto de proteção não pode ser visualizado.
1) Descompacte o arquivo experimental, vá para o arquivo ... \ xl \ _rels \ workbook.xml.rels

2) No arquivo workbook.xml.rels, procuramos uma linha contendo a palavra vbaProject , geralmente semelhante a: /> . Nesta linha, estamos interessados na chave Target e em seu valor. O valor é o nome do arquivo que contém o projeto VBA. Às vezes, o protetor altera os valores-chave para printerSettings.bin. Acontece que o arquivo com o projeto VBA está disfarçado como outro arquivo.
3) Abra o arquivo especificado na chave de destino para edição , procure as chaves CMG, DPB, GC no arquivo . E nós mudamos qualquer letra em seus nomes para qualquer outra, por exemplo: CMC, DPC, CC... Na busca, é preciso ter cuidado, pois o defensor pode colocar no projeto um formulário com uma assinatura repetindo uma das chaves, por exemplo: DPB = "0B09CE0F8E108E108E" . Ao alterá-lo, o projeto VBA será removido da pasta de trabalho do Excel. Nós salvamos e fechamos o arquivo.
4) Nós traduzimos o arquivo de volta em um arquivo Excel.
5) Inicie o aplicativo Excel, faça o seguinte: na Central de Confiabilidade -> Opções de Macro -> Desative todas as macros sem notificação . Reinicie o Excel. Esta operação é necessária para bloquear a proteção, que às vezes é definida pelos autores das macros. Essa proteção é implementada da seguinte maneira. No módulo VBA " ThisBook”, São criados procedimentos que respondem aos eventos de abertura ou fechamento de um livro. Esses eventos geralmente verificam a presença de uma senha para um projeto VBA, a proibição de salvamento e assim por diante.
6) Abra o arquivo. Se tudo for feito corretamente, o Excel irá jurar pelas teclas erradas que editamos no parágrafo 3. Clique, sim, até que essas mensagens acabem e a caixa de diálogo feche.
Se esta mensagem não for exibida, você não editou o arquivo que contém o projeto VBA.

7) Abra o projeto VBA. Afinal, o projeto VBA deve estar disponível.
8) Mas às vezes a proteção não é removida, então você precisa salvar o arquivo, verifique se ele realmente foi salvo! E execute novamente as etapas 1 a 7. Normalmente, isso acontece quando o arquivo workbook.xml.rels na chave Target set printerSettings.bin .Se preservação, o Excel corrige para um valor em vbaProject.bin
Esta proteção pode instalar e remover a ferramenta a seguir:

O terceiro tipo de proteção - Módulo oculto, módulos VBA ocultos
Tempo para remover: 15 a 20 minutos (você precisa de um editor de objeto OLE, Visualizador de armazenamento estruturado, por exemplo.
Desvantagem: acesso ao código do módulo VBA
Um tipo menos comum de proteção é geralmente encontrado em combinação com a proteção de projeto está invisível. Quando esta proteção é instalada, o módulo VBA não é exibido no projeto da pasta de trabalho do Excel. Você pode descobrir sobre sua existência analisando o código VBA (o que leva tempo!) ou abrindo o arquivo Excel no OpenOffice ou no LibreOffice (você também pode observar o código ao proteger o Project Não visível, mas este método não oferece uma oportunidade de obter um arquivo de trabalho, sem uma senha).

Ver código VBA no LibreOffice
Resumidamente, como essa proteção é criada
Para criar essa proteção, você precisa editar o arquivo com o projeto VBA - vbaProject.bin ou printerSettings.bin , dependendo das configurações no arquivo ... \ xl \ _rels \ workbook.xml.rels . No final do arquivo, linhas como: Módulo1 = 32, 32, 635, 330, Z são excluídas . Com os nomes dos módulos desejados.

Para remover essa proteção, você precisa restaurar os registros de módulo excluídos no arquivo vbaProject.bin .
Essa proteção pode ser definida com a ferramenta a seguir.

O quarto tipo de proteção - ofuscação de código
Tempo de retirada: desconhecido, depende do tamanho do código e da reutilização de partes do código

Desvantagem do código VBA ofuscado : a necessidade de testar o arquivo após a ofuscação quanto à operabilidade
Um tipo extremamente raro de proteção baseado na alteração do código-fonte VBA em uma forma ilegível para humanos. Todos os comentários, formatação de código são removidos, os nomes de todas as variáveis, procedimentos, funções, módulos e outras coisas são renomeados. Um invasor nunca será capaz de restaurar a forma original do código e levará muito tempo para restaurá-lo para uma forma legível por humanos.
Para desofuscar o código, você precisa de um software especializado e de tempo.
Essa proteção pode ser definida com a ferramenta a seguir.

O quinto tipo de proteção - Portando código para dll
Tempo para remover: desconhecido, depende da linguagem de programação e das qualificações
Desvantagem: a necessidade de um arquivo dll adicional
Um dos tipos mais raros de proteção. A ideia principal é transferir o código principal para uma dll separada, escrita em qualquer outra linguagem de programação. Este tipo de proteção não é difundido pelo seguinte motivo, a necessidade de um arquivo Excel, "arraste" um arquivo adicional, dll.
Para obter acesso ao código dll, você precisa ter um conhecimento especial.
Conclusão
Concluindo, quero destacar a inutilidade das proteções: Projeto é Invisível e Módulo Oculto que, em essência, não protege nada. Permite que você visualize o código VBA sem modificar o arquivo de origem em programas como o OpenOffice ou LibreOffice. Portanto, eles são removidos sem problemas.