这里写自定义目录标题

  • 方法一:
    • 方法二:

方法一:

这种方法实际是避开VBA工程密码验证,即骗vba编辑器,该密码输入成功,请求放行。
不管他是破解还是欺骗 能达到我们的目的角开就行

1.新建一个工作簿,打开,按ALT+F11,进入vba代码编辑器窗口:
2.新建一个模块,“插入”–“模块”把以下代码复制进模块并保存

ption Explicit
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _(Destination As Long, Source As Long, ByVal Length As Long)Private Declare Function VirtualProtect Lib "kernel32" (lpAddress As Long, _ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As LongPrivate Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As LongPrivate Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, _ByVal lpProcName As String) As LongPrivate Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As Long, _ByVal pTemplateName As Long, ByVal hWndParent As Long, _ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As IntegerDim HookBytes(0 To 5) As Byte
Dim OriginBytes(0 To 5) As Byte
Dim pFunc As Long
Dim Flag As BooleanPrivate Function GetPtr(ByVal Value As Long) As Long'获得函数的地址GetPtr = Value
End FunctionPublic Sub RecoverBytes()'若已经hook,则恢复原API开头的6字节,也就是恢复原来函数的功能If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6
End SubPublic Function Hook() As BooleanDim TmpBytes(0 To 5) As ByteDim p As LongDim OriginProtect As LongHook = False'VBE6.dll调用DialogBoxParamA显示VB6INTL.dll资源中的第4070号对话框(就是输入密码的窗口)'若DialogBoxParamA返回值非0,则VBE会认为密码正确,所以我们要hook DialogBoxParamA函数pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")'标准api hook过程之一: 修改内存属性,使其可写If VirtualProtect(ByVal pFunc, 6, &H40, OriginProtect) <> 0 Then'标准api hook过程之二: 判断是否已经hook,看看API的第一个字节是否为&H68,'若是则说明已经HookMoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6If TmpBytes(0) <> &H68 Then'标准api hook过程之三: 保存原函数开头字节,这里是6个字节,以备后面恢复MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 6'用AddressOf获取MyDialogBoxParam的地址'因为语法不允许写成p = AddressOf MyDialogBoxParam,这里我们写一个函数'GetPtr,作用仅仅是返回AddressOf MyDialogBoxParam的值,从而实现将'MyDialogBoxParam的地址付给p的目的p = GetPtr(AddressOf MyDialogBoxParam)'标准api hook过程之四: 组装API入口的新代码'HookBytes 组成如下汇编'push MyDialogBoxParam的地址'ret'作用是跳转到MyDialogBoxParam函数HookBytes(0) = &H68MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4HookBytes(5) = &HC3'标准api hook过程之五: 用HookBytes的内容改写API前6个字节MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6'设置hook成功标志Flag = TrueHook = TrueEnd IfEnd If
End FunctionPrivate Function MyDialogBoxParam(ByVal hInstance As Long, _ByVal pTemplateName As Long, ByVal hWndParent As Long, _ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As IntegerIf pTemplateName = 4070 Then'有程序调用DialogBoxParamA装入4070号对话框,这里我们直接返回1,让'VBE以为密码正确了MyDialogBoxParam = 1Else'有程序调用DialogBoxParamA,但装入的不是4070号对话框,这里我们调用'RecoverBytes函数恢复原来函数的功能,在进行原来的函数RecoverBytesMyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _hWndParent, lpDialogFunc, dwInitParam)'原来的函数执行完毕,再次hookHookEnd If
End Function

3.右击sheet1工作表,“查看代码”复制以下代码进去并保存:

sub 破解()
if hook then
msgbox "破解成功"
end if
end subsub 恢复()
RecoverBytes
msgbox "恢复成功"
end sub

4.到此,一个vba破解程序完成了,回到该工作簿窗口,文件-打开 打开需要破解vba工程密码的工作簿.
5.运行"call 破解" 稍后你再双击刚才要解密的VBA工程窗体.是不是如入无人之境啊,工程保护密码形同虚设啊?
6.破解完成后,请右键刚破解的VBA工程,在"查看工程时需要密码"的地方复选框取消选择,OK.完成.
7.完成后别忘了执行"call 恢复",恢复密码保护(恢复程序的密码保护,已被破解的文件不收影响. (请勿用于非法途径)

已验证,破解成功

方法二:

新建一个Excel工作簿,Alt+F11 打开VBA编辑器,新建一个模块 ,复制以下代码,注意如提示变量未定义,则把Option Explicit行删除即可,经测试已经通过.'移除VBA编码保护
Sub MoveProtect()Dim FileName As StringFileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")If FileName = CStr(False) ThenExit SubElseVBAPassword FileName, FalseEnd If
End Sub'设置VBA编码保护
Sub SetProtect()Dim FileName As StringFileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")If FileName = CStr(False) ThenExit SubElseVBAPassword FileName, TrueEnd If
End SubPrivate Function VBAPassword(FileName As String, Optional Protect As Boolean = False)If Dir(FileName) = "" ThenExit FunctionElseFileCopy FileName, FileName & ".bak"End IfDim GetData As String * 5Open FileName For Binary As #1Dim CMGs As LongDim DPBo As LongFor i = 1 To LOF(1)Get #1, i, GetDataIf GetData = "CMG=""" Then CMGs = iIf GetData = "[Host" Then DPBo = i - 2: Exit ForNextIf CMGs = 0 ThenMsgBox "请先对VBA编码设置一个保护密码...", 32, "提示"Exit FunctionEnd IfIf Protect = False ThenDim St As String * 2Dim s20 As String * 1'取得一个0D0A十六进制字串Get #1, CMGs - 2, St'取得一个20十六制字串Get #1, DPBo + 16, s20'替换加密部份机码For i = CMGs To DPBo Step 2Put #1, i, StNext'加入不配对符号If (DPBo - CMGs) Mod 2 <> 0 ThenPut #1, DPBo + 1, s20End IfMsgBox "文件解密成功......", 32, "提示"ElseDim MMs As String * 5MMs = "DPB="""Put #1, CMGs, MMsMsgBox "对文件特殊加密成功......", 32, "提示"End IfClose #1
End Function

原文地址:https://www.cnblogs.com/Summer6/p/11245383.html

EXCEL vba工程密码破解相关推荐

  1. Excel VBA工程密码破解程序 (绝对可以破解)

    '新建一个Excel工作簿,Alt+F11 打开VBA编辑器,新建一个模块 ,复制以下代码,注意如提示变量未定义,则把Option Explicit行删除即可,经测试已经通过.'移除VBA编码保护 S ...

  2. EXCEL2013 vba工程密码破解

    EXCEL vba工程密码破解 这种方法实际是避开VBA工程密码验证,即,骗vba编辑器,该密码输入成功,请求放行. 原理不多说了,先将方法公布: ========================== ...

  3. 深入讲解破解Excel Vba工程密码

    Notice:虽然网上好多破解的教程,但是因为EXCEL版本时有更新,很多小白都不知道怎么破解,这边做一个举一反三的教程,做到vba excel工程密码几乎全部可以破解. 这边先给出一遍参考文章: h ...

  4. Excel VBA代码密码破解

    1.查看VBA代码,有密码  2.破解密码: 2.1:修改文件名后缀,修改为压缩包格式 2.2:打开压缩包文件,找到文件:vbaProject.bin 2.3:把这个文件从压缩包中拖出来 2.4:打开 ...

  5. Excel2013破解vba工程密码以及工作表保护密码

    今天从网上学到如何破解vba工程密码以及工作表保护密码,在这里分享一下.  破解vba工程密码:(引用自http://jingyan.baidu.com/article/2009576170cc05c ...

  6. 忘记CAD VBA工程密码,如何去掉

    http://blog.163.com/mudong@126/blog/static/369751952014026492735/ 一.下载二进制文本编辑器:Hex Editor II(二进制.十六进 ...

  7. Excel工作表密码破解

    Excel是我们工作中经常要用到的数据处理工具,有时候为了安全会给工作表设置密码,但是时间长了可能会忘记密码,这时连自己都无法修改了,这时我这个方法就很有用了. 打开Excel程序,找到开发工具,打开 ...

  8. 如何破解Excel VBA的工程密码

    有时候,我们对自己所设置的 Excel VBA工程密码忘记了,导致不能对 VBA 代码进行修改或修正.此时,可以用本文所述方法进行移除. 破解的原理和方法:MS Excel 文件以压缩格式存储的,如果 ...

  9. Excel VBA密码破解工具(VBA实现)

    http://www.oschina.net/code/snippet_54124_15443 使用UltreEdit之类的十六进制编辑程序打开.XLS文件,在文本模式下查找"[Host E ...

最新文章

  1. java模拟https请求_java-用httpclient模拟发送https请求
  2. RSA, ACS5.X 集成配置
  3. webpack4--提取css到单独文件并且压缩css
  4. java putall实现,Java EnumMap putAll()
  5. MacOS开启系统自带的NTFS读写功能
  6. Spark学习笔记——在集群上运行Spark
  7. 使用UltraEdit来拷贝粘贴二进制
  8. spring— Spring与Web环境集成
  9. LeetCode 1935. 可以输入的最大单词数
  10. qt的项目中单个文件加载样式表
  11. Windows端高仿超级逼真Mac系统方法
  12. idea 15 license server
  13. Linux下更改Python的软连接
  14. UE4 半透明材质粒子无法在透明背景前显示问题
  15. RemoteFX+RDP8.0+hyper-v重定向智能卡,U盾问题
  16. 生存预测模型样本量计算(完善中)
  17. 黑客防线2012合订本
  18. html网页打开很小,IE浏览器打开链接新窗口很小如何解决?
  19. redis 应用场景
  20. 坚持写博客,以身说法——我与CSDN的1234

热门文章

  1. 内网渗透之内网信息收集(综合)
  2. 第十四届浙江财经大学程序设计竞赛 A A Sad Story【贪心】
  3. dreamweaver作业静态HTML网页设计——我的家乡海南旅游网站
  4. 月结4 - GR/IR重分类(Regroup) [F.19/OBYP]
  5. python模拟行星运动_Java课程设计——模拟行星运动
  6. Gartner 2018新技术成熟度曲线(五大技术趋势)
  7. Flowable Unknown property used in expression: xxx
  8. Windows常用快捷键及运行命令
  9. 内存不能为“read”或written的解决
  10. 加载cad菜单(.mns .mnu .cuix文件)