只是为了证明 Excel 的保护有多严重,请进行以下实验:
创建一个简单的工作簿,添加一个模块,然后输入以下子
Sub protectMe()
MsgBox "This should not be seen"
End Sub
现在用密码保护模块,另存为secret.xlsm,然后退出。
从“Explorer”或“Finder”(取决于操作系统)重命名文件(将扩展名从 更改secret.xlsm为secret.zip)。您会发现您现在可以打开文件并查看其内容 - 是的,所有 Office 文档的现代文件格式实际上是一个 zip 文件!
您将在 zip 存档中找到一个文件夹结构。转到xl文件夹,您将看到vbaProject.bin. 当你用文本编辑器打开这个文件时,你会看到它充满了垃圾——但它也包含你代码的纯文本!这是一个简短的示例:
�ˇˇ ���ê���@˛ˇˇˇˇˇ|ˇˇˇ�ˇˇ ���Ì���ˇˇˇˇ(���������������������ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ����ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇH�������������ˇˇˇˇ����ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ�@���¯<sS�$�*�\�R�f�f�f�f�*�0�9�5�3�7�3�3�d�0�8��*�\�R�0�*�#�1�4�fl������������������������������������������������������������˛ ��"Å��������Å�"�:����Å������ˇˇˇˇ@���ñ������o�ˇˇp���∂��This should not be seen�A@�������ˇˇˇˇ@���ˇˇˇˇ0���ˇˇˇˇx������`���ˇˇˇˇ�������������������ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ��`∞�Attribut�e VB_Nam�e = "Mod�ule1"
Su�b protec�tMe()
Ms�gBox "Th�is shoul�d not be� seen"
End �h
�������������������rUÄ���Ä���Ä���Ä�����~|��������� ������� �����������������������°������Ñ���D���ƒ�ƒ:�hġh†ˇh¿ˇ∏����∆ˇ�¯‡ˇÏ‡ˇ"���Ú|ˇ≤�‡ˇ¿ˇ†ˇÄˇƒ��’�����Ñ�D�$������'�������������������������‡ˇ�¿ˇ�†ˇ�ġ�����π����������B�����R���������������������������������������������������������������������rUÄ�������Ä���Ä���������� ������ˇˇˇˇˇˇˇˇ��������$�Å���������`��˝ˇˇˇˇˇˇˇˇˇˇˇ���������������n�������������������������������Ãam���ˇ �� ��'������������™*�\�H�{�0�0�0�2�0�4�E�F�-�0�0�0�0�-�0�0�0�0�-�C�0�0�0�-�0�0�0�0�0�0�0�0�0�0�4�6�}�#�6�.�0�#�9�#�M�a�c�i�n�t�o�s�h� �H�D�:�A�p�p�l�i�c�a�t�i�o�n�s�:�M�i�c�r�o�s�o�f�t� �O�f�f�i�c�e� �2�0�1�1�:�O�f�f�i�c�e�:�V�i�s�u�a�l� �B�a�s�i�c� �f�o�r� �A�p�p�l�i�c�a�t�i�o�n�s�.�f�r�a�m�e�w�o�r�k�:�V�e�r�s�i�o�n�s�:�1�4�:�R�e�s�o�u�r�c�e�s�:�V�B�A� �O�b�j�e�c�t� �L�i�b�r�a�r�y�#
所以是的 - 如果你真的关心你的软件的安全性,这不是要走的路......
有趣的是,当我最初粘贴此内容时,问号不存在,并且代码可以像一天一样简单地阅读(即使在您编写时出现在浏览器中的答案的预览中)。显然,在输入处理期间以及在将其呈现为“最终”输出之前出现了一些“隐藏”字符。尽管如此,它仍然非常可读。