首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

内联函数 c-浅谈内联函数与定义的区别详解

用内联取代:   1.内联函数在运行时可调试,而定义不可以;   2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而定义则不会;   3.内联函数可以访问类的成员变量,...但是即使使用修改宏代码也不是万无一失的,例如语句   result = MAX(i++, j);   将被预处理器解释为   result = (i++) > (j) ?...(i++) : (j);   对于C++ 而言内联函数 c,使用宏代码还有另一种缺点:无法操作类的私有数据成员。   让我们看看C++ 的“函数内联”是如何工作的。...对于那些没有吃够苦头的C++程序员,如果他说编写构造函数、析构函数与赋值函数很容易,可以不用动脑筋,表明他的认识还比较肤浅,水平有待于提高。   ...显然,这种做法不会产生转去转回的问题,但是由于在编译将函数休中的代码被替代到程序中,因此增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省

62840

干货 | Office文档钓鱼的实战和免杀技巧

编写主体内容,点击 “开发工具 — Visual Basic”,双击 “ThisDocument” ,将原有内容全部清空,然后将payload全部粘贴进去,保存并关闭该 VBA 编辑器 。...无毒正常的 vba 脚本 注意:VBA重踏不适用于以Excel 97-2003工作簿(.xls)格式保存的文件 Sub Hello()Dim XX=MsgBox("Hello VBS") 效果比较好...思路: 编写一个带有宏代码的DOTM文档,上传服务器 编写一个能够远程连接的DOCX文档 将该文档压缩找到并更改settings.xml.rels文件中的内容,将其中的target内容修改为服务器上DOTM...文档的URL 将DOCX解压的内容再以存储模式压缩为ZIP 修改后缀名为DOCX,打开即可实现远程注入宏文档 按照上述Word钓鱼方法制作,保存保存类型为 dotm , fish.dotm, 开启...word 中同步更新的效果,问题出在这个域的内容可以是一个公式 (或者说表达式),这个公式并不限制内容。

6.5K21
您找到你想要的搜索结果了吗?
是的
没有找到

Office如何快速进行免杀

编写主体内容,点击 “开发工具 — Visual Basic” 。 ? 双击 “ThisDocument” ,将原有内容全部清空,然后将 CobaltStrike 生成 payload ?...无毒正常的 vba 脚本 免杀测试 新建一个包含的 docx 文档 ?...然后点开发工具>>>>>点击 ? ? 的位置选择当前文档,然后点击创建 ? 然后再把 CS生成的宏代码复制进去,Ctrl+A 全选,然后 Ctrl+C 粘贴 ? CS 生成宏代码流程 ? ?...注意:这里一定要先关闭杀软,不然保存失败,因为现在还没有做免杀处理 然后文件夹下就有 233.docm 这个文件了 然后再创建一个简单的无毒 vba 脚本 ? 保存退出,命名为 2.vba ?...关掉 Word,CS 上依旧是可以执行命令的 PS: VBA 宏代码解释:CobaltStrike 生成默认的 VBA 导入四个 Windows API 函数,常见的 ShellCode 加载器 代码

4.2K30

红队 | CS加载上线初探

0x01 原理初探 (Macro)是一种批量处理的称谓,是指能组织到一起作为独立的命令使用的一系列Word命令,可以实现任务执行的自动化,简化日常的工作。...如果被执行,它会去检测当前模板是否被感染病毒,如果没有被感染,它会将释放自身的病毒代码。...VBA和VBA代码,并且可以宏代码进行混淆处理以增加分析工具的分析难度。...每一个流模块中都会存在一个未被文档化的 PerformanceCache,其中包含了被编译的 P-Code 代码,如果 _VBA_PROJECT 流中指定的 Office 版本与打开的 Office...通过信息收集得知目标的 Office 版本,利用 VBA stomping 使被特定版本的 Office 打开才会执行恶意行为宏代码,除此之外的 Office 版本打开执行正常宏代码 ?

2.7K30

干货 | Office文档钓鱼之如何快速进行免杀

编写主体内容,点击 “开发工具 — Visual Basic” 。...无毒正常的 vba 脚本 免杀测试 新建一个包含的 docx 文档 然后点开发工具>>>>>点击 的位置选择当前文档,然后点击创建 然后再把 CS生成的宏代码复制进去,Ctrl+A 全选...,然后 Ctrl+C 粘贴 CS 生成宏代码流程 然后粘贴进来 再 Ctrl+S 保存 这里需要选择否,然后保存为启用的 word 文档 注意:这里一定要先关闭杀软,不然保存失败,因为现在还没有做免杀处理...vba 脚本,效果更好 包括卡巴斯基以及 windows 自带的杀软均不拦截查杀,效果还很好用 试下动态查杀,咱们运行下,火绒和 360 均可以成功上线 成功上线 关掉 Word,CS 上依旧是可以执行命令的...PS: VBA 宏代码解释:CobaltStrike 生成默认的 VBA 导入四个 Windows API 函数,常见的 ShellCode 加载器 代码: CreateRemoteThread

2.5K20

zloader再次升级检测逃避措施

最近出现的 zloader 的恶意文档升级了额外的检测逃避手段,使得确定宏代码的入口点以及额外的分析变得更加困难。 介绍 多亏了 Excel 4.0 才让很多恶意代码老树开新花,来!...所有人都必须熟悉这些古老的宏代码。 在 2020 年 4 月初时,宏代码仍然相当整洁: ? 随后,Trickbot 增加了隐藏工作簿、随机位置写入等检测逃避的手段让分析变得更加困难: ?...乍一看该文档没什么异常,没有任何隐藏的工作簿或受密码保护的。而如果你查看 Sheet2 的内容并缩小比例尺,则会看到分散在各处的 Excel 4.0 宏代码。 ?...寻找起点 困难的是找到宏代码执行的起始位置。可以尝试搜索 formula 并右键点击搜索到的第一个单元格,然后尝试逐步执行宏代码。 ? 但是,由于该公式依赖已经写入不同单元格的信息,执行会失败。...检测逃避 发现了起始位置,就可以开始逐步执行宏代码了。

59020

图解 Rust 编译器与语言设计 | Part1:Rust 编译过程与展开

并且 Rust 基金也已经进入了最后都流程,由此可以猜想,这些巨头很可能已经加入了基金。...早期在没有 MIR 的时候,借用检查是在 HIR 阶段来做的,所以主要问题就是生命周期检查的粒度太粗,只能根据词法作用域来进行判断,导致很多正常代码因为粗粒度的借用检查而无法通过编译。...以上是 Rust 整体编译流程。但 Rust 语言还包含来强大的元编程:「(Macro)」,宏代码是如何在编译期展开的呢?请继续往下看。...在这个过程中,如果遇到了宏代码(不管是声明还是过程),则会使用专门的「解释器(Macro Parser)」 来解析宏代码,将宏代码展开为 TokenStream,然后再合并到普通文本代码生成的 TokenSteam...所以后来 Rust 引入了过程。过程允许你在展开过程中进行任意计算。但我们不是说,Rust 没有暴露 AST API 吗?为什么过程可以做到这么强大?

5.1K31

进击的恶意文档之 VBA 进阶之旅

例如一个 docm 文件,文件头的魔数是 504b0304(ZIP 文件的魔数),修改其后缀为 doc ,文件头的魔数不变,且能够正常执行。...通过信息收集得知目标的 Office 版本,利用 VBA stomping 使被特定版本的 Office 打开才会执行恶意行为宏代码,除此之外的 Office 版本打开执行正常宏代码 目前 VBA...可以看到流模块中反编译的源代码被替换成了伪造的 VBA 代码,下面使用工具进行分析 OleTools ? Olevba 识别出来了所有的给出 VBA stomping 警告 Oledump ?...Oledump 并没有识别出含有的流模块 Pcodedmp ?...当启动 word 启动 excel 并弹出 excel 旧版警告,点击禁用还会启动第二个 excel,一共启动五次,用户体验极差,当 excel 处理完成之后才会弹出 Word 文档 ?

4.5K30

疫情期间竟然还有这种病毒?解密古老而又神秘的宏病毒

打开含有的文档文件,遇到"安全警告",单击"启用内容"按钮,就会执行。\使用快捷键Alt+F11可以打开vb编辑器,查看宏代码。...选择启用宏代码就会运行,如果存在恶意行为,恶意行为就会执行。这样的分析方式存在一定的风险。...生成,你可以快速创建一个Excel 文档: 打开 Excel 转到视图选项卡(View Tab) - > - >查看 添加一个名称,为 book1 配置,然后单击 "创建" 用生成的代码替换所有当前的宏代码...选择"MS Excel 4.0表"并单击"确定"。 已创建一个名为"1"的新工作表。这是一种特殊的工作表类型,可以在其中输入XLM(所谓的表)。...使用方法: 1、创建一个虚假的vb文件,该文件插到恶意文档中,里面需要放正常的代码,用于迷惑杀软。 Sub test() ' ' 该vb代码没有任何功能,用于迷惑杀软。

5.5K30

C语言代码优化的一些经验及小技巧(四)

可见,使用GCC可正常通过编译,这说明可以向无参数的函数传递参数。但是,需要注意的是,在一些IDE中不能通过编译。 所以,为了提高程序的统一性、安全性与可读性。...我们对没有参数的函数必须使用void进行填充。我们使用void填充上面的f函数之后,编译就不通过了,报错如下: ? 尽可能为简单功能编写函数 有时候,我们需要用函数去封装仅用一两行代码就可完成的功能。...x:y); } 当然,也可以使用来代替上面的函数,代码如下: #define MAX(x,y) (((x) > (y)) ?...(x) : (y)) 在C程序中,我们可以适当地用宏代码来提高执行效率。宏代码本身不是函数,但使用起来与函数相似。...然而,如果在非调度函数中也使用控制参数来决定具体怎样工作,那么这样做无疑增加函数间的控制耦合,很可能使函数间的耦合度增大,并使函数的功能不唯一, 违背了函数功能的单一原则。

61221

【SAS Says】基础篇:SAS初步

幸运的是,的基本功能不是那么难理解。本章介绍的最普遍使用的SAS语言的特征。 处理器 标准SAS程序中,提交程序,SAS就编译并立即执行。...避免错误 让人很头痛,可以通过分段形式避免。首先,用SAS标准语言写下程序;接着,将其转变为宏代码。 2....如下的例子: DO i=1 to &iterations; TITLE ”Addresses in &country”; 经处理器编译,语句变成: DO i=1 to 10; TITLE ”Addresses...用创建一个模块化的代码 可以使一段代码在一个或多个程序中被反复使用,而不需要重复的去编写相同或相似的代码。...排除错误的bug 避免错误 尽可能先用标准SAS代码写你的程序,当没有错误了,再转成宏代码,先一次增加一个逻辑特征。再增加%macro和%mend。再增加变量。

3K41

攻防演练对抗赛之初识文件钓鱼

出现安全警告,提升被禁用,点击启用内容。 成功上线。 ? 2、cs生成payload cs也支持生成office宏代码。 ? 选择一个监听器,直接复制代码到宏代码框中。 ? ? 上线成功。 ?...office钓鱼存在几大不适用性: 1、对方电脑未使用office。 2、office默认禁用,打开文件进行提示。 3、独特的宏文件后缀,docm,xlsm等,容易引起他人怀疑。...全局建立持久性后门 office除了用于钓鱼,还可以用来建立隐蔽的持久性后门。 新建一个,位置要选择所有活动模版和文档。 ? 在ThisDocument中写入宏代码,进行保存。 ?...成功建立了一个隐藏持久性后门,打开任意文档都可以触发宏代码,且杀软没有任何反应。 ? ? 可执行exe文件 msf和cs都可以生成反弹木马,通过鼠标点击的方式进行触发。...运行成功上线,留下一个黑窗口。 ? 可以使用 -w hidden进行隐藏执行,但hidden会报毒,可以尝试下拆分hidden进行绕过。

2.1K20

查看自动类型推导结果的方法

,但是在有的时候我们可能还是想知道编译器推导出来的类型具体是什么,下面就来介绍几种获取类型推导结果的方法,根据开发的不同阶段,你可以在不同阶段采用不同的方法,比如在编写代码编译代码,代码运行时。...你只要将鼠标移到想要查看的那个变量上面,就会弹出这个变量的类型,不过要让IDE能够推导出代码中变量的类型,你的代码至少要没有语法错误,因为IDE静态分析你代码来推导出这些类型,如下面的代码:int a...编译打印编译器肯定是知道变量的类型的,但是它没法直接告诉你,有一个可以编译器告诉你的办法,就是编译发生错误时编译器在报告的错误信息中肯定会提到导致此错误的类型,因此我们可以声明一个如下的模板:template...class dumpType;因为上面的模板只有声明,没有具体的定义,因此如果要实例化这个模板就会导致一个编译错误。...这时可以采用另外一种手段来输出变量的类型,跟上小节中的例子一样借助模板的技术,实现一个模板函数,在模板函数中利用编译器提供的,把这个函数的原型打印出来,函数原型中就包含了函数的参数个数及其类型,这个由于不是

7810

C++内联函数,默认参数,占位参数

本章主要内容: 1)内联函数(替代宏代码段) 2)默认参数 3)占位参数 ---- 1.C++的内联函数分析 1.1讲解内联函数之前,首先回忆下之前讲的define定义: 之前讲过定义会经过预处理器进行文本替换...,缺点就在于没有类型检查,没有任何编译过程,编译器根本不知道类型是什么....所以,C++中,当需要某个类型的常量,可以使用const常量来替代常数,如: const int A=3; #define A 3 1.2那如果#define 定义的是宏代码段...(++a) : b ) ); 从而a被加了两次,所以输出结果为7. 1.3所以C++便添加了内联函数来代替宏代码段 内联函数用inline关键字声明,比如上面的MAX(A,B),则可以替换为: inline...内联函数:就会在每次调用的地方,将内联函数里的代码段”内联地”展开,所以省去了额外的开销 注意:当内联函数里的代码过多,且流程复杂,编译器可能拒绝该函数的内联请求,从而变成普通函数 2.函数的参数默认值

1.3K50

ShellReset RAT 利用基于恶意的 word 文档传播

的技术分析 打开基于的文档,它将显示一条消息,要求用户启用以查看内容,如图7所示。 图7:文档显示的消息,要求用户启用。...相关的宏代码部分在启用取消隐藏图像,如图8所示。 图8:用于取消隐藏图像的宏代码。...该宏代码执行的主要功能是: 它将工作目录和放置的文件的名称设置为ServiceHostV1000。...它使用csc.exe和命令行参数“ -target:winexe -out:”编译代码。编译的二进制文件将出现在“启动”目录中。 它将删除包含源代码的工作目录。 它执行编译的二进制文件。...csproj:包含编译C#项目msbuild.exe使用的项目文件。 cs:包含在运行时需要编译的C#代码。

1.2K30

『JSA神助攻之三』将JSA另存为xlam以加载项方式供外部程序无感调用和手撸大法生成带JSA的xlam文件

此乃旧文,题目改一下,有点系统性,JSA助攻第一波:可以通过Application.Run接口,让外部程序或VSTO/ExcelDNA项目可以调用JSA的宏代码。...可以在外部程序/VSTO插件里直接使用Application.Addins.Add,将xlam文件加载进来。当然也可以直接修改注册表,让WPS表格每次启动自动加载。...如果是插件环境,需要对用户当前的工作薄进行操作呢? 一开始笔者想到的方案是将当前工作薄另存为xlsm(如果当前工作薄不是xlsm文件),然后打开压缩包,在里面修改JSA的文件。...经过以上三步操作,重新将解压的xlsx文件进行zip压缩,改后缀名为xlsm,使用WPS表格打开,即可将JSA宏代码加载进文件中并可使用。 如果还想在工作表上,将形状绑定这个JSA宏代码呢?...就算没有Excel/WPS客户端,也可以手撸一个文件出来,实现相应功能,当然代价就是没有任何API接口的帮助,只能自己对文本文件进行读写操作。

5510

利用避免发送确认邮件忘记添加附件

当然我们也可以设置延迟发送,这样可以在一定程度上解决问题,但是如果你发送邮件就去干别的了,那么延迟发送显然也不保险。...当然你也可以先尝试一下加载项能否在你的电脑上正常工作可以的话就不用搞这么复杂了:下载ISD WebTeam 重构邮件附件检查加载项For Outlook 2007/2010 准备工作 Office的默认设置在各个版本中各有不同...image.png 图1:显示开发工具 image.png 图2:打开信任中心设置 image.png 图3:设置安全性 编写 完成准备工作,回到Outlook主界面,主选项卡上多了一个“开发工具...启用 重新打开Outlook,由于我们的没有进行数字签名,所以默认是没有启用的,启动Outlook会弹出提示,请在弹出的提示框中点击“启用”(如图6,我的截图中第一项可用是因为进行了的数字签名...然后点击“发送”,就会看到如下提示: image.png 图7:测试 看到这个图说明已经正常工作,点击“否”即可停止发送,然后补上附件重新发送。如果不需要html附件,只要点“是”即可。

2.5K90

『JSA神助攻之三』将JSA另存为xlam以加载项方式供外部程序无感调用和手撸大法生成带JSA的xlam文件

此乃旧文,题目改一下,有点系统性,JSA助攻第一波:可以通过Application.Run接口,让外部程序或VSTO/ExcelDNA项目可以调用JSA的宏代码。...可以在外部程序/VSTO插件里直接使用Application.Addins.Add,将xlam文件加载进来。当然也可以直接修改注册表,让WPS表格每次启动自动加载。...如果是插件环境,需要对用户当前的工作薄进行操作呢? 一开始笔者想到的方案是将当前工作薄另存为xlsm(如果当前工作薄不是xlsm文件),然后打开压缩包,在里面修改JSA的文件。...经过以上三步操作,重新将解压的xlsx文件进行zip压缩,改后缀名为xlsm,使用WPS表格打开,即可将JSA宏代码加载进文件中并可使用。 如果还想在工作表上,将形状绑定这个JSA宏代码呢?...就算没有Excel/WPS客户端,也可以手撸一个文件出来,实现相应功能,当然代价就是没有任何API接口的帮助,只能自己对文本文件进行读写操作。

6010
领券