EXCEL VBA工程密码破解 工作表保护破解

这里写目录标题

  • 破解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 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表 代码编辑
在这里插入图片描述
或者 右击sheet1工作表,“查看代码”复制以下代码进去并保存:
在这里插入图片描述
工作表代码

sub 破解()
if hook then
msgbox "破解成功"
end if
end subsub 恢复()
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算数据中心(二)

目录 三、绿色节能技术&#xff08;一&#xff09;配电系统节能技术&#xff08;二&#xff09;空调系统节能技术&#xff08;三&#xff09;集装箱数据中心节能技术&#xff08;四&#xff09;数据中心节能策略和算法研究&#xff08;五&#xff09;新能源的应用&#xff08;六…

新版本 idea 创建不了 spring boot 2 【没有jkd8选项】

创建新项目 将地址换成如下 https://start.aliyun.com/

Calibration相机内参数标定

1.环境依赖 本算法采用张正友相机标定法进行实现&#xff0c;内部对其进行了封装。 环境依赖为 ubuntu20.04 opencv4.2.0 yaml-cpp yaml-cpp安装方式&#xff1a; &#xff08;1&#xff09;git clone https://github.com/jbeder/yaml-cpp.git #将yaml-cpp下载至本地 &a…

深度解析:disableHostCheck: true引发的安全迷局与解决之道

在Web开发的浩瀚星空中&#xff0c;开发者们时常会遇到各种配置与调优的挑战&#xff0c;其中disableHostCheck: true这一选项&#xff0c;在提升开发效率的同时&#xff0c;也悄然埋下了安全隐患的伏笔。本文将深入探讨这一配置背后的原理、为何会引发报错&#xff0c;以及如何…

深度学习落地实战:基于GAN(生成对抗网络)生成图片

前言 大家好&#xff0c;我是机长 本专栏将持续收集整理市场上深度学习的相关项目&#xff0c;旨在为准备从事深度学习工作或相关科研活动的伙伴&#xff0c;储备、提升更多的实际开发经验&#xff0c;每个项目实例都可作为实际开发项目写入简历&#xff0c;且都附带完整的代…

Qt会议室项目

在Qt中编写会议室应用程序通常涉及到用户界面设计、网络通信、音频/视频处理等方面。以下是创建一个基本会议室应用程序的步骤概述&#xff1a; 项目设置&#xff1a; 使用Qt Creator创建一个新的Qt Widgets Application或Qt Quick Application项目。 用户界面设计&#xff1…

牛客TOP101:合并k个已排序的链表

文章目录 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 2. 解题思路 多个链表的合并本质上可以看成两个链表的合并&#xff0c;只不过需要进行多次。最简单的方法就是一个一个链表&#xff0c;按照合并两个有序链表的思路&#xff0c;循环多次就可以了。   另外一个思路&a…

(c++)virtual关键字的作用,多态的原理(详细)

1.viirtual修饰的两种函数 virtual 修饰的函数有两种&#xff0c;一个是虚函数&#xff0c;一个是纯虚函数。 2.虚函数与纯虚函数的异同之处 1.虚函数与纯虚函数的相同之处 虚函数和纯虚函数都重写的一种&#xff0c;什么是重写呢&#xff1f;重写是指在子类中写和父类中返…

《0基础》学习Python——第十四讲__封装、继承、多态

<封装、继承、多态> 一、类和实例解析 1、面向对象最重要的概念就是类&#xff08;Class&#xff09;和实例&#xff08;Instance&#xff09;&#xff0c;必须牢记类是抽象的模板 &#xff0c;比如Student类&#xff0c;而 实例是根据类创建出来的一个个具体的“对象”…

《昇思25天学习打卡营第23天|onereal》

第23天学习内容简介&#xff1a; ----------------------------------------------------------------------------- 本案例基于MindNLP和ChatGLM-6B实现一个聊天应用。 1 环境配置 配置网络线路 2 代码开发 下载权重大约需要10分钟 ------------------------------- 运…

大模型技术对学校有什么作用?

大模型技术对学校有多方面的作用&#xff0c;可以在教学、管理、决策等多个领域带来显著的改进。以下是大模型技术对学校的主要作用&#xff1a; 1. 个性化教学&#xff1a;大模型技术可以帮助教师分析学生的学习行为和历史成绩&#xff0c;从而定制个性化的教学计划和资源。这…

Linux桌面环境手动编译安装librime、librime-lua以及ibus-rime,提升中文输入法体验

Linux上的输入法有很多&#xff0c;大体都使用了Fcitx或者iBus作为输入法的引擎。相当于有了一个很不错的“地基”&#xff0c;你可以在这个“地基”上盖上自己的“小别墅”。而rime输入法&#xff0c;就是一个“毛坯别墅”&#xff0c;你可以在rime的基础上&#xff0c;再装修…

HCNA ICMP:因特网控制消息协议

ICMP&#xff1a;因特网控制消息协议 前言 Internet控制报文协议ICMP是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息&#xff0c;他对于手机各种网络信息、诊断和排除各种网络故障有至关重要的作用。使用基于ICMP的应用时&#xff0c;需要对ICMP的工…

Apollo docker-compose

来源 https://www.apolloconfig.com/#/zh/deployment/quick-start-docker 路径 /usr/apollo Sql 自己复制 Vim docker-compose.yml #如果安装过了 记得删除mysql 历史文件 rm -r /var/lib/mysql version: 2.1services:apollo-quick-start:image: nobodyiam/apollo-quick…

AWS CDN新增用户ip 地区 城市 响应头

1.需要自定义cdn缓存策略 这里的策略也是先复制之前的cdn策略哈 最后复制完了 全部新增这两条标头key CloudFront-Viewer-Country CloudFront-Viewer-City 2.然后新增cdn函数&#xff0c;应用你写的这个函数 function handler(event) {var request event.request;var respon…

PySide(PyQt),csv文件的显示

1、正常显示csv文件 import sys import csv from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QWidgetclass CSVTableWidgetDemo(QMainWindow):def __init__(self):super().__init__()# 创建显示控件self.widget QWidget(self)sel…

动手学深度学习——3.多层感知机

1.线性模型 线性模型可能出错 例如&#xff0c;线性意味着单调假设&#xff1a; 任何特征的增大都会导致模型输出的增大&#xff08;如果对应的权重为正&#xff09;&#xff0c; 或者导致模型输出的减小&#xff08;如果对应的权重为负&#xff09;。 有时这是有道理的。 例…

ENSP防火墙NAT智能选举综合实验

实验目的及其拓扑图&#xff1a; 创建我的拓扑&#xff1a; 新建修改配置fw1上的nat策略和安全策略&#xff1a; pc2ping1.1.1.1测试结果&#xff1a; 服务器映射配置&#xff1a; 配置对应安全策略&#xff1a; 配置fw2&#xff0c;子公司的NAT策略&#xff1a; 配置全局选路路…

Commons-Collections篇-CC6链分析

前言 我们前两篇已经分析过URLDNS链和CC1链&#xff0c;我们这次分析的链就是基于前两条链之上的CC6链 CC6链的使用对于版本来说没有CC1限制那么大&#xff0c;只需要commons collections 小于等于3.2.1&#xff0c;都存在这个漏洞 0.环境安装 可以接着使用我们之前分析CC1链…

AV1技术学习:Affine Motion Compensation

一、Affine Model Parameter 除了传统的平移运动补偿&#xff0c;AV1 还支持仿射变换模型&#xff0c;将当前像素点 (x, y) 通过以下方式投影到参考帧中的预测像素点 (x, y). 参数 (h13, h23) 对应于平移模型中使用的常规运动向量。 参数 h11 和 h22 控制垂直和水平轴上的比例…