它还将恶意 OTM 文件(Outlook VBA 项目)保存到磁盘,其中包含宏、恶意电子邮件附件,在某些情况下,还保存了电子邮件应发送到的收件人列表。...如图 2 所示,VBA 代码构建电子邮件正文并将恶意文档附加到电子邮件中。我们已经看到.docx和.lnk文件都被用作附件。...Outlook VBA 模块生成的电子邮件,带有包含远程模板的 Word 文档附件 该电子邮件包含英文和俄文文本。但是,如图 3 所示,俄语编码存在问题。...下载者 他们的下载器有很多变体,其中大多数是用 C# 或 VBScript 编写的。本节将仅介绍其中两个最原始的变体;其他的并没有那么大,而且非常简单。...一些 C# 编译器模块示例中包含的源代码中留下了注释,或者 Outlook VBA 模块生成的电子邮件中的俄语编码错误,这表明在发布和使用它们的许多工具之前没有进行严格的审查或测试在野外。
Zloader是一种针对银行的特洛伊木马,旨在窃取目标金融机构用户的凭据和其他私人信息。 Zloader的初始攻击向量是基于收件箱的网络钓鱼消息,其中会附带Word文档附件,并包含非恶意的代码。...初始感染链 研究人员通过分析后发现,恶意软件首先通过包含Microsoft Word文档作为附件的网络钓鱼电子邮件抵达目标用户的主机系统。...在这种情况下,与VBA的其他滥用案例一样,Zloader也会利用这种功能来创建恶意宏脚本。 Excel将记录用户执行的所有步骤,并将其保存为一个名为“process”的宏。...一旦Excel宏被创建并准备好执行,脚本将修改Windows的注册表键以禁用受害者计算机上VBA的信任访问。这使得脚本能够无缝地执行功能,而不会弹出任何的警告。...在禁用信任访问后,恶意软件将创建并执行一个新的Excel VBA,然后触发Zloader的下载行为。
但是,XLL 文件是可移植的可执行文件,遵循许多电子邮件网关已经阻止的动态链接库 (DLL) 的格式。我们建议组织考虑以下缓解措施: 配置您的电子邮件网关以阻止包含 XLL 附件的入站电子邮件。...将 Microsoft Excel 配置为仅允许受信任的发布者签名的加载项。 配置 Microsoft Excel 以完全禁用专有加载项。...您可以通过查看资源名称或同样存储在资源部分中的 XML 定义文件来识别包含 Excel 加载项代码的文件。 图 5 – Excel-DNA XML 定义。...在此示例中,包含恶意代码的加载项是在 .NET 中开发的,位于MODDNA资源中。...该脚本将 XLL 文件的路径作为参数,然后提取、解压缩并将资源保存到文件夹中。 image.png 图 7 – Excel-DNA 提取脚本。
换句话说,占位符是一个逗号后跟另一个逗号——如果包含该参数,则省略的参数将在逗号之间。使用命名参数,则没有必要——仅包括要更改其默认值的那些可选参数。...这是因为Excel具有两类工作表,其中包含数据的行和列以及嵌入式图表的工作表和图表工作表(仅包含一个图表)。因此,Sheets集合包含Sheet对象,有两种类型:工作表和图表工作表。...然而,对ThisWorkbook的需求可能并不明确,在许多情况下,正在执行的VBA代码位于该代码所操纵的同一工作簿中,因此不需要ThisWorkbook。...通过电子邮件发送工作簿 使用Workbook对象的SendMail方法,你可以通过电子邮件将工作簿发送给一个或多个收件人。使用系统上安装的任何电子邮件系统,将工作簿作为电子邮件的附件发送。...可以将邮件收件人指定为显式电子邮件地址,也可以指定为通讯簿中条目的名称。
△ 提示信息 攻击者通常将代码置于 xlAutoOpen函数中,该函数会在加载项被激活时立即触发执行。这意味着,与要求用户启用宏的 VBA 宏不同,受害者只要打开就会执行恶意代码。...由于 XLL 是可移植的可执行文件,许多电子邮件网关都会拦截该格式的文件或者仅允许受信任签名的加载项。...△ XML 文件 包含恶意代码的加载项是使用 .NET 开发的,位于 MODDNA资源中。要分析该恶意代码,需要将资源保存到硬盘并使用 LZMA 算法进行解压缩。...△ .NET 文件代码 使用 Excel-DNA 项目创建的 XLL 文件也可以使用项目提供的脚本自动解压缩,该脚本将 XLL 文件的路径作为参数,然后提取、解压缩并将资源保存到文件夹中。...为了混淆程序控制流,样本中包含许多连续的 jmp指令。 △ 动态调试截图 经过分析后,研究人员发现可执行代码后有一段加密数据。数据在循环中解密,首先确定数据的位置与大小,紧接着进行异或解密。
Epic Manchego生成的OOXML电子表格文件缺少一部分已编译的VBA代码,该代码专门用于在Microsoft专有Office软件中编译的Excel文档。...OOXML电子表格使用扩展名.xlsx和.xlsm(用于带有宏的电子表格)。 使用EPPlus创建VBA项目时,它不包含已编译的VBA代码。...EPPlus没有创建编译代码的方法:创建编译VBA代码的算法是Microsoft专有的。...已编译的VBA代码可以存储攻击者的恶意代码。比如Epic Manchego以自定义VBA代码格式存储了他们的恶意代码,该格式也受到密码保护,以防止安全系统和研究人员分析其内容。 ?...修复建议 过滤电子邮件附件和从组织外部发送的电子邮件; 实施功能强大的端点检测和响应防御; 增强网络钓鱼意识培训并执行网络钓鱼练习 ?
这样可以防止漏掉拼写错误的变量名。如果没有OptionExplicit,则仅将拼写错误的变量名视为新变量,并且结果很可能是bug。...断点 在VBA编辑器中,可以在任何代码行上设置断点。当执行到达该行代码时,VBA进入中断模式,这使你可以执行各种调试任务(稍后将对此进行解释)。要设置断点,将编辑光标放在该代码行上,然后按F9。...当VBA处于中断模式时,你可以执行其他调试操作,如以下各节所述。当VBA在断点处停止时,该行以黄色突出显示。 VBA在执行包含断点的行之前停止。...换句话说,当VBA在断点处停止时,包含该断点的行尚未执行。也可以仅在包含可执行代码的行上设置断点。其中不包括Dim语句。VBA不允许你在不可执行的行上设置断点。...如果你的应用程序是在小型办公室内部使用的,则分发可能仅包括使工作簿文件在服务器上可用以及向同事发送电子邮件。
幸运的是,Excel的VBA有一个内置的RegExp对象,可以在代码中使用它,如下所示: Public Function RegExpMatch(input_range As Range,pattern...要忽略文本大小写,将参数match_case设置为FALSE。因为VBA Regexp的限制,不支持不区分大小写的模式。...例如: [^13]将匹配不是1或3的任何单个字符。 [^1-3]将匹配不是1、2或3(即从1到3的任何数字)的任何单个字符。 在电话号码列表中,假设要查找没有国家代码的电话号码。...记住,任何国际代码都包含+号,可以使用[^\+]字符类查找不包含加号的字符串。重要的是要认识到,这个表达式匹配不是+的任何单个字符。...,而无需将任何VBA代码添加到他们的工作簿中,因为在外接程序安装过程中,这些函数可以顺利集成到Excel中。
标签:VBA,自动筛选,Autofilter方法 许多Excel功能都可以使用VBA来实现,自动筛选就是其中之一,对应着VBA的Autofilter方法。...图1 如果只需要筛选数据并执行一些基本操作,建议直接使用Excel工作界面提供的内置筛选功能。而当希望将筛选数据作为自动化的一部分时,应使用VBA的Autofilter方法。...Sub FilterRows() Worksheets("Data").Range("A1").AutoFilter End Sub 上面的代码简单地将AutoFilter方法应用于列(或者,...这只是意味着,如果在列标题中看不到筛选图标,则在执行上述代码后,将可以看到它,如果执行代码前可以看到它,则执行代码后它将被删除。..."打印机", _ Operator:=xlOr, _ Criteria2:="空调" End Sub 注意,代码中使用了xlOr运算符,告诉VBA筛选满足两个条件中任意一个的数据
它会传播到其他文档,可能会遇到泄漏敏感信息,文件被加密等等 当前Microsoft Office的宏是使用Visual Basic for Applications(VBA)编写的,是Microsoft...流行的Visual Basic编程语言的一种变体专门为Office建的 VBA可在大多数Office程序中使用,例如Access,Excel,Outlook,PowerPoint,Project,Publisher...比如说将样式和格式应用于文本,或者与数据源进行通信,甚至单击即可创建全新的文档 0x01 如何工作 宏病毒的工作原理是假装以看似正常的方式执行操作,有些文档嵌入文档中并在打开文档时自动运行。..., Toolsmacro等等 Word.Macro.Hot 此病毒在会WINWORD6.INI配置文件中创建一个包含“hot date”的条目。...,我们可以使用恶意软件清除工具进行程序检测并清除宏病毒 并且在使用电脑时中不要立即打开电子邮件或电子邮件附件,并且保持防病毒软件的更新。
添加到标题中。...RibbonX中似乎没有支持的控件ID列表。可以通过使用VBA代码禁用与上一节中所述类似的特定控件来使用变通方法。 那么,如何找到要更改的其他上下文菜单的名称呢?...小结 在Excel 97至Excel 2003中,可以使用VBA代码将控件添加到每个上下文菜单中,但无法使用RibbonX更改上下文菜单。...在Excel 2007中,可以使用VBA代码将控件添加到几乎每个上下文菜单中。但是,无法使用VBA更改某些上下文菜单,例如形状和图片的上下文菜单。此外,无法使用RibbonX更改上下文菜单。...在Excel 2010及后续版本中,可以使用VBA代码将控件添加到几乎每个上下文菜单中。使用VBA更改某些上下文菜单的限制与Excel 2007中相同。
运用VBA操作单元格的技术 操作单元格的VBA技术也能够应用于表。 联合多个单元格区域 要选取多个单元格区域,可以使用VBA的联合运算。下面的代码选取行4、行1和行3。...myTable").ListRows(1).Range, _ ActiveSheet.ListObjects("myTable").ListRows(3).Range).Select End Sub 将变量数组中的值赋给表行...统计行数 可以使用下面的代码统计表的行数。...下面是一些用于控制表的有用的VBA代码。...Sub ShowDataEntryForm() '仅运行于表开始于单元格A1 ActiveSheet.ShowDataForm End Sub 检查表是否存在 下面的代码检查是否表已经存在于工作簿
Visual Basic for Applications(VBA)是一种事件驱动的编程语言,广泛应用于Microsoft Office应用程序(如Excel、Word和Access)中。...在Excel中,您可以通过“录制宏”功能来生成宏代码,也可以手动编写代码。模块模块是存储VBA代码的容器。在Excel中,每个工作簿都可以包含多个模块。模块分为标准模块和类模块。...变量变量是用于存储数据的命名空间。在VBA中,变量有不同的数据类型,如整数(Integer)、字符串(String)和布尔值(Boolean)等。定义变量时,可以使用Dim关键字。...用户自定义表单可以包含文本框、按钮、下拉列表等控件,帮助用户输入数据和触发操作。数据库连接通过VBA,您可以连接和操作外部数据库,如Access、SQL Server等。...本文提供了VBA的基本概述,接下来的教程将详细讲解各个知识点,并通过实际案例帮助您掌握VBA编程技能。无论您是编程新手还是有经验的开发者,VBA都能为您的工作带来意想不到的便利和效率提升。
它会传播到其他文档,可能会遇到泄漏敏感信息,文件被加密等等 当前Microsoft Office的宏是使用Visual Basic for Applications(VBA)编写的,是Microsoft...流行的Visual Basic编程语言的一种变体专门为Office建的 VBA可在大多数Office程序中使用,例如Access,Excel,Outlook,PowerPoint,Project,Publisher...比如说将样式和格式应用于文本,或者与数据源进行通信,甚至单击即可创建全新的文档 0x01 如何工作 宏病毒的工作原理是假装以看似正常的方式执行操作,有些文档嵌入文档中并在打开文档时自动运行。...通常情况下宏病毒会通过秘密替换合法命令的方式对计算机进行破坏,当执行在计算机上的操作时,病毒将接管并告诉计算机执行完全不同的操作 宏病毒利用msf拿shell,利用msf生成宏,将生成的payload...,我们可以使用恶意软件清除工具进行程序检测并清除宏病毒 并且在使用电脑时中不要立即打开电子邮件或电子邮件附件,并且保持防病毒软件的更新。
正则表达式,常被用来检验、替换符合某个模式(规则)的字符串,在代码中常缩写为regexp。VBA中并没有直接提供正则表达式的对象,需要借助VBScript的正则对象。...方法: Execute,执行匹配,将正则模式应用于字符串,并返回Matchs集合。 Replace,根据正则表达式全部替换。...Name:张三丰,Phone:13801380000 VBA代码如下: Option Explicit Sub RegExpDemoSyntax() Dim objRegEx As Object...需要传入要在其上执行正则表达式的文本字符串。Execute方法返回一个Matches集合,其中包含了在string中找到的每一个匹配的Match对象。...如果未找到匹配,Execute将返回空的Matches集合。
这个例子中,这比原来的Python 代码仅少 1 行 。然而随着脚本行数的快速增长,正则表达式可以节省脚本的代码量。 re.findall() 以列表形式返回字符串中符合模式的所有实例。...pattern表示我们想要搜索的子字符串,string 表示我们想要搜索的主字符串。主字符串可以由多行组成。 .* 是字符串模式的简写。我们很快就会解释它的细节。...正如函数名所示,它用来替换字符串的各个部分。举个例子: ? 前两行已经在前面出现过了。 在第三行我们将 address 作为 re.sub() 函数的第三个参数,即邮件标题中完整的From: 字段。...用正则表达式和Pandas分拣邮件 Corpus 是一个包含数千封电子邮件的文本文件。我们将使用正则表达式和Pandas 来将每封电子邮件适当分类 使Corpus 语料库更便于阅读和分析。...然后我们创建一个空的列表emails 用来存放包含每个电子邮件详细信息的字典。 我们经常将代码的结果打印到屏幕上来判断代码是对还是错。
那么,Range对象的完全限定引用如何表示? Excel VBA对象层次结构顶部的对象是Application。Application本身包含其他对象。 Range对象包含在Worksheet对象中。...然而,也可以将Range属性应用于Range对象,如果这样,由Range属性返回的对象会改变。 正如Microsoft所解释的那样,这是因为Range.Range属性与应用该属性的对象相关。...单元格包含在Range对象中。 也许更准确地说,单元格是一个属性。实际上,可以使用此属性(单元格)来引用单元格区域。上面的示例将Range属性应用于Worksheet对象。...换句话说,将Range属性应用于Range对象时,其行为相对于该区域(更准确地说,是其左上角)。将其应用于Worksheet对象时,其行为相对于工作表。...通过将Range属性应用于Range对象来创建引用不是很直观。然而,相对于其他区域引用单元格的能力有几个优点,允许在事先不知道其地址的情况下引用单元格。
当你需要在运行时动态地添加或删除对象的行为时。由于装饰器模式允许你在运行时包装和解包装对象,所以你可以在运行时改变对象的行为。 当你需要将一些行为应用于多个独立的对象时。...接下来,我们定义了一个基础装饰器BaseNotifierDecorator,它包含一个wrappedNotifier字段,用于保存被包装的组件。...在主函数中,我们创建了一个EmailNotifier实例,并将其包装在一个SMSNotifierDecorator实例中。...总结 前面示例代码中的装饰器设计允许我们在运行时动态地扩展EmailNotifier的功能,而不需要修改其代码。...例如,在这个例子中,如果我们想要在发送电子邮件和短信之后还要发送一个推送通知,你可以定义一个新的装饰器类PushNotifierDecorator,并将其应用于EmailNotifier对象。
标签:Word VBA 如果你的文档中或者他人传给你的文档中有很多表格,但这些表格有不同样式的边框,而你现在想将这些表格的边框设置为统一的样式,怎么办?...当然,你可以逐个表格逐个表格地设置,但是如果文档中的表格很多,这样的操作既繁琐又浪费时间。这种情形下,VBA就派上用场了。...下面的代码为当前文档中的所有表格设置统一的边框样式: Sub AllTablesSetUniformBorders() Dim strTitle As String Dim strMsg As String...WdLineWidth Dim objBorderColor As WdColor Dim objArray As Variant Dim n As Long Dim i As Long '可以将下面的值修改为想要的样式...,vbOKOnly, strTitle End Sub 你可以修改代码,使得表格边框的样式是你想要的。
URL编码 URL编码是浏览器发送数据给服务器时使用的编码,它是编码算法,而不是加密算法,URL编码的目的是把任意文本数据编码为以%前缀表示的文本,编码后的文本仅包含A~Z,a~z,0~9以及-_....编码 我们知道电子邮件协议是文本协议,如果我们要在电子邮件中添加二进制文件,此时就可以通过Base64编码将二进制文件转换成文本,否则就会出现乱码现象。...Base64编码是一种将二进制数据用文本表示的编码算法,它只包含64个字符,如下所示: ['A', 'B', 'C', ......由于将原先的3个字节变成4个字节,也就是说长度增加了33%,因此,传输效率降低了,目前我们通过将Base64应用于传输少量二进制数据的常见中,例如Cookie、URL等。...Java代码如下: String origin = "编码测试!"
领取专属 10元无门槛券
手把手带您无忧上云