首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

VBA解析VBAProject 06——清除VBA工程密码

如果你收到过一些这样Excel文件,文件里有VBA代码,实现了很好功能,可是作者却对VBA工程进行了加密,你可能会非常希望查看到里面的VBA代码。...会想到最直接办法当然就是要到密码,可这个一般做不到,这个时候有什么办法能够查看VBA代码呢? 前面介绍提取模块代码可以做到,这里再介绍一种直接清除密码功能。...所以,知道了这样能够清除密码,我们要做只是改写一个复合文档数据流就可以了: '清除vba工程密码 '清除CMG=" | DPB=" | GC=" '清除VBA工程密码 'Return 返回出错信息...(strSrc, arr(i)) If index Then flag = True index2 = VBA.InStr(index,...'标准api hook过程之四:组装API入口新代码 'HookBytes组成如下汇编 'push MyDialogBoxParam地址

4.9K62

VBA解析复合文档00

2007版本以上Office文件,如果编写了VBA代码,在文件压缩包里,会有个vbaProject.bin文件,也是使用复合文档结构来存储。...01 深入了解Excel文件结构 解析复合文档,能够更加深入理解Excel文件结构,虽然2007版本以上Excel已经 换成了xml标记语言存储,但是VBA代码相关vbaProject.bin...02 直接读取Excel VBA数据 如果想不打开Excel文件来读取Excel数据,一般使用ADO技术就能做到。...但是如果想要直接获取VBA代码,就只能通过解析文件结构获取,通过解析复合文档,解析出模块数据流,再进一步进行解析就可以。...03 实现一些特殊功能 VBA工程密码破解 VBA模块隐藏 主要参考文章: http://club.excelhome.net/thread-227502-1-1.html

1.2K10

VBA解析复合文档03——解析扇区链表

通过前面对复合文档结构分析,解析起来问题就不大了。...01 解析Header结构 Header结构一定是在文件最开始处,所以直接一个一个字段读取就行了: Private Type CFHeader Signature(7) As Byte...cf.lSectorSize = 2 ^ cf.Header.SectorShift cf.longNumPerSector = cf.lSectorSize \ 4 End Function 解析...4个字节存储再下一个SID Loop While flag End Function 03 解析FAT数组 通过DIFAT来解析FAT数组,FAT数组是构建扇区链表重要数据信息: '读取扇区配置表...,就可以去解析目录信息和MiniSAT了,因为目录信息和MiniSAT数据是很有可能需要多个扇区储存,必然需要扇区链接信息,所以FAT数组必须要先进行解析

75130

深入解析HTML标签

Markdown文件支持HTML标签,今天在编辑Markdown文档时,我希望嵌入一个带有图片链接,因此需要使用HTML 标签。...在Web开发领域中,我们经常听到超链接(hyperlink)这个术语,而HTML 标签则是创造这种连接关键。...html-a.jpg 标签基本结构 在HTML中,标签用于创建超链接,其基本结构如下: 链接文本 href属性: 指定链接目标地址。...无论是链接到外部资源、内部页面,还是通过JavaScript实现交互,都让我们更好地理解并利用这个简单而强大HTML元素。在构建网页时,善用标签,让连接之美在你网站中闪耀。...在这个角落里,我将分享一些生活中琐碎小事,或许是上班途中一张照片,又或者是追剧过程中一个情节,抑或是朋友之间闲聊,家庭中某个不经意瞬间,又或者是书籍中一段摘抄…… 总而言之,这个模块与技术无关

11510

VBA解析VBAProject 05——提取模块代码

通过前面的文章能够知道,每一个模块代码,在VBAProject中也就是一个数据流,这个数据流经过了run length encoding算法进行压缩。...前面介绍是自己使用VBA代码来解压缩,其实也有现成API RtlDecompressBuffer可以使用,具体用法可以网上找找。 所以,只要能找到模块数据流,然后进行解压缩就可以还原模块代码。...模块数据流也就是在复合文档中读取一个数据流,另外要注意是,这样读取出来模块数据流并不都是我们写VBA代码,还需要结合解析dir流时候得到模块信息进行截取,再进行解压缩: '读取某个模块代码...= cf.GetStream(PrePath & "VBA\" & ModuleName, b) If VBA.Len(ret) Then GetModuleCode = ret...Exit Function End If 'vba代码只是后面的一部分 Dim bCode() As Byte Dim moduleIndex

1.9K21
领券