Excel工作簿的反盗版程序
我创build了一个基于Excel的POS系统。 为了防止它被盗版,我放了一个Activatebutton,它运行一个macros来获取主板的序列号,并将它存储在工作表中的某个单元中。 当您将软件安装在客户端计算机(许可的计算机)中时,您可以一次性执行此操作。
然后,我在ThisWorkbook中编写了一个事件程序,它可以获取计算机的主板序列号,并将其与先前存储在许可机器中的序列号进行比较。 如果软件被复制并在另一台机器上使用,当然不会有匹配的。 用户将收到一条消息:“您已经在另一台计算机上安装了该程序。对于许可版本,请联系blah blah …”当用户单击确定button时,工作簿将closures。 该项目被locking以供查看。
因此,一旦工作簿被locking到许可的机器中并被复制并用于另一台计算机,用户将无法打开工作簿。
黑客是否有办法通过我的安全程序? 如果是的话,我怎样才能阻止他们呢? 还有什么方法可以防止他人盗版我的软件? 谢谢。
这里是代码:
Private Sub Workbook_Open() Dim LicensedMachine As String LicensedMachine = Sheet1.Range("Z102") ''This is where you have already stored licensed machine's motherboard sn If MBSerialNumber <> LicensedMachine Then ''Call function and check if current machine's motherboard sn 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
只是为了演示Excel的保护是多么糟糕,请做以下的实验:
创build一个简单的工作簿,添加一个模块,并input下面的子
Sub protectMe() MsgBox "This should not be seen" End Sub
现在用密码保护模块,保存为secret.xlsm
,然后退出。
从您的“资源pipe理器”或“Finder”(取决于操作系统),重命名文件(将扩展名从secret.xlsm
更改为secret.zip
)。 你会发现你现在可以打开文件并看到它的内容 – 是的,所有Office文档的现代文件格式实际上是一个zip文件!
您将在zip存档中find一个文件夹结构。 转到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 #
所以是的 – 如果你真的关心你的软件的安全性,这是不是要走的路…
编辑有趣的是,当我最初粘贴这个时,问号不在那里,代码可以像白天一样简单(甚至在你写的浏览器中出现的答案的预览中)。 显然有一些“隐藏的”字符出现在input的处理过程中,在它被呈现为“最终的”输出之前。 它仍然是非常可读的。
无法保证您可以阻止具有Excel技能的人员复制您的工作簿。 例如,即使我看不到单元格中的值(因为您已locking查看区域),我仍然可以通过不同工作簿中的公式访问它。 密码保护? 有许多网站会破解Office文档中的密码。
但是,可能有效的方法是使用创buildvalidation服务器。 您可以拥有自己的Web服务,根据主板序列号validation用户名和密码。 但即使如此,熟练的用户也可以对工作簿进行逆向工程,并删除调用Web服务的代码。