免责声明:
本文介绍了VBA项目免遭未经授权的访问的保护类型。他们的优点和缺点都是排名。
本文的目的是说明MS Office中VBA项目的每种保护类型的优缺点。
在Macro Tools VBA附件中演示了已开发的工具,用于删除和安装一个或另一个保护。
所有工具均使用标准VBA工具实现,而无需使用其他库。
主面板加载项Macro Tools VBA
第一类保护-常规密码
删除时间:立即
缺点:快速访问受密码保护的VBA模块
标准工具(在VBE中:工具面板-> VBAProject属性->保护)。
最容易拆卸的保护装置。在Internet上很容易找到删除此保护的代码。
可以使用以下工具删除此保护:
第二种保护类型-项目不可见
删除时间:10到15分钟(手动)
缺点:访问VBA模块的源代码是
最常见的保护类型之一。在95%具有VBA模块保护的文件中找到该文件。当您尝试打开一个项目时,将打开一个对话框,显示以下消息: Project is Unviewable。
大多数Excel用户无法删除此保护,因为它具有许多变体和细微差别;要删除它,您需要对Excel文件的内部结构有所了解。
这种类型的保护基于更改密钥:
CMG=«4A488FCC54D054D054D054D0»
DPB=«0B09CE0F8E108E108E»
GC=«CCCE09520B120C120CED»
在文件中
vbaProject.bin
。
简要介绍如何创建此保护
要创建此保护,您需要解压缩Excel文件。转到档案中的xl文件夹,打开vbaProject.bin文件,文件末尾是我们的密钥,将密钥值编辑为空,保存文件。我们将存档文件转换回Excel文件。做完了!
这是此保护的最简单的版本,但是有很多修改。
删除保护项目的算法不可见。
1)解压缩实验文件,转到文件 ... \ xl \ _rels \ workbook.xml.rels
2)在文件workbook.xml.rels中, 我们寻找包含单词vbaProject的行 ,通常看起来像这样: />。在这一行中,我们对Target键及其值感兴趣。该值是包含VBA项目的文件的名称。有时保护器会将键值更改为printerSettings.bin。事实证明,带有VBA项目的文件被伪装为另一个文件。
3)打开目标键中指定的文件进行编辑,在文件中查找CMG,DPB,GC键 。并且我们将名称中的任何字母更改为其他字母,例如:CMC,DPC,CC...搜索时,您需要小心,因为防御者可以将带有签名并重复其中一个密钥的表单放入项目中,例如:DPB =“ 0B09CE0F8E108E108E”。更改后,VBA项目将从Excel工作簿中删除。我们保存并关闭文件。
4)我们将档案传输回Excel文件。
5)启动Excel应用程序,执行以下操作:在“信任中心”->“宏选项”->“禁用所有宏而无需通知”。重新启动Excel。需要执行此操作来阻止保护,有时由宏的作者设置保护。该保护的实现如下。在VBA模块中“ ThisBook”,将创建响应于打开书本或关闭书本事件的过程。这些事件通常检查VBA项目的密码是否存在,是否禁止保存等。
6)打开文件。如果一切正确完成,则Excel将对我们在第3段中编辑的不正确的按键发誓。单击“是”,直到这些消息结束并且对话框关闭。
如果未出现此消息,则说明您尚未编辑包含VBA项目的文件。
7)打开VBA项目。毕竟,VBA项目应该可用。
8)但是有时候保护没有被删除,那么您需要保存文件,检查它是否真的被保存了!并再次完成步骤1到7这通常发生在文件workbook.xml.rels的关键目标 设定printerSettings.bin。如果保存时,Excel其校正成在值vbaProject.bin
这种保护可以安装和删除工具如下:
第三种保护类型-隐藏模块,隐藏的VBA模块
删除时间:15到20分钟(例如,您需要OLE对象编辑器,Structured Storage Viewer。)
缺点:访问VBA模块代码
通常,与项目保护结合可以找到一种较不常见的保护类型是不可见的。安装此保护后,VBA模块不会显示在Excel工作簿项目中。您可以通过分析VBA代码(这需要花费时间!)或在OpenOffice或LibreOffice中打开Excel文件来了解其存在( 在保护Project时也可以观看代码)无法查看,但是此方法没有机会提供没有密码的工作文件)。
在LibreOffice中查看VBA代码
简要介绍如何创建此保护
要创建此保护,您需要使用VBA项目-vbaProject.bin 或printerSettings.bin编辑文件,具体取决于文件... \ xl \ _rels \ workbook.xml.rels的设置。在文件末尾,删除以下行:Module1 = 32,32,635,330,Z。具有所需的模块名称。
要删除此保护,您需要在vbaProject.bin文件中恢复已删除的模块记录。
可以使用以下工具设置此保护。
第四类保护-代码混淆
退出时间:未知,取决于代码的大小和部分代码的重用
混淆的VBA代码
缺点:混淆后需要测试文件的可操作性
一种非常罕见的保护类型,它基于将VBA源代码更改为人类无法读取的形式。删除所有注释,代码格式,重命名所有变量,过程,函数,模块和其他名称。攻击者将永远无法还原代码的原始形式,并且将花费大量时间将其还原为人类可读的形式。
要对代码进行模糊处理,您需要时间,专门的软件。
可以使用以下工具设置此保护。
第五类保护-将代码移植到dll
删除时间:未知,取决于编程语言和资格
缺点:需要附加的dll文件
罕见的保护类型之一。主要思想是将主代码转移到用其他任何编程语言编写的单独的dll中。由于以下原因,这种保护类型并不广泛:需要Excel文件来“拖动”其他文件dll。
若要访问dll代码,您需要具有特殊的知识。
结论
最后,我要强调保护的无用性: 项目是不可见和隐藏的模块,从本质上讲,它什么也不保护。使您可以查看VBA代码,而无需在诸如OpenOffice 或 LibreOffice之类的程序中修改源文件。因此,将它们删除没有任何问题。