2013-06-22 30 views
0

我創建了一個基於Excel的POS系統。爲了防止它被盜版,我放置了一個Activate按鈕,該按鈕運行一個獲取主板序列號的宏,並將其存儲在工作表中的某個單元中。當您將軟件安裝到客戶端計算機(許可的計算機)中時,您可以一次性執行此操作。Excel工作簿的反盜版程序

然後我在ThisWorkbook中編寫了一個事件程序,它可以獲得計算機主板的序列號,並將它與先前存儲在許可機器上的序列號進行比較。如果軟件被複制並在另一臺機器上使用,當然不會有匹配。用戶將會收到一條消息:「您已經在另一臺計算機上安裝了該程序。對於許可版本,請聯繫blah blah ...」當用戶單擊確定按鈕時,工作簿將關閉。該項目被鎖定以供查看。

因此,一旦工作簿被鎖定到許可的機器中並且被複制並用於另一臺計算機,用戶將無法打開該工作簿。

有沒有辦法讓黑客通過我的安全程序?如果是的話,我如何以及如何阻止他們?我還有什麼其他方式可以防止他人盜版我的軟件?謝謝。

下面是代碼:

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 [email protected] for licensed copy.", _ 
    Buttons:=vbExclamation 
    ActiveWorkbook.Save 
    ActiveWorkbook.Close 
End If 

End Sub 
+0

如果代碼由於某種原因在某個地方引發錯誤,它看起來不像是在錯誤時關閉。所以如果他們選擇調試,他們將能夠看到你的代碼。再加上excel並不是真正安全的開始。 – Grant

+0

我忽略了錯誤時關閉它。感謝您的支持:-) – Kazuo

+0

我在鎖定的項目上生成了一個錯誤,並且調試按鈕變灰。所以基於這個實驗,我認爲即使上面的代碼生成了一個錯誤,他們也不能調試,因爲調試按鈕是灰色的。或者有另一種方法可以繞過這個? – Kazuo

回答

0

沒有辦法保證你可以複製你的工作簿停止與Excel技巧的人。例如,即使我在單元格中看不到某個值(因爲您已鎖定查看區域),我仍然可以通過來自其他工作簿的公式訪問它。密碼保護?許多網站會破解Office文檔中的密碼。

但是,可能有效的方法是使用創建驗證服務器。您可以擁有自己的Web服務,根據主板序列號驗證用戶名和密碼。但即使如此,熟練的用戶也可以對工作簿進行逆向工程,並刪除調用Web服務的代碼。

7

只是爲了演示如何嚴重打破Excel的保護,做如下實驗:

創建一個簡單的工作簿,添加一個模塊,並輸入下面的子

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

現在保護模塊,具有密碼,另存爲secret.xlsm,然後退出。

從您的「資源管理器」或「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�[email protected]�������ˇˇˇˇ@���ˇˇˇˇ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�# 

所以是的 - 如果你真的關心你的軟件的安全性,這是不是要走的路......有趣的是,當我最初粘貼這個時,問號不在那裏,代碼可以像白天一樣清晰(甚至在你寫的瀏覽器中出現的答案的預覽中)。顯然有一些「隱藏」的字符出現在處理輸入和顯示爲「最終」輸出之前。雖然它仍然非常可讀。

+0

優秀的解釋和例子!很有用。 – Grant

+0

感謝Floris的這種洞察力和混淆。 CrunchCode(http://www.spreadsheet1.com/s1-crunchcode.html)或Invisible Basic(http://sourceforge.net/projects/invisiblebasic/?source=dlp)怎麼樣?這些工具是否具有防黑客功能?或者它們是否提供了足夠的混淆手段,以便黑客決定不值得他們的時間瞭解如何克服我所謂的「屏蔽」? – Kazuo

+0

+1良好演示... –