今天一个朋友让我看一个Excel的VBA程序。说是里面的工程打不开,需要密码让帮忙破解一下。
后来上网查找了一些相关的VBA工程保护内容。做了一个破解密码的VBA程序。把主要的列出来吧
1
'移除VBA编码保护2
Sub MoveProtect()3
Dim FileName As String4
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")5
If FileName = CStr(False) Then6
Exit Sub7
Else8
VBAPassword FileName, False9
End If10
End Sub11

12
'设置VBA编码保护13
Sub SetProtect()14
Dim FileName As String15
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")16
If FileName = CStr(False) Then17
Exit Sub18
Else19
VBAPassword FileName, True20
End If21
End Sub22

23
Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)24
If Dir(FileName) = "" Then25
Exit Function26
Else27
FileCopy FileName, FileName & ".bak"28
End If29

30
Dim GetData As String * 531
Open FileName For Binary As #132
Dim CMGs As Long33
Dim DPBo As Long34
For i = 1 To LOF(1)35
Get #1, i, GetData36
If GetData = "CMG=""" Then CMGs = i37
If GetData = "[Host" Then DPBo = i - 2: Exit For38
Next39
40
If CMGs = 0 Then41
MsgBox "请先对VBA编码设置一个保护密码
", 32, "提示"42
Exit Function43
End If44
45
If Protect = False Then46
Dim St As String * 247
Dim s20 As String * 148
49
'取得一个0D0A十六进制字串50
Get #1, CMGs - 2, St51
52
'取得一个20十六制字串53
Get #1, DPBo + 16, s2054
55
'替换加密部份机码56
For i = CMGs To DPBo Step 257
Put #1, i, St58
Next59
60
'加入不配对符号61
If (DPBo - CMGs) Mod 2 <> 0 Then62
Put #1, DPBo + 1, s2063
End If64
MsgBox "文件解密成功
", 32, "提示"65
Else66
Dim MMs As String * 567
MMs = "DPB="""68
Put #1, CMGs, MMs69
MsgBox "对文件特殊加密成功
", 32, "提示"70
End If71
Close #172
End Function73

其实OFFICE这套东西的密码都算是比较好破解的。 尤其是ACCESS的密码。简直和没有一样。呵呵~~!
浙公网安备 33010602011771号