Proteção de projeto VBA em MS Excel

Olá! Sou um usuário regular do MS Excel. Não é um programador profissional, mas acumulou experiência suficiente para instalar e contornar a proteção de projetos VBA.



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.



All Articles