破解VBA工程密码
2010-04-08 12:57阅读:
Excel
VBA工程密码破解
如果要查看别人的有密码保护的VBA代码,可使用此程序。使用方法:新建Excel工作簿,
打开VBA编辑器,新建一模块
,复制以下代码。然后运行MoveProtect程序。运行过程中会出现提示,以指示要破解的文件路径和名称。被破解的文件一定是关闭状态的。
Sub MoveProtect()
Dim FileName As String
FileName =
Application.GetOpenFilename_
('Excel文件(*.xls & *.xla),*.xls;*.xla',
, 'VBA破解')
If
FileName
= CStr(False) Then
Exit Sub
Else
VBAPassword FileName, False
' 引用下面的自定义函数
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密码,并不是真正的破解。