LabVIEW程序安全性保護(hù)詳解(VI密碼保護(hù)與刪除)
LabVIEW是一種常用的工程軟件,常被用于設(shè)計、測試和控制系統(tǒng)。由于它的高效性和易于使用性,越來越多的公司和研究機構(gòu)使用LabVIEW來開發(fā)自己的項目和應(yīng)用程序。然而,由于LabVIEW開發(fā)環(huán)境的開放性,很容易導(dǎo)致源代碼泄露,這是很多用戶和開發(fā)人員所擔(dān)心的問題。
為了保護(hù)LabVIEW源代碼不被盜用或泄露,需要采取一些措施。以下是幾種常見的LabVIEW源程序保護(hù)方案:
?
1、LabVIEW VI密碼保護(hù)
LabVIEW VI密碼保護(hù)功能允許用戶運行VI,但是未提供密碼的情況下禁止查看或編輯VI的程序框圖。

?
但是,此密碼保護(hù)功能比較弱,可以輕松的破解刪除。下文是NI官方給出的解釋:
?

當(dāng)前的VI密碼保護(hù)機制是依賴于由VI密碼得到的散列數(shù)據(jù)和其他一些數(shù)據(jù)(用作散列函數(shù)的輸入),這些數(shù)據(jù)內(nèi)嵌在VI中的不同位置,且密碼本身并不存儲在VI內(nèi)部。這個機制保證了LabVIEW在需要查看或編輯程序框圖的時候,即使不提供密碼也仍然可以進(jìn)入程序框圖。LabVIEW會在隨后的執(zhí)行過程中,把根據(jù)輸入密碼計算出來的散列數(shù)據(jù)同存儲在VI中的散列數(shù)據(jù)相比,然后決定使用者能否進(jìn)入VI的程序框圖。由于這個機制,加密的設(shè)計并不是針對VI程序框圖本身的,因此攻擊者有可能將密碼散列替換成他自己定義的散列數(shù)據(jù):
(1)確定散列輸入數(shù)據(jù),以及VI文件中散列的準(zhǔn)確位置
(2)修改LabVIEW進(jìn)程中的散列比較程序,比如使用內(nèi)存調(diào)試器
盡管我們相信這種情況很少會發(fā)生,但攻擊者仍有可能創(chuàng)建程序來破解VI的密碼保護(hù)功能,從而將原密碼替換為攻擊者自己創(chuàng)建的密碼。如果您需要比VI密碼保護(hù)提供的更高的安全性,我們建議您改為刪除VI的程序框圖。

若想測試去除加密VI密碼的功能,可以訪問以下網(wǎng)址:
http://www.eeecontrol.com/vipj/

注:去除密碼后的VI程序處于鎖定狀態(tài),可以查看VI程序,但是無法編輯??梢酝ㄟ^此方法解除鎖定:“文件—VI屬性—保護(hù)—未鎖定”,解除鎖定后,就可以編輯源程序了。

2、刪除VI的程序框圖
刪除VI的程序框圖提供了比使用VI密碼保護(hù)更大的保護(hù),但恢復(fù)原始程序框圖難度很大且該VI只能運行在相同版本的LabVIEW中。
“刪除VI的程序框圖”首先要創(chuàng)建項目,創(chuàng)建項目后,右鍵“程序生成規(guī)范”,按照下圖選項選擇“源代碼發(fā)布”。

在“源文件設(shè)置”選項中,勾選“移除程序框圖”。

刪除VI的程序框圖后,從VI中恢復(fù)原始程序框圖非常困難,與僅僅包含文本語言編譯器生成的機器指令的可執(zhí)行應(yīng)用程序恢復(fù)文本程序源相當(dāng)。此外,LabVIEW只允許在編譯和保存VI的LabVIEW版本和平臺上運行VI;更新的LabVIEW版本或其他平臺將無法重新編譯VI。因此,您需要為希望支持的LabVIEW版本和平臺提供獨立的VI。
?
3、生成EXE程序
將VI編譯為可執(zhí)行文件(EXE)可以保護(hù)其源代碼,因為EXE文件無法輕易地被反匯編。這可以防止其他人查看、修改或復(fù)制VI的源代碼。
VI源程序生成EXE的方法步驟可以參考一下三易電子工作室的《零基礎(chǔ)入門教程》。

、生成 dll(動態(tài)鏈接庫)
LabVIEW可以生成DLL(動態(tài)鏈接庫),使得其他編程語言(如C++、C#、Python等)可以調(diào)用LabVIEW編寫的代碼。dll文件也無法輕易地被反匯編。這可以防止其他人查看、修改或復(fù)制VI的源代碼。
生成DLL首先要創(chuàng)建項目,創(chuàng)建項目后,右鍵“程序生成規(guī)范”,按照下圖選項選擇。

5、總結(jié)
下面對上面講的三種方法的優(yōu)缺點進(jìn)行總結(jié)。
(1)VI密碼保護(hù)
優(yōu)點:設(shè)置密碼方便,設(shè)置密碼后可以被其他程序調(diào)用。
缺點:加密強度太弱,去除密碼非常容易,容易被獲取源程序。
(2)刪除VI的程序框圖
優(yōu)點:無法恢復(fù)源代碼??梢员黄渌绦蛘{(diào)用。
缺點:VI只能運行在相同版本的LabVIEW中。
(3)生成EXE程序
優(yōu)點:無法恢復(fù)源代碼。
缺點:獨立程序,無法被其他項目調(diào)用。
(4)生成dll
優(yōu)點:無法恢復(fù)源代碼??杀黄渌绦蛘{(diào)用
缺點:生成較為復(fù)雜。