魔方网表 让信息化更简单

 找回密码
 注册
查看: 1803|回复: 0

'设置VBA编码保护

[复制链接]
lnxxnchzyl 发表于 2009-10-19 10:01:08 | 显示全部楼层 |阅读模式
'设置VBA编码保护
Private Function SetProtect()
  Dim FileName As String
  FileName = Application.GetOpenFilename("Excel文件(*.xls), *.xls,Excel文件(*.xla), *.xla", , "VBA破解")
  If FileName = False Then
     Exit Function
  Else
     VBAPassword FileName, True
  End If
End Function


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, "提示"
       GoTo clo
    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
clo:
    Close
End Function
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2024-5-1 22:54 , Processed in 0.060376 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表