VBA密码破解,在一般地插件里,都是收费方式提供,Excel催化剂,全功能免费,最新推出VBA解密功能,还要公开核心源代码,这免费程度够诚意了么?
密码相关的历史推文:
第26波-正确的Excel密码管理之道
第123波-批量创建或取消Excel文件打开密码
Excel催化剂开源第18波-工作表、工作薄保护破解
功能展示
使用方法很简单,点击菜单后,跳出选择文件对话框,选择破解的文件即可,一次可选择多个文件,文件范围为:xls/xla/xlam/xlsm四种都可以。
中途会跳出这个错误弹窗,选择是即可,原因是破解后的文件用代码来打开,不能屏蔽此错误,手动选择【是】后,程序另存为文件后,再手动打开文件就不报错了。
破解后不会覆盖源文件,生成新的文件,保证不破坏源数据是数据处理最基本的操作需知。
因本破解方法是使用07版格式的文件破解方法,故遇到03版本格式程序自动打开后转为07版本格式,再进行破解,破解后的文件名也是07版本的,但07版本兼容性更好,破解也只是为了看源代码,不影响使用。
核心源代码公布
可能微软是基于推动其他企业级产品的销售的需求,虽然知道有破解的漏洞,但这么多年也没有意愿去修复它,这个破解的原理,之前发文过介绍过一个开源小工具,现Excel催化剂也是基于其开源代码来完成的。
VBA工程密码破解分享,同步推荐两款VBA代码助手工具
核心代码为:445042改为444278
代码语言:javascript复制 var binPath = Path.Combine(tmpDir, @"xlvbaProject.bin");
if (File.Exists(binPath))
{
try
{
byte[] buf = File.ReadAllBytes(binPath);
// Encodes the binary as hex, which allows us to edit the three hex couplets below
var str = new SoapHexBinary(buf).ToString();
// Find the VBA protection key ("DPB") and replaces it with a nothing key ("DBx")
// This causes the VBA editor to go through recovery and delete protection
str = str.Replace("445042", "444278");
// Writes the hex back to binary into the vbaProject.bin file
File.WriteAllBytes(binPath, SoapHexBinary.Parse(str).Value);
}
catch
{
}
}
VBA的未来
VBA不死,这个已经不是传说,的确这么多年,生态不断,但有它来做产品级的方案,破解这东西也是难以避免的,就算不被破解,用它来做复杂的应用,也是很吃力,VBE编辑器落后,VBA语言无生态,一些现代语言很简单实现的,落到它头上,就无比复杂。
当然,如果纯粹操作Excel等OFFICE对象来说,简单的套几个循环、选择结构,把录制宏的代码串起来一下,还是可行的。
在笔者未来有余力,可以给大家更多普及在.NET环境下的插件开发技术,特别是使用ExcelDNA框架的开发。当然最后的.NET语言当然是选择C#,没有C#,代码现成摆在面前,想抄也抄不动,例如本篇的VBA代码破解,也是从老外写的C#开源代码中抄到手的。