EXCEL VBA工程密码破解 工作表保护破解
创始人
2025-01-08 22:37:05
0

这里写目录标题

  • 破解Excel宏工程加密
    • 方法一 新建破解宏文件
    • 方法二 修改二进制文件
  • 破解工作表保护
  • 引用

破解Excel宏工程加密

如图所示 白料数据处理已工程被加密。
在这里插入图片描述

方法一 新建破解宏文件

1 创建一个XLSM文件,查看代码 ALT+F11
在这里插入图片描述

2 新建一个模块,“插入”–“模块”把以下代码复制进模块并保存
在这里插入图片描述

Option 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 Long          Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As Long     Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, _         ByVal lpProcName As String) As Long     Private 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 Integer          Dim HookBytes(0 To 5) As Byte Dim OriginBytes(0 To 5) As Byte Dim pFunc As Long Dim Flag As Boolean   Private Function GetPtr(ByVal Value As Long) As Long     '获得函数的地址     GetPtr = Value End Function   Public Sub RecoverBytes()     '若已经hook,则恢复原API开头的6字节,也就是恢复原来函数的功能     If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6 End Sub   Public Function Hook() As Boolean     Dim TmpBytes(0 To 5) As Byte     Dim p As Long     Dim OriginProtect As Long         Hook = 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,         '若是则说明已经Hook         MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6         If 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) = &H68             MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4             HookBytes(5) = &HC3                          '标准api hook过程之五: 用HookBytes的内容改写API前6个字节             MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6             '设置hook成功标志             Flag = True             Hook = True         End If     End If End Function  Private Function MyDialogBoxParam(ByVal hInstance As Long, _         ByVal pTemplateName As Long, ByVal hWndParent As Long, _         ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer     If pTemplateName = 4070 Then         '有程序调用DialogBoxParamA装入4070号对话框,这里我们直接返回1,让         'VBE以为密码正确了         MyDialogBoxParam = 1     Else         '有程序调用DialogBoxParamA,但装入的不是4070号对话框,这里我们调用         'RecoverBytes函数恢复原来函数的功能,在进行原来的函数         RecoverBytes         MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _                            hWndParent, lpDialogFunc, dwInitParam)         '原来的函数执行完毕,再次hook         Hook     End If End Function  

3 双击 Sheet1表 代码编辑
在这里插入图片描述
或者 右击sheet1工作表,“查看代码”复制以下代码进去并保存:
在这里插入图片描述
工作表代码

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

4.打开需要破解vba工程密码的工作簿.
在这里插入图片描述

5.运行"call 破解"
在这里插入图片描述
或者 点击小三角形运行
在这里插入图片描述
稍后你再双击刚才要解密的VBA工程窗体.
在这里插入图片描述

6.破解完成后,请右键刚破解的VBA工程,在"查看工程时需要密码"的地方复选框取消选择,OK.完成.
在这里插入图片描述

7.完成后别忘了执行"call 恢复",恢复密码保护(恢复程序的密码保护,已被破解的文件不收影响. (请勿用于非法途径)
在这里插入图片描述

已验证,破解成功

方法二 修改二进制文件

1 修改xlsm文件为rar文件
在这里插入图片描述

2 修改xl->vbaProject.bin 文件
在这里插入图片描述

修改文件为txt可以直接用记事本打开,找到DPB修改为DPx后保存
再将文件修改为.bin后缀名
或者直接用可以编辑.bin后缀名的软件打开 把DPB修改为DPx后保存
在这里插入图片描述
修改后保存
在这里插入图片描述

3 覆盖原文件
在这里插入图片描述
直接点击确定
在这里插入图片描述
4 rar尾缀修改为xlsm
在这里插入图片描述
在这里插入图片描述

5 打开文件后查看代码无需工程密码!! 但是也看不了代码
点击是
在这里插入图片描述
查看代码弹窗报错!
先点击确定 不必理会
在这里插入图片描述
6 重新设置工程密码后保存
在这里插入图片描述
7 重新打开文件后 密码已经破解
在这里插入图片描述

破解工作表保护

Sheet1 表格被工作表保护,无法编辑
在这里插入图片描述
1:打开该文件,先解除默认的“宏禁用”状态
在这里插入图片描述

     再切换到“开发工具”选项卡,点击“宏”→“录制宏”,出现“录制新宏”窗口,在“宏名”定义一个名称(可以随意命名,只是省去了插入模块)为:        PasswordBreaker,点击“确定”退出; 

在这里插入图片描述
2:点击VB编辑器查看录制宏代码
在这里插入图片描述
代码如下
在这里插入图片描述
用如下内容替换右侧窗口中的所有代码:
在这里插入图片描述

注意:如果原先是XLSX文件不能保存宏,弹窗提示直接点击确定 保存为XLSM文件

3: 运行宏,此时会有弹窗提示,点击确定
在这里插入图片描述此时已经破解了工作表保护

在这里插入图片描述

引用

https://gist.github.com/parano/1868242

相关内容

热门资讯

黑科技辅助挂!丫丫衡阳字牌辅助... 黑科技辅助挂!丫丫衡阳字牌辅助器!本来是有开挂辅助软件(有挂解密)-哔哩哔哩1、全新机制【ai辅助工...
诀窍透视挂!赣牌圈小程序黑科技... 诀窍透视挂!赣牌圈小程序黑科技入口(辅助)竟然存在有辅助插件(哔哩哔哩)运辅助工具,进入游戏界面。进...
黑科技插件!同乡游有辅助软件吗... 黑科技插件!同乡游有辅助软件吗!都是是真的有开挂辅助攻略(有挂教学)-哔哩哔哩1、任何同乡游有辅助软...
项目透视挂!欢乐茶馆挂(辅助)... 项目透视挂!欢乐茶馆挂(辅助)果然真的有辅助方法(哔哩哔哩)1)欢乐茶馆挂免费钻石:进一步探索欢乐茶...
记者获悉!竞技联盟辅助插件!其... 记者获悉!竞技联盟辅助插件!其实确实有开挂辅助工具(有人有挂)-哔哩哔哩进入游戏-大厅左侧-新手福利...
秘籍透视挂!广西微乐小程序微信... 秘籍透视挂!广西微乐小程序微信辅助器免费(辅助)都是一直都是有辅助软件(哔哩哔哩)进入游戏-大厅左侧...
规律辅助挂!上品游戏辅助器!竟... 规律辅助挂!上品游戏辅助器!竟然确实有开挂辅助插件(的确有挂)-哔哩哔哩运上品游戏辅助器辅助工具,进...
法门透视挂!鸿狐辅助开挂透视(... 法门透视挂!鸿狐辅助开挂透视(辅助)一直是真的有辅助神器(哔哩哔哩)1、全新机制【鸿狐辅助开挂透视a...
技巧辅助挂!pokemmo脚本... 技巧辅助挂!pokemmo脚本辅助下载!切实是有开挂辅助挂(有挂教程)-哔哩哔哩1、让任何用户在无需...
步骤透视挂!老友广东辅助工具(... 步骤透视挂!老友广东辅助工具(辅助)原来一直总是有辅助app(哔哩哔哩)一、老友广东辅助工具游戏安装...