excel中VBAProject密碼破解與保護(轉+原)

1、加密方式 (轉)
方法一:加保護密碼,可對不一樣的過程加不一樣的密碼
    優:方便易行                  
    缺:VBA key幾秒鐘,就將你的密碼替換掉 安全

方法二:
     一、用UltraEdit32軟件打開你想保護VBA的excel文件
     二、點查找>查找,查找「ID="{」 (不帶兩端引號),注意點選找ASCII字符,會找到形如ID="{143DB7BA-14E4-40FF-BBBF-5C6612F797BE}"
     三、將大括號中的數字或字母隨便改一改,而後保存,不影響你軟件的使用,但查看工程時會提示你「工程不能查看」
    優:破解的方法中需使用十六進制編輯工具,能防住不會使用該工具的人
    缺:加密不方便 工具

2、破解方式
    excel2000之前的密碼和VBA密碼很是容易破解,網上有不少直接能夠找出密碼明文的軟件
    excel xp之後,微軟改進了VBA保護密碼的加密方式,原來的看VBA密碼的軟件找不到VBA的密碼了,找出VBA保護密碼成爲了一個難題。好像安全了一些,但不久,就出現了破解VBA保護密碼的軟件,它的思路並非找出VBA保護密碼,而是直接用隨機四個字母替換了VBA保護密碼,用這種程序(網上並不難找),一個VBA採用密碼保護的excel文件不到2秒的時間,就可讓你看到VBA源碼。
    後來有人對access文件的格式進行了研究,找到了新的加密方法(一樣可用於excel文件)。利用UltraEdit32或其它十六進制編輯工具編輯帶VBA的excel文件中的ID或DPB中的內容。通過這樣處理的VBA會出現,「工程不可查看」的狀態。一樣,也發現把加密VBA後的excel文件中的ID、CMG、DPB以及GC串替換爲空,就會清除VBA保護密碼。(已有同志將該過程作成了excel的加載宏,不用十六進制工具就可)
    能夠說excel中的vba源碼毫無安全性,網上也見了一些利用VBA開發的程序,註冊方式也比較先進,但源碼容易看到,寫個註冊程序或乾脆改掉註冊較驗也就毫無做用。excel文件中VBA保護密碼實際毫無做用,徹底無必要設定VBA保護密碼。
    因此我認爲,利用VBA開發excel程序只可用於不需盈利的通常用途,不宜用於商用,想開發商用的VBA程序可考慮使用access,access中除了給VBA加密碼外,還能夠將mdb轉換爲mde文件達到保護VBA代碼的做用,而mde文件是將VBA代碼所有編譯後將VBA源碼刪除,因此這仍是比較安全的。
    (讓別人看到你商業程序的源碼比破解更讓人不可接受)
    寫這段文字時,沒有去研究excel 2007中是否有所改進。 編碼

破解方式網上最多答案的是這樣一段代碼 加密

 

'移除VBA編碼保護 spa

Sub MoveProtect() excel

     Dim FileName As String 開發

     FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla,*.xls;*.xla", , "VBA破解") rem

     If FileName = CStr(False) Then 源碼

        Exit Sub string

     Else

        VBAPassword FileName, False

     End If

End Sub

'設置VBA編碼保護

Sub SetProtect()

     Dim FileName As String

     FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla,*.xls;*.xla", , "VBA破解")

     If FileName = CStr(False) Then

        Exit Sub

     Else

        VBAPassword FileName, True

     End If

End Sub

Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)

       If Dir(FileName) = "" Then

          Exit Function

       Else

          FileCopy FileName, FileName & ".bak"

       End If

       Dim GetData As String * 5

       Open FileName For Binary As #1

       Dim CMGs As Long

       Dim DPBo As Long

       For i = 1 To LOF(1)

           Get #1, i, GetData

           If GetData = "CMG=""" Then CMGs = i

           If GetData = "[Host" Then DPBo = i - 2: Exit For

       Next

    

       If CMGs = 0 Then

          MsgBox "請先對VBA編碼設置一個保護密碼...", 32, "提示"

          Exit Function

       End If

    

       If Protect = False Then

          Dim St As String * 2

          Dim s20 As String * 1

       

          '取得一個0D0A十六進制字串

          Get #1, CMGs - 2, St

    

          '取得一個20十六制字串

          Get #1, DPBo + 16, s20

    

          '替換加密部份機碼

          For i = CMGs To DPBo Step 2

              Put #1, i, St

          Next

       

          '加入不配對符號

          If (DPBo - CMGs) Mod 2 <> 0 Then

             Put #1, DPBo + 1, s20

          End If

          MsgBox "文件解密成功......", 32, "提示"

       Else

          Dim MMs As String * 5

          MMs = "DPB="""

          Put #1, CMGs, MMs

          MsgBox "對文件特殊加密成功......", 32, "提示"

       End If

       Close #1

End Function

可是親測以後,發現顯示密碼破解成功,vba模塊不見了……

下面是另一種有效方法:

 1.     Backup the xls file

 2.     Using a HEX editor, locate the DPB=... part

 3.     Change the DPB=... string to DPx=...

 4.     Open the xls file in Excel

 5.     Open the VBA editor (ALT+F11)

 6.     the magic: Excel discovers an invalid key (DPx) and asks whether you want to continue loading the project (basically ignoring the protection)

 7.     You will be able to overwrite the password, so change it to something you can remember

 8.     Save the xls file*

 9.     Close and reopen the document and work your VBA magic!

一樣,該方法只適合於2003版,07或10版本要另存爲03版本!

相關文章
相關標籤/搜索