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.