关于谷歌浏览器主页被篡改无法修正的样例分析与解决方案

关于谷歌浏览器主页被篡改无法修正的样例分析与解决方案

       首先写在前面,浏览器被修改主页的情况很多,此次分析的仅为一个样例且给出解决的方法。本文主要提供自身经历和解决的思路,因为水平有限,无法给出专业化的防范建议和解决方案,还请见谅。

        问题产生的原因不用多说,大多是下载时遇上了流氓软件,强行篡改了你浏览器的主页。

        昨天安装软件时遇到了这个问题,现在也来分享一波我的解决方案。

        先看被篡改后的网页


        遇到简单的情况是修改了你的浏览器的主页地址,如果是这种情况改回去也就可以了。

        但是当我点击主页时,页面跳转到的还是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的第六位没有置位,所以此段不存在

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

展开阅读全文

没有更多推荐了,返回首页