LabVIEW是一种常用的工程软件,常被用于设计、测试和控制系统。由于它的高效性和易于使用性,越来越多的公司和研究机构使用LabVIEW来开发自己的项目和应用程序。然而,由于LabVIEW开发环境的开放性,很容易导致源代码泄露,这是很多用户和开发人员所担心的问题。
为了保护LabVIEW源代码不被盗用或泄露,需要采取一些措施。以下是几种常见的LabVIEW源程序保护方案:
1、LabVIEW VI密码保护
LabVIEW VI密码保护功能允许用户运行VI,但是未提供密码的情况下禁止查看或编辑VI的程序框图。
但是,此密码保护功能比较弱,可以轻松的破解删除。下文是NI官方给出的解释:
当前的VI密码保护机制是依赖于由VI密码得到的散列数据和其他一些数据(用作散列函数的输入),这些数据内嵌在VI中的不同位置,且密码本身并不存储在VI内部。这个机制保证了LabVIEW在需要查看或编辑程序框图的时候,即使不提供密码也仍然可以进入程序框图。LabVIEW会在随后的执行过程中,把根据输入密码计算出来的散列数据同存储在VI中的散列数据相比,然后决定使用者能否进入VI的程序框图。由于这个机制,加密的设计并不是针对VI程序框图本身的,因此攻击者有可能将密码散列替换成他自己定义的散列数据:
(1)确定散列输入数据,以及VI文件中散列的准确位置
(2)修改LabVIEW进程中的散列比较程序,比如使用内存调试器
尽管我们相信这种情况很少会发生,但攻击者仍有可能创建程序来破解VI的密码保护功能,从而将原密码替换为攻击者自己创建的密码。如果您需要比VI密码保护提供的更高的安全性,我们建议您改为删除VI的程序框图。
若想测试去除加密VI密码的功能,可以访问以下网址:
http://www.eeecontrol.com/vipj/
注:去除密码后的VI程序处于锁定状态,可以查看VI程序,但是无法编辑。可以通过此方法解除锁定:“文件—VI属性—保护—未锁定”,解除锁定后,就可以编辑源程序了。
2、删除VI的程序框图
删除VI的程序框图提供了比使用VI密码保护更大的保护,但恢复原始程序框图难度很大且该VI只能运行在相同版本的LabVIEW中。
“删除VI的程序框图”首先要创建项目,创建项目后,右键“程序生成规范”,按照下图选项选择“源代码发布”。
在“源文件设置”选项中,勾选“移除程序框图”。
删除VI的程序框图后,从VI中恢复原始程序框图非常困难,与仅仅包含文本语言编译器生成的机器指令的可执行应用程序恢复文本程序源相当。此外,LabVIEW只允许在编译和保存VI的LabVIEW版本和平台上运行VI;更新的LabVIEW版本或其他平台将无法重新编译VI。因此,您需要为希望支持的LabVIEW版本和平台提供独立的VI。
3、生成EXE程序
将VI编译为可执行文件(EXE)可以保护其源代码,因为EXE文件无法轻易地被反汇编。这可以防止其他人查看、修改或复制VI的源代码。
VI源程序生成EXE的方法步骤可以参考一下三易电子工作室的《零基础入门教程》。
淘宝店铺地址:http://blog.eeecontrol.com/taobao/
4、生成 dll(动态链接库)
LabVIEW可以生成DLL(动态链接库),使得其他编程语言(如C++、C#、Python等)可以调用LabVIEW编写的代码。dll文件也无法轻易地被反汇编。这可以防止其他人查看、修改或复制VI的源代码。
生成DLL首先要创建项目,创建项目后,右键“程序生成规范”,按照下图选项选择。
5、总结
下面对上面讲的三种方法的优缺点进行总结。
(1)VI密码保护
优点:设置密码方便,设置密码后可以被其他程序调用。
缺点:加密强度太弱,去除密码非常容易,容易被获取源程序。
(2)删除VI的程序框图
优点:无法恢复源代码。可以被其他程序调用。
缺点:VI只能运行在相同版本的LabVIEW中。
(3)生成EXE程序
优点:无法恢复源代码。
缺点:独立程序,无法被其他项目调用。
(4)生成dll
优点:无法恢复源代码。可被其他程序调用
缺点:生成较为复杂。
已有 26 位网友参与,快来吐槽:
发表评论