Protección de proyectos VBA en MS Excel

¡Hola! Soy un usuario habitual de MS Excel. No es un programador profesional, pero ha acumulado suficiente experiencia para instalar y evitar la protección de proyectos VBA.



Descargo de responsabilidad:



este artículo describe los tipos de protección de los proyectos de VBA contra el acceso no autorizado. Sus fortalezas y debilidades se clasifican.



El propósito del artículo es mostrar las fortalezas y debilidades de cada tipo de protección para un proyecto de VBA en MS Office.



Demostración de las herramientas desarrolladas, en el complemento Macro Tools VBA , para eliminar e instalar una u otra protección. 



Todas las herramientas se implementan utilizando herramientas VBA estándar, sin utilizar bibliotecas adicionales. 





Complementos del panel principal Herramientas macro VBA



El primer tipo de protección: contraseña normal



Tiempo para eliminar: instantáneamente



Desventaja: acceso rápido a la



herramienta estándar del módulo VBA protegido por contraseña (En VBE: panel Herramientas -> Propiedades de VBAProject -> Protección ). 



La protección más fácil de quitar. Es fácil encontrar un código en Internet para eliminar esta protección. 



Esta protección se puede eliminar con la siguiente herramienta:





El segundo tipo de protección: el proyecto no se puede ver



Tiempo para quitar: 10 a 15 minutos (manualmente)



Desventaja: acceso al código fuente del módulo VBA



Uno de los tipos de protección más comunes. Se encuentra en el 95% de los archivos con protección de módulo VBA. Cuando intenta abrir un proyecto, se abre un cuadro de diálogo con el mensaje: El  proyecto no se puede ver.





La mayoría de los usuarios de Excel no pueden eliminar esta protección, ya que tiene muchas variaciones y matices; para eliminarla, debe tener una idea de la estructura interna del archivo de Excel.



Este tipo de protección se basa en el cambio de claves:



CMG=«4A488FCC54D054D054D054D0»

DPB=«0B09CE0F8E108E108E»

GC=«CCCE09520B120C120CED»




en el archivo vbaProject.bin





Brevemente cómo se crea esta protección



Para crear esta protección, debe descomprimir el archivo de Excel. Vaya a la carpeta xl en el archivo , abra el archivo vbaProject.bin , al final del archivo están nuestras claves, edite los valores de las claves para que estén vacías, guarde el archivo. Traducimos nuestro archivo de nuevo a un archivo de Excel. ¡Hecho! 



Esta es la versión más simple de esta protección, pero hay muchas modificaciones.



El algoritmo para eliminar la protección El proyecto no se puede ver.



1) Descomprima el archivo experimental, vaya al archivo  ... \ xl \ _rels \ workbook.xml.rels









2) En el archivo workbook.xml.rels   buscamos una línea que contenga la palabra  vbaProject , por lo general se ve así:  /> . En esta línea, nos interesa la clave Target , y su valor. El valor es el nombre del archivo que contiene el proyecto VBA. A veces, el protector cambia los valores clave a printerSettings.bin. Resulta que el archivo con el proyecto VBA está disfrazado como otro archivo.



3) Abra el archivo especificado en la tecla Destino para editar , busque las claves CMG, DPB, GC en el archivo  . Y cambiamos cualquier letra de sus nombres por cualquier otra, por ejemplo: CMC, DPC, CC... Al realizar la búsqueda hay que tener cuidado, ya que el defensor puede poner en el proyecto un formulario con una firma que repita una de las claves, por ejemplo: DPB = "0B09CE0F8E108E108E" . Cuando lo cambie, el proyecto de VBA se eliminará del libro de Excel. Guardamos y cerramos el archivo.



4) Traducimos el archivo de nuevo a un archivo de Excel.



5) Inicie la aplicación Excel, haga lo siguiente: en el Centro de confianza -> Opciones de macro -> Deshabilite todas las macros sin notificación . Reinicie Excel. Esta operación es necesaria para bloquear la protección, que a veces la establecen los autores de las macros. Esta protección se implementa de la siguiente manera. En el módulo VBA " ThisBook”, Se crean procedimientos que responden a los eventos de abrir o cerrar un libro. Estos eventos generalmente comprueban la presencia de una contraseña para un proyecto de VBA, una prohibición de guardar, etc.



6) Abra el archivo. Si todo se hace correctamente, entonces Excel jurará por las claves incorrectas que editamos en el párrafo 3. Haga clic en, sí, hasta que estos mensajes terminen y se cierre el cuadro de diálogo. 



      Si este mensaje no aparece, entonces no ha editado el archivo que contiene el proyecto de VBA.





7) Abra el proyecto VBA. Después de todo, el proyecto VBA debería estar disponible.



8) Pero a veces la protección no se elimina, entonces necesita guardar el archivo, ¡verifique que realmente se guardó! Y hecho de nuevo los pasos 1 a 7. Por lo general, esto sucede cuando el archivo workbook.xml.rels en la clave Target   establece printerSettings.bin . Si la preservación, Excel lo corrige a un valor en vbaProject.bin



Esta protección puede instalar y eliminar la herramienta siguiente:





El tercer tipo de protección: módulo oculto, módulos VBA ocultos



Tiempo para eliminar: de 15 a 20 minutos (necesita un editor de objetos OLE, visor de almacenamiento estructurado, por ejemplo.



Desventaja: acceso al código del módulo VBA



Un tipo de protección menos común generalmente se encuentra en combinación con la protección del proyecto no se puede ver. Cuando se instala esta protección, el módulo VBA no se muestra en el proyecto del libro de Excel. Puede averiguar sobre su existencia analizando el código VBA (¡lo que lleva tiempo!) o abriendo el archivo Excel en  OpenOffice o LibreOffice (también puede ver el código cuando se protege Project is No se puede ver, pero este método no brinda la oportunidad de obtener un archivo que funcione, sin contraseña). 





Ver código VBA en  LibreOffice



Brevemente cómo se crea esta protección



Para crear esta protección, debe editar el archivo con el proyecto VBA - vbaProject.bin  o printerSettings.bin , según la configuración en el archivo ... \ xl \ _rels \ workbook.xml.rels . Al final del archivo, líneas como: Module1 = 32, 32, 635, 330, Z se eliminan . Con los nombres de módulo deseados.





Para eliminar esta protección, debe restaurar los registros de módulos eliminados en el archivo vbaProject.bin .



Esta protección se puede configurar con la siguiente herramienta.





El cuarto tipo de protección: la ofuscación del código



Tiempo para retirar: desconocido, depende del tamaño del código y la reutilización de partes del código.





Código VBA ofuscado



Desventaja: la necesidad de probar la operatividad del archivo después de la ofuscación.



Un tipo de protección extremadamente raro basado en cambiar el código fuente de VBA a una forma ilegible para humanos. Se eliminan todos los comentarios, el formato de código, los nombres de todas las variables, procedimientos, funciones, módulos y otros se renombran. Un atacante nunca podrá restaurar la forma original del código, y llevará mucho tiempo restaurarlo a una forma legible por humanos.  



Para desenmascarar el código, necesita tiempo, software especializado.



Esta protección se puede configurar con la siguiente herramienta.





El quinto tipo de protección: portabilidad de código a dll



Tiempo para eliminar: desconocido, depende del lenguaje de programación y las calificaciones



Desventaja: la necesidad de un archivo dll adicional



Uno de los tipos de protección más raros. La idea principal es transferir el código principal a una dll separada, escrita en cualquier otro lenguaje de programación. Este tipo de protección no está muy extendido por la siguiente razón, la necesidad de un archivo de Excel para "arrastrar" un archivo adicional, dll.



Para obtener acceso al código dll, debe tener conocimientos especiales.



Conclusión



En conclusión, quiero resaltar la inutilidad de las protecciones: el  proyecto es un módulo invisible y oculto que, en esencia, no protege nada. Le permite ver el código VBA sin modificar el archivo fuente en programas como OpenOffice  o   LibreOffice. Entonces se quitan sin ningún problema.



All Articles