原始出處:www.cnblogs.com/saveutime/p/vbaprotect.html
QQ:908852353
Email:saveutime@foxmail.com
20180402:
其實在找到軟件Unviewable+ VBA(官網)的時候,我並沒有對其加密后的文件進行強度驗證,但通過一段時間后的測試發現,該加密也只是把代碼放入到了其他*.bin文件里了,其實也就是換湯不換葯,還是非常容易提取出vba代碼的。
在使用Unviewable+ VBA加密的工作簿,使用最強的加密級別,發現加密后的代碼幾乎沒有混淆,而官方的*.xlam文件里面混淆較為嚴謹(其實也就是注釋多了很多,畫風如下所示,感覺就是為了規避某VBA代碼提取工具的限制)。
上圖代碼截取自RC-UnviewablePlus.xlam。
可能很多學習VBA的小伙伴都在苦惱,自己辛辛苦苦寫的VBA代碼就被別人拿去使用,有些還拿去商業用途。其實任何一門編程語言,代碼的安全都是相對的,有編譯就會有反編譯。只能保證代碼的相對安全,可以讓大多數拿來主義的小白望而卻步。
針對Excel文檔的保護可以從單元格、工作表和工作簿等層面加以保護,那針對VBA代碼可以從哪些方面加以保護呢?主要有以下3個方法加以保護。
一 VBAProject工程保護
該功能是有Excel官方提供,用於對VBA代碼加以密碼保護,具體設置方法如下動態圖所示:
此方法的優點就是,設置起來方便,但缺點也很明顯,此密碼很容易被破解或免密查看。后期我會出視頻加以介紹,敬請期待~
二 VBA工程不可查看
接觸VBA比較久的小伙伴一般都會碰到在點擊VBA工程的時候,彈出對話框,提示VBA工程不可查看。如下圖所示:
那究竟如何設置並達到工程不可查看呢?方法很容易,有兩種方法:
方法一(共用級鎖定):
1、先對excel檔進行一般的vbaproject”工程密碼保護"。
2、打開要保護的檔,選擇∶工具--->保護--->保護並共用活頁簿--->以追蹤修訂方式共用-->輸入密碼-->保存檔。
完成后,當你打開“vbaproject”工程屬性時,就將會提示∶“工程不可看"
方法二(推薦,破壞型鎖定)∶
1、使用7z或Winrar等解壓軟件,右鍵打開*.xlsm文件;
2、打開xl文件夾,把文件vbaProject.bin拖放到桌面;
3、使用UltraEdit軟件打開vbaProject.bin文件,並使用Ctrl+F打開查找對話框,輸入id=,定位到需要修改的位置(動態演示如下);
4、只要將id后大括號中的位元組隨便修改一下即可。保存vbaProject.bin文件;
5、把修改好的vbaProject.bin文件拖入打開的7z對話框xl文件夾中,再次打開Excel文件的宏編輯器界面,即可發現VBA工程已經不可查看了(動態演示如下)。
當然通過上面破壞型鎖定也不是萬無一失的,因為也是可以通過修改加以破解的。如果覺得上面的方法比較繁瑣,完全可以通過別人寫好的VBA程序加以完成。
眼尖的小伙伴可能也看到了,上面的工具也是自帶解鎖功能的,不要干壞事哦~
三 Unviewable+ VBA
目前研究下來,通過軟件Unviewable+ VBA加密的VBA效果最好(此處為啥表紅,請看文章開頭的總結),軟件主界面截圖如下:
國內使用該軟件加密的還不多,但國外很多使用該軟件對其的VBA代碼進行加密,加密操作方法如下:
雖然加密后的工作簿3.xlsm打開VBE宏編輯器后,也是提示VBA工程不可查看,但此時的工程不可查看是無法通過方法二中的超酷VBA解鎖器加以加鎖的,因為加密算法發生了很大的變化,不是簡簡單單修改id得到的。
四 我的總結
今天主要為大家介紹3個VBA加密的方法,其中前兩個方法被廣泛使用,但加密的效果也是很差的,但對於VBA小白來說足夠,對於VBA大神來說,也不在乎我們寫的代碼。
當然也可以使用第三種方法進行強加密,和第二種方法混淆,因為效果展現都是VBA工程不可查看。
大家如果對Excel VBA的保護有更好的方法,歡迎騷擾^_^
---恢復內容結束---