關於谷歌瀏覽器主頁被篡改無法修正的樣例分析與解決方案

關於谷歌瀏覽器主頁被篡改無法修正的樣例分析與解決方案

       首先寫在前面,瀏覽器被修改主頁的情況很多,此次分析的僅爲一個樣例且給出解決的方法。本文主要提供自身經歷和解決的思路,因爲水平有限,無法給出專業化的防範建議和解決方案,還請見諒。

        問題產生的原因不用多說,大多是下載時遇上了流氓軟件,強行篡改了你瀏覽器的主頁。

        昨天安裝軟件時遇到了這個問題,現在也來分享一波我的解決方案。

        先看被篡改後的網頁


        遇到簡單的情況是修改了你的瀏覽器的主頁地址,如果是這種情況改回去也就可以了。

        但是當我點擊主頁時,頁面跳轉到的還是google的首頁。這就說明它沒有對你瀏覽器的設置動手腳,那麼問題可能出在你的快捷方式上。右鍵打開快捷方式的“屬性”,在“目標(T)”中果然發現了目標地址的參數


        簡單的刪除之後,再次打開,出現的google主頁,問題解決...(當時沒有多想)

        但是後來又發現的一個問題,我從桌面圖標進入google確實沒有跳轉到垃圾網站,但是在任務欄裏打開的圖標還是會跳轉進入,甚至解除鎖定後再添加鎖定也還是會出現這個狀況。於是我查看了一下那個時間段內的文件修改記錄,如下圖↓


        它給我創建了4個快捷方式,打開路徑文件夾後,發現是在taskbar裏,完整路徑(C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar),每一個快捷方式都給目標(T)加上了指定參數,如圖二。

        然後刪除,重新添加到任務欄即可!

----------------------------------------------------------------------------------------------------------------------------------

另外分享一個網址,如果以上方法不奏效,可以到該網頁參考具體的解決方案。

----------------------------------------------------------------------------------------------------------------------------------

延伸出的信安相關內容,由於lnk的豐富調用格式,很多字段可以被惡意利用。下面是lnk的文件格式,轉載自http://blog.51cto.com/xcf007/367275



大家知道通過IShellLink接口可以得到快捷方式的各種屬性。具體怎麼做,網上有很多文章,這裏就不介紹了。現在主要是分析一下快捷方式文件的格 式,並且自己寫一個解析程序。
爲了方便大家理解,解說完每個段後附上一個快捷方式對應部分的事例數據並附內容解說。這裏以Windows Media Player在桌面上的快捷方式爲例。

一、文件的整體結構
.LNK 文件格式
1. 文件頭
2. Shell Item Id List 段
3. 文件位置信息段
4. 描述字符段
5. 相對路徑段
6. 工作目錄段
7. 命令行段
8. 圖標文件段
9. 附加信息段


二、文件頭

文件頭結構,參照下面表格:
OffsetSize/TypeDescription
0h1 dword值常爲0000004CH,爲字符"L"
4h16 bytesGUID
14h1 dwordFlags,用來標識快捷方式文件中有哪些可選屬性,後面有表單獨解釋每一位的意義。
18h1 dword目標文件屬性,後面解釋。
1ch1 qword文件創建時間
24h1 qword文件修改時間
2ch1 qword文件最後一次訪問時間
34h1 dword目標文件長度
38h1 dword自定義圖標個數,
3ch1 dword目標文件執行時窗口顯示方式:
1、 正常顯示
2、 最小化
3、 最大化
40h1 dword熱鍵
44h2 dword暫時還不清楚用途值常爲0


① 偏移14h開始的標誌標示有哪些可選屬性,見下表:

Bit所在位爲1時表示
0有shell item id list
1指向文件或文件夾,如果此位爲0表示指向其他。
2存在描述字符串
3存在相對路徑
4存在工作路徑
5存在命令行參數
6存在自定義圖標

② 偏移18h開始的目標文件屬性:

Bit所在位爲1時表示
0快捷方式所指目標文件有隻讀屬性
1快捷方式所指目標文件有隱藏屬性
2快捷方式所指目標文件是系統文件
3快捷方式所指目標是卷標
4快捷方式所指目標是文件夾
5快捷方式所指目標文件上次存檔後被改變過
6快捷方式所指目標文件被加密
7快捷方式所指目標文件屬性爲一般
8快捷方式所指目標文件爲臨時
9快捷方式所指目標文件爲稀疏文件(sparse file)
10快捷方式所指目標文件有重分析點數據(reparse point)
11快捷方式所指目標文件被壓縮
12快捷方式所指目標文件脫機

例:
偏移 數據 解釋
0000 4c 00 00 00 字符"L"
0004 01 14 02 00 快捷方式的GUID。值固定
00 00 00 00
C0 00 00 00
00 00 00 46
0014 8F 00 00 00 flags。對照表可知
有shell item id list
目標是文件
存在描述字符串
存在相對路徑
0018 20 00 00 00 文件屬性,具體內容可以查上面的屬性說明表
001C 40 51 0A 0C 文件創建時間
AD CB C4 01
0024 C4 D8 A5 91 文件修改時間
AD CB C4 01
002C 00 33 16 74 文件最後一次訪問時間
F6 C7 C3 01
0034 00 20 01 00 文件長度
0038 00 00 00 00 自定義圖標個數
003C 01 00 00 00 打開時窗口爲normal狀態
0040 00 00 00 00 熱鍵
0044 00 00 00 00 暫時還不清楚用途值常爲0
00 00 00 00
三、Shell item ID list段
當文件頭中○1的第0位置位時纔有。第一個unsigned short integer表示item ID list段的總長度。後面緊跟着SHITEMID結構。SHITEMID的定義如下:
typedef struct _SHITEMID { 
USHORT cb;
BYTE abID[0];
} SHITEMID, * LPSHITEMID;
cb保存SHITEMID結構的大小。abID是可變長度的對象標識。具體都是什麼含義沒看明白,可以參閱MSDN。因爲item ID list段的開始爲這個段的總長度,所以在讀取的時候可以把此段跳過不做處理!!:)

例:(文件頭段的flags標誌顯示存在shell item id list段)
偏移 數據 解釋
004C 9c 00 item ID list總長度(下一段的起始地址爲004E+009C=00EA)
004E 14 00 第一個item ID的長度
0050 1F 50 E0 4F 第一個item ID標示內容
D0 20 EA 3A
69 10 A2 D8
08 00 2B 30
30 9D
0062 19 00 第二個item ID的長度
0064 23 43 3A 5C 第二個item ID標示內容
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 F1 93
007B 25 00
007D 31 00 00 00
00 00 70 31
47 3B 31 00
50 72 6F 67
72 61 6D 20
46 69 6C 65
73 00 50 52
4F 47 52 41
7E 31 00
00A0 2C 00
00A2 31 00 00 00
00 00 70 31
47 3B 10 00
57 69 6E 64
6F 77 73 20
4D 65 64 69
61 20 50 6C
61 79 65 72
00 57 49 4E
44 4F 57 7E
32 00
00CC 1C 00
00CE 32 00 00 20
01 00 95 2F
A1 99 20 00
77 6D 70 6C
61 79 65 72
2E 65 78 65
00 00
00E8 00 00 item ID list段結束
四、文件位置信息段
開始的一個long integer表示此段的總長度,當文件頭中○1的第1位沒有置位時表示既不是文件也不是文件夾,所以這個信息沒有意義,所以總長度爲0。先讓我們看一下 這個段的頭:
OffsetSize/TypeDescription
0h1 dword此段的總長度
4h1 dword頭結構長度,固定爲1ch
8h1 dwordFlags指示文件在哪些卷有效,這裏只用到低兩位,第一位置位表示本地卷有效,反之無效。第二位置位表示網絡 卷有效,反之無效。
ch1 dword本地卷信息表的偏移(固定1ch)
10h1 dword本地路徑信息的偏移
14h1 dword網絡卷信息表的偏移
18h1 dword附加信息的偏移

如果文件在本地卷,那麼文件名爲:本地路徑信息+附加信息
如果文件在網絡卷,那麼文件名爲:網絡卷信息中的共享名+附加信息

緊 跟在段頭後面的是本地卷信息表(段內偏移爲1ch),結構如下:

OffsetSize/TypeDescription
0h1 dword本地卷信息表的長度
4h1 dword卷類型:
0 Unknown
1 No root directory
2 Removable (Floppy, Zip, etc..)
3 Fixed (Hard disk)
4 Remote (Network drive)
5 CD-ROM
6 Ram drive (Shortcuts to stuff on a ram drive, now that''s smart...)
8h1 dword卷序列號
ch1 dword固定長度部分的大小,固定爲10h
10h可變長度卷標籤

然後是本地路徑信息串段內偏移決定於10h的值。

再往後就是網絡卷信息表段內偏移決定於14h的 值。結構如下:

OffsetSize/TypeDescription
0h1 dword網絡卷信息表的長度
4h1 dword固定爲2h
8h1 dword固定長度部分的大小,固定爲14h
ch1 dword固定爲0h
10h1 dword固定爲20000h
14h可變長度網絡共享名

最後是附加信息串段內偏移決定於18h的值 例:
偏移 數據 解釋
段頭
00EA 67 00 00 00 文件位置信息段總長度
00EE 1C 00 00 00 段頭長度,固定爲1ch
00F2 01 00 00 00 本地卷
00F6 1C 00 00 00 本地卷信息表的段內偏移
00FA 33 00 00 00 本地路徑信息的偏移
00FE 00 00 00 00 網絡卷信息表的偏移
0102 66 00 00 00 附加信息的偏移
本地卷信息表
0106 17 00 00 00 表長度
010A 03 00 00 00 Fixed (Hard disk)
010E AD C9 B2 F0 卷序列號
0112 10 00 00 00 固定爲10h
0116 73 79 73 74 卷標"system"
65 6D 00
本地路徑信息串
011D 43 3A 5C 50 C:\Program Files\Windows Media Player\wmplayer.exe
72 6F 67 72
61 6D 20 46
69 6C 65 73
5C 57 69 6E
64 6F 77 73
20 4D 65 64
69 61 20 50
6C 61 79 65
72 5C 77 6D
70 6C 61 79
65 72 2E 65
78 65 00
網絡卷信息表 因爲段頭裏flags指示僅爲本地卷,並且網絡卷信息表的偏移值爲零。所以不存在網絡卷信息表。
|
附加信 息串
0150 00
五、描述字符段 
當文件頭中○1的第2位置位時纔有。開始的一個unsigned short int表示描述字符串的長度(描述字符爲Unicode字符,所以字節數需乘以2,可以使用API函數WideCharToMultiByte將其轉換成 ANSI字符)。後面爲內容。例:
偏移 數據 解釋
0151 20 00 描述字符長度
0153 AD 64 3E 65
70 65 57 5B
92 5A 53 4F
0C FF 05 53
EC 62 F3 97
50 4E 01 30
C6 89 91 98
01 30 43 00
44 00 20 00
8C 54 20 00
49 00 6E 00
74 00 65 00
72 00 6E 00
65 00 74 00
20 00 35 75
F0 53 02 30
轉換成ANSI字符爲"播放數字媒體,包括音樂、視頻、CD 和 Internet 電臺。

六、相對路徑段
當文件頭中○1的第3位置位時纔有。同描述字符段一樣開始的一個unsigned short int表示相對路徑字符串的長度。後面爲內容。 例:
偏移 數據 解釋
0193 38 00 相對路徑字符長度
0195 2E 00 2E 00
5C 00 2E 00
2E 00 5C 00
2E 00 2E 00
5C 00 50 00
72 00 6F 00
67 00 72 00
61 00 6D 00
20 00 46 00
69 00 6C 00
65 00 73 00
5C 00 57 00
69 00 6E 00
64 00 6F 00
77 00 73 00
20 00 4D 00
65 00 64 00
69 00 61 00
20 00 50 00
6C 00 61 00
79 00 65 00
72 00 5C 00
77 00 6D 00
70 00 6C 00
61 00 79 00
65 00 72 00
2E 00 65 00
78 00 65 00
轉換成ANSI字符爲"..\..\..\Program Files\Windows Media Player\wmplayer.exe" 

七、工作目錄段 同上。

例:因爲文件頭中○1flags的第四位沒有置位,所以此段不存在

八、 命令行段 同上。

例:因爲文件頭中○1flags的第五位沒有置位,所以此段不存在

九、圖標文件段 同上。

例: 因爲文件頭中○1flags的第六位沒有置位,所以此段不存在

十、 附加信息段 具體信息不清楚!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章