-1

我创建了一个基于 Excel 的 POS 系统。为了防止被盗版,我放置了一个激活按钮,该按钮运行一个宏,该宏获取主板的序列号并将其存储在工作表某处的单元格中。当您在客户的计算机(许可机器)中安装软件时,您会一次性执行此操作。

然后我在 ThisWorkbook 中编写了一个事件过程,它将获取计算机主板的序列号,并将其与之前为许可机器存储的序列号进行比较。如果软件被复制并在另一台机器上使用,当然不会匹配。用户将收到一条消息通知用户:“您已在另一台计算机上安装了该程序。对于许可版本,请联系等等。”当用户单击“确定”按钮时,工作簿将关闭。该项目已锁定以供查看。

因此,一旦工作簿被锁定在许可机器中并被复制并在另一台计算机上使用,用户将无法打开工作簿。

有没有办法让黑客通过我的安全程序?如果是这样,我该如何以及如何阻止它们?我还可以采取哪些其他方法来防止他人盗版我的软件?谢谢。

这是代码:

Private Sub Workbook_Open()

Dim LicensedMachine As String

LicensedMachine = Sheet1.Range("Z102") ''This is where you have already stored licensed machine's motherboard s.n.

If MBSerialNumber <> LicensedMachine Then   ''Call function and check if current machine's motherboard s.n. matches the licensed machine's.
    MsgBox Title:="EXCEL POS", Prompt:="You have installed program in another computer." & vbCrLf & _
    "Contact R House at 0917-555-1234 or rjhouse@hotmail.com for licensed copy.", _
    Buttons:=vbExclamation
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End If

End Sub
4

2 回答 2

7

只是为了证明 Excel 的保护有多严重,请进行以下实验:

创建一个简单的工作簿,添加一个模块,然后输入以下子

Sub protectMe()
MsgBox "This should not be seen"
End Sub

现在用密码保护模块,另存为secret.xlsm,然后退出。

从“Explorer”或“Finder”(取决于操作系统)重命名文件(将扩展名从 更改secret.xlsmsecret.zip)。您会发现您现在可以打开文件并查看其内容 - 是的,所有 Office 文档的现代文件格式实际上是一个 zip 文件!

您将在 zip 存档中找到一个文件夹结构。转到xl文件夹,您将看到vbaProject.bin. 当你用文本编辑器打开这个文件时,你会看到它充满了垃圾——但它也包含你代码的纯文本!这是一个简短的示例:

�ˇˇ ���ê���@˛ˇˇˇˇˇ|ˇˇˇ�ˇˇ ���Ì���ˇˇˇˇ(���������������������ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ����ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇH�������������ˇˇˇˇ����ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ�@���¯&lt;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�#

所以是的 - 如果你真的关心你的软件的安全性,这不是要走的路......

有趣的是,当我最初粘贴此内容时,问号不存在,并且代码可以像一天一样简单地阅读(即使在您编写时出现在浏览器中的答案的预览中)。显然,在输入处理期间以及在将其呈现为“最终”输出之前出现了一些“隐藏”字符。尽管如此,它仍然非常可读。

于 2013-06-22T14:06:36.983 回答
0

无法保证您可以阻止具有 Excel 技能的人复制您的工作簿。例如,即使我看不到单元格中的值(因为您已锁定查看区域),我仍然可以通过其他工作簿中的公式访问它。密码保护?有许多网站会破解 Office 文档中的密码。

然而,一种可行的方法是使用创建验证服务器。您可以拥有自己的 Web 服务,根据主板序列号验证用户名和密码。但是,即使那样,熟练的用户也可以对您的工作簿进行逆向工程并删除将调用 Web 服务的代码。

于 2013-06-22T03:37:23.960 回答