Excel 请问如何破解VBA工程不可查看

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel 请问如何破解VBA工程不可查看相关的知识,希望对你有一定的参考价值。

BA代码作为知识产权的重要内容,越来越受到高度重视。但VBA工程的保护相对而言是比较脆弱的。
我这儿有一份文件,是通过加密技术将VBA工程锁定为不可查看,全“程”含一个标准模块和三个过程约75行代码,作为测试文档,求破解。
VBA工程保护密码为"shourou".
如果您对此感兴趣,欢迎破解!
注意:应能完整破解该工程,即还原该VBA工程,而非仅仅读取或者查看到其中的过程名称或者模块名称。
代码还是能dump出来的

Module: ----------------------------------- mdlVBA -----------------------------------

Attribute VB_Name = "mdlVBA"
Option Explicit ''''显式变量声明
Option Private Module ''''外部工程禁用

Public Const gstrUSER_MSG_TITLE As String = "ExcelHome.Net"

Private Function FieldsExists(intWsIndex As Integer, Optional blnDisplayAlerts As Boolean = True) As Boolean
''''功能:检查指定工作表的字段名称与内置字段名称是否匹配
''''参数:intWsIndex:=工作表索引;blnDisplayAlerts:=不匹配时是否弹出警告对话框
Dim Ws As Excel.Worksheet
Dim astrFieldNames() As String
Dim vntHeader As Variant
Dim I As Integer
Dim intColumnSize As Integer
On Error GoTo ErrorHandler
Select Case intWsIndex
Case 1
Set Ws = Sheet1
intColumnSize = 10 ''''字段数量
ReDim astrFieldNames(1 To intColumnSize)
astrFieldNames(1) = "OfficeID"
astrFieldNames(2) = "OfficeName"
astrFieldNames(3) = "Region"
astrFieldNames(4) = "Province"
astrFieldNames(5) = "City"
astrFieldNames(6) = "Address"
astrFieldNames(7) = "StartData"
astrFieldNames(8) = "ExpiryData"
astrFieldNames(9) = "OfficeArea"
astrFieldNames(10) = "Reviser"
End Select
vntHeader = Ws.Cells(1, 1).Resize(1, intColumnSize).Value ''''标题行
For I = 1 To intColumnSize
If Not StrComp(vntHeader(1, I), astrFieldNames(I), vbTextCompare) = 0 Then Exit For
Next
If I > intColumnSize Then
FieldsExists = True
Else
If blnDisplayAlerts = True Then
MsgBox Ws.Name & Chr$(34) & vntHeader(1, I) & Chr$(34) & "与标准字段名" & Chr$(34) & astrFieldNames(I) & Chr$(34) & "不匹配。", vbExclamation, gstrUSER_MSG_TITLE
End If
End If
On Error GoTo 0
Exit Function
ErrorHandler:
If ExcelHomeErrorHandler("Private Function FieldsExists") = True Then Resume Next
End Function

Public Function FileExists(strFileName As String) As Boolean
''''功能:判断文件或者文件夹是否存在
''''参数:strFileName:=待考查的文件或者文件夹的完整路径
FileExists = (Len(Dir(strFileName, vbDirectory)) > 0)
End Function

Public Function ExcelHomeErrorHandler(strProcName As String) As Boolean
''''功能:错误处理程序
''''参数:strProcName:=出错的过程名称
Dim strErrMessage As String
strErrMessage = "程序运行在" & Chr$(34) & strProcName & Chr$(34) & "过程时发生错误。" & vbCrLf & _
"错误时间:" & Now & vbCrLf & _
"错误代号:" & Err.Number & vbCrLf & _
"错误原因:" & Err.Description
Err.Clear ''''清除错误
If MsgBox(strErrMessage & vbCrLf & "是否继续?", vbExclamation + vbYesNo, gstrUSER_MSG_TITLE) = vbYes Then
ExcelHomeErrorHandler = True
Else
With Application
.StatusBar = False ''''清空状态栏
.DisplayAlerts = True ''''恢复警告对话框
.EnableEvents = True ''''恢复事件
.ScreenUpdating = True ''''恢复屏幕更新
End With
ExcelHomeErrorHandler = False
End If
End Function
参考技术A 发来帮你破解,那都不是事儿。 参考技术B 取消 共享 即可

excel2013关于VBA密码破解的教程

参考技术A

  在 Excel 中可能有些重要数据需要修改,但遗憾的是忘记了密码。这个时候就需要进行对文件密码的破解。下面是我带来的关于excel2013关于VBA密码破解的教程,欢迎阅读!

  excel2013关于VBA密码破解的教程

  教程1:将你要破解的Excel文件关闭,切记一定要关闭呀!然后新建一个Excel文件


excel2013关于VBA密码破解的教程图1

  教程2:打开新建的这个Excel,按下alt+F11,打开vb界面,新建一个模块,如图所示


excel2013关于VBA密码破解的教程图2

  教程3:将代码复制到这个模块中,代码如下:

  Private Sub VBAPassword() '你要解保护的Excel文件路径

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

  If Dir(Filename) = "" Then

  MsgBox "没找到相关文件,清重新设置。"

  Exit Sub

  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 Sub

  End If

  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, "提示"

  Close #1

  End Sub


excel2013关于VBA密码破解的教程图3

  教程3:然后点击运行按钮,如图所示,绿色的小三角就是


excel2013关于VBA密码破解的教程图4

  教程4:你会看到,打开了一个文件夹,找到我们要破解的这个文件,然后点击打开


excel2013关于VBA密码破解的教程图5

  教程5:稍等几分钟你就会看到破解成功的提示了


excel2013关于VBA密码破解的教程图6

以上是关于Excel 请问如何破解VBA工程不可查看的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL VBA 隐藏了工作表,加密的,如何显示或破解

VBA工程密码忘记怎么办quchu?

如何编写代码解除EXCEL中VBA的工程保护

就是昨天问的vba的问题那个

如何去除excel的宏保护?

EXCEL方程保护和VBA密码破解