《病毒木马防御与分析》系列以真实的病毒木马(或恶意程序)为研究对象,通过现有的技术手段对其分析,总结出它的恶意行为,进而制定出相应的应对方法,对其彻底查杀。当然,因为我个人水平的有限,查杀分析的病毒可能不是过于高端复杂,但对你认识病毒工作原理还是会很有帮助的,甚至最后你也可以利用c语言实现一个简单的病毒程序。
实战
熊猫烧香分析 txt病毒分析 QQ盗号木马分析 U盘病毒分析 自制病毒
病毒包和工具包下载: Github
熊猫烧香病毒分析
如果像自己实践记得在虚拟机下!
病毒包可以在Github仓库找到
摘要
一.手动查杀
0.病毒分析
1).中毒症状
2).病毒特征
3).发作症状
1. 查内存,排查可疑进程,将病毒从内存中干掉
2. 查启动项,删除病毒启 动项
3. 通过启动项判断病毒所在位置,并从根本上删除病毒
4. 修复系统
二.行为分析
一.手动查杀
0. 病毒分析
病毒名称: 武汉男生,又名熊猫烧香病毒。"Worm.WhBoy.h"
1).中毒症状
拷贝自身到所有驱动器根目录,命名为Setup.exe,并生成一个autorun.inf使得用户打开该盘运行病毒,并将这两个文件属性设置为隐藏、只读、系统。
无法手工修改“文件夹选项”将隐藏文件显示出来。
在每个感染后的文件夹中可见Desktop_ini的隐藏文件,内容为感染日期 如:2007-4-1
电脑上的所有脚本文件中加入一段代码:
中毒后的机器上常见的反病毒软件及防火墙无法正常开启及运行。
不能正常使用任务管理器及注册表。
无故的向外发包,连接局域网中其他机器。
感染其他应用程序的.exe文件,并改变图标颜色,但不会感染微软操作系统自身的文件。
删除GHOST文件(.gho后缀),网吧、学校和单位机房深受其害。
禁用常见杀毒工具。
2).病毒特征
关闭众多杀毒软件和安全工具。
循环遍历磁盘目录,感染文件,对关键系统文件跳过。
感染所有EXE、SCR、PIF、COM文件,并更改图标为烧香熊猫。
感染所有.htm/.html/.asp/.php/.jsp/.aspx文件,添加木马恶意代码。
自动删除*.gho文件。
3).发作症状
拷贝文件
病毒运行后,会把自己拷贝到C:\WINDOWS\System32\Drivers\spoclsv.exe
添加注册表自启动
病毒会添加自启动项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\svcshare -> C:\WINDOWS\System32\Drivers\spoclsv.exe
病毒行为
每隔1秒寻找桌面窗口,并关闭窗口标题中含有以下字符的程序
QQKav,QQAV,防火墙,进程,VirusScan,网镖,杀毒,毒霸,瑞星,江民,黄山IE,超级兔子,优化大师,木马克星,木马清道夫,QQ病毒,注册表编辑器,系统配置实用程序,卡巴斯基反病毒,Symantec AntiVirus,Duba,esteem proces,绿鹰PC,密码防盗,噬菌体,木马辅助查找器,System Safety Monitor,Wrapped gift Killer,Winsock Expert,游戏木马检测大师,msctls_statusbar32,pjf(ustc),IceSword
并使用的键盘映射的方法关闭安全软件IceSword
并中止系统中以下的进程:
Mcshield.exe VsTskMgr.exe naPrdMgr.exe UpdaterUI.exe TBMon.exe scan32.exe
Ravmond.exe CCenter.exe RavTask.exe Rav.exe Ravmon.exe RavmonD.exe
RavStub.exe KVXP.kxp kvMonXP.kxp KVCenter.kxp KVSrvXP.exe KRegEx.exe UIHost.exe TrojDie.kxp
FrogAgent.exe Logo1_.exe Logo_1.exe Rundl132.exe
每隔18秒
点击病毒作者指定的网页,并用命令行检查系统中是否存在共享,存在的话就运行net share命令关闭admin$共享。
每隔10秒
下载病毒作者指定的文件,并用命令行检查系统中是否存在共享共存在的话就运行net share命令关闭admin$共享。
每隔6秒
删除安全软件在注册表中的键值。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
RavTask KvMonXP kav KAVPersonal50 McAfeeUpdaterUI Network Associates Error Reporting Service ShStartEXE YLive.exe yassistse
并修改以下值不显示隐藏文件
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue
修改为 0x00
删除以下服务
navapsvc wscsvc KPfwSvc SNDSrvc
ccProxy ccEvtMgr ccSetMgr SPBBCSvc
Symantec Core LC NPFMntor MskService FireSvc
感染文件
病毒会感染扩展名为exe,pif,com,src的文件,把自己附加到文件的头部并在扩展名为htm,html, asp,php,jsp,aspx的文件中添加一网址,用户一旦打开了该文件,IE就会不断的在后台点击写入的网址,达到增加点击量的目的,但病毒不会感染以下文件夹名中的文件,防止系统崩溃。
WINDOW
Winnt
System Volume Information
Recycled
Windows NT
WindowsUpdate
Windows Media Player
Outlook Express
Internet Explorer
NetMeeting
Common Files
ComPlus Applications
Messenger
InstallShield Installation Information
MSN
Microsoft Frontpage
Movie Maker
MSN Gamin Zone
1. 查内存,排查可疑进程,将病毒从内存中干掉
在虚拟机中运行熊猫烧香病毒,记得要在xp虚拟机啊,物理机现在Windows补丁已经免疫熊猫烧香了。
9
在虚拟机中我们打开任务管理器,发现刚一打开就会被关闭,这是熊猫烧香的特征之一。
10
右键一个分区,你会发现第一项不是打开,而是Auto,这是因为熊猫烧香病毒会在分区产生一个autorun.inf文件使得用户打开该盘运行病毒,autorun.inf文件是系统,隐藏文件。
甚至一些病毒会把Auto起名为打开,右键分区你会发现两个打卡选项。
我们第一步就要先关闭病毒进程,排查内存时我们需要使用tasklist命令查看可疑进程,spoclsv.exe就是熊猫烧香的进程名了(这个可能需要大量的积累,最好是对Windows系统进程有大量了解)。
找到后通过taskkill /f /im PID命令将其终止
有些病毒无论任务管理器还是taskkill命令都无法将其终止,这类病毒大多是有三个进程相互保护,有一个被终止后其他进程会立即再次启动这个进程。
8
2. 查启动项,删除病毒启动项
将病毒从内存中清除之后,接下来我们要删除其服务和启动项。
12
在禁用删除掉启动项之前,我们需要先记住这个病毒的路径,以便第三步去删除它的主体。
3. 通过启动项判断病毒所在位置,并从根本上删除病毒
下图就是熊猫烧香病毒本体的位置了,其实但看启动项中exe路径就能发现spoclsv服务的可疑了,它位于system32\drivers下,也不是一些常见的系统服务。
13
到这个路径下删除这个exe程序。
4. 修复系统
删除完exe之后我们重启系统,会发现现在系统中没有spoclsv.exe这个进程了。
这时病毒还有可能会复发,因为系统还未完成修复,之前说的分区双击默认选项可能会导致病毒程序再次运行。
我们需要将Auto选项删除,并且清理系统。
14
autorun.inf就是关联我们右键菜单的文件了。
我们通过attrib -s -h -a -r autorun.inf来分别将autorun.inf和setup.exe隐藏属性删除并且删除这两个文件。
15
删除之后我们双击分区打开会发现无法生效。
16
注销系统后,右键菜单恢复。
17
二.行为分析
使用Process Monitor进程树分析病毒运行后的操作。
在病毒程序启动之前,任务管理器还可以打开。
step1
设置Process Monitor进程过滤,进程名选择熊猫烧香.exe。
step3
过滤结果中可以看到运行的setup.exe程序,后面跟随有进程操作,其中操作多为进程创建和大量的注册表操作。
打开进程树查看setup.exe进程信息。
step4
在进程树中可以发现,setup.exe衍生出了spoclsv.exe。衍生出的进程又打开了两次cmd.exe。第一次运行的命令是cmd.exe /c net share C$ /del /y,它的意思是在命令行模式下删除C盘的网络共享,执行完后关闭cmd.exe。因此这个病毒应该是会关闭系统中所有的盘的网络共享。第二次运行的命令是cmd.exe /c net share admin$ /del /y,这里取消的是系统根目录的共享。那么由此就可以总结出病毒的两点行为:
行为1:病毒本身创建了名为spoclsv.exe的进程,该进程文件的路径为C:\WINDOWS\system32\drivers\spoclsv.exe。
行为2:在命令行模式下使用net share命令来取消系统中的共享。
之后对setup.exe文件操作监控分析,分析操作为CreateFile的Path,
step5
可见,熊猫烧香.exe在C:\WINDOWS\system32\drivers中创建了spoclsv.exe,其它再无可疑操作,那么可以认为,这个病毒真正的破坏部分是由spoclsv.exe实现的,那么接下来的工作就是专门监控这个进程。
这里需要将进程名为spoclsv.exe的进程加入筛选器进行分析。spoclsv.exe作为病毒主体所产生的操作会比较多。
step6
可见病毒进程会尝试删除大量安全类软件的注册表启动项。
行为3:删除安全类软件在注册表中的启动项。
然后只保留RegCreateKey与RegSetValue进行分析:
step7
可见,病毒程序为自身创建了自启动项,详细信息为Type: REG_SZ, 长度: 80, 数据: C:\WINDOWS\system32\drivers\spoclsv.exe,使得每次启动计算机就会执行自身,可以查看该路径启动项来验证,因为病毒进程会自动关闭任务管理器和注册表,所以我们需要借助第三方工具autorun来查看。
step8
行为4:在注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Run中创建svcshare,用于在开机时启动位于C:\WINDOWS\system32\drivers\spoclsv.exe的病毒程序。
接下来还有:
step9
对注册表KLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue这个位置设置为0,能够实现文件的隐藏。此处进行设置后,即便在文件夹选项中选择显示所有文件和文件夹,也无法显示隐藏文件,则有:
行为5:修改注册表,使得隐藏文件无法通过普通的设置进行显示,该位置为:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL,病毒将CheckedValue的键值设置为了0。
接下来对spoclsv.exe文件监控分析,主要看的是病毒是否将自己复制到其他目录,或者创建删除了哪些文件等,监控如下所示:
step10
在图中可以看到,病毒文件在C:\WINDOWS\system32\drivers中创建了spoclsv.exe这个文件,在C盘和E盘根目录下创建了setup.exe与autorun.inf,并且在一些目录中创建了Desktop_.ini这个文件。由于创建这些文件之后就对注册表的SHOWALL项进行了设置,使得隐藏文件无法显示,那么有理由相信,所创建出来的这些文件的属性都是“隐藏”的,于是有:
行为6:将自身拷贝到根目录,并命名为setup.exe,同时创建autorun.inf用于病毒的启动,这两个文件的属性都是隐藏。
行为7:在一些目录中创建名为Desktop_.ini的隐藏文件。
最后对spoclsv.exe进行网络监控分析,来查看病毒是否有联网动作。
step11
从监控结果可以看到,病毒不断尝试连接192.168.1.X即局域网中的其它计算机。
行为8:向外发包,连接局域网中其他机器。
TXT病毒分析
如果像自己实践记得在虚拟机下!
病毒包可以在Github仓库找到
摘要
前言
txt病毒引入
RLO与字符陷阱
前言
现在很多病毒使用了各式各样的隐藏技术。病毒编写者往往会用复杂高深的技术来武装自己的恶意程序,使其难以被发现难以被清除。隐藏类的病毒虽然很难发现,但危害清除往往比较简单,如前段时间出现的比特币敲竹杠病毒,就是一个基于Ring3层的病毒,其特色就在于采用了一定的算法来加密目标计算机中的相应文件,而如果没有密码,那么是不可能实现解密操作的。
txt病毒引入
举一个简单病毒的例子,U盘病毒中文件夹后面会出现exe后缀,很明显就可以发现出了问题
txt1
txt2
这也就说明,尽管它的图标是文件夹的图标,但是它本质上其实就是一个可执行程序,利用图标的更换来将自己伪装成一个文件夹,这种手段还是比较古老的,也是很容易被发现的。但是如果是这样呢?
先准备好需要伪装的病毒和要伪装成的文件图标(找不到别的图标就只能随便找一个用了),还有Resource Hacker工具。
txt
用Resource Hacker打开病毒setup.exe,可以查看到病毒图标。
txt
RLO与字符陷阱
接下来修改图标为我们自己的ico文件。
txt
保存之后病毒的图标就改变了。
下一步需要改变他的后缀名,修改为txt或者png。
这一步的原理是Windows提供了一个转移字符RLO,只要在一行字符前面加上它,就可以实现文本的反向排列。它是Unicode为了兼容某些文字的阅读习惯而设计的一个转义字符。当我们加入这个字符后,从而也就实现修改后缀的效果。
那么利用这个原理,我们就能够实现非常多有创意的,并且颇具迷惑性的文件名称,再将文件的图标修改为对应的假的后缀名的图标,那么我相信,即便是资深反病毒爱好者,也很可能会落入陷阱的。
如何来实现呢?先将病毒程序名改为下图所示,之后在read和txt之间添加转义字符RLO。
txt
txt7
插入转义字符之后可以发现这就是一个txt程序了,只不过没有选好图标,只要伪装成一个txt的图标和后缀,很多人都不会防范这个病毒了。
txt8
RLO不止可以用来修改程序后缀名,它还可以用在注册表中,你会发现注册表中有多个相同项,然而注册表其实是不允许出现相同项的。
通过字符混淆的方法来影响人的直接视觉感观,可以让人在使用计算机过程中出现很大的问题。
对于之前的exe和txt的混淆方法,其实最好的方法就是在文件夹中显示文件类型。
txt
QQ盗号木马查杀
如果像自己实践记得在虚拟机下!
病毒包可以在Github仓库找到
摘要
前言
一.手杀分析
前言
在总纲中我们基本介绍了手杀病毒的基本步骤,其中在进程中杀死病毒时我说过有些病毒只有一个进程,可以直接结束其进程,但有些病毒是多进程相互守护,关闭一个之后其他守护进程会将其重新启动。这就是病毒的一种自我保护技术,使得我们不能够使用常规手法对其实现查杀。我们需要借助两个工具——icesword与autoruns,以达到查杀的目的.
一.手杀分析
这是准备好的病毒样本,autoruns是一个注册表查看工具,icesword是一个非常强大的进程管理工具,不过icesword的平台兼容性很差,win10下我没有查到可用的,只有在xp虚拟机中使用过。
qq1
在运行病毒之前,先查看任务管理器中当前的进程。
qq2
在运行QQ盗号木马程序之后,可以发现进程数从25变为了28。
qq3
多出来的3个进程为severe.exe、conime.exe与tfidma.exe。
conime.exe进程是一个重要的系统进程,它不会随系统的启动而自动启动,只会在启动命令行(cmd)才会启动,但如果删除或者终止将导致特殊文字的输入困难,另外微软新版系统中此进程不会运行,而这里病毒则是伪造了这个进程。
尝试利用任务管理器将这三个进程其中之一结束时,会发现被终止的进程重新被启动了。
现在我们需要使用icesword.exe工具来讲三个互相守护的病毒进程终止。在双击启动icesword.exe时会发现这个工具并无法启动,可以理解为是病毒将这个工具屏蔽了,我们只需要给他改一个名字,icesword.exe的中文名冰刃.exe,之后双击启动。
qq3
在里面可用看到这三个进程。
qq3
点击文件,选择创建进程规则,添加规则,之后将三个进程添加进去。
qq3
再次终止进程之后发现病毒进程无法再次恢复。
qq3
接下来我们需要删除病毒的启动项,这里我们打开autoruns这个工具。
qq7
打开autoruns之后,初始界面Everything选项卡下面,很容易就发现了两个可疑启动项,因为它们作为可执行程序,使用了记事本图标,而且名称和路径与之前病毒进程相似。那么就有必要在这里删除这三个启动项了。选中欲删除的启动项,然后按下Delete键即可。接下来看一下非常重要的Image Hijacks标签。
qq8
可见映像劫持中大量软件进程都被映射为了病毒进程,比如我们熟悉的360safe,注册表,服务配置,QQ医生还有icesword.exe。在这里将这些注册表数据删除。
还有一些其他安全项,可用自行查看,病毒主体程序我们可用从注册表启动项中看到,去相应位置删除即可。
U盘病毒分析
目录
一.前言
二.手杀病毒
一.前言
前段时间去学校打印店印资料,如同往常一样,插上我的U盘。奇怪的是这次的连接时间较以往长,并且还出现了自动播放窗口。 以前使用U盘,都没有出现过自动播放的情况。不过没有我在意,关闭了那个窗口,从我的电脑打开了U盘分区。但是在U盘中却发现了奇怪的文件:
txt1
txt2
这几个文件很奇怪,因为它们都是使用了文件夹的图标,貌似是一个文件夹,但是在文件名称的后面却跟着一个.exe的小尾巴。而且,我的U盘中本来确实有这四个文件夹,但是我不记得给他们加上了.exe这样的后缀名。而不带后缀名的真实的文件夹却找不到了(图片中显示是因为已经被我处理了)。这就让我很是怀疑,于是分别查看这几个文件的属性。
u1
可见这些文件并不是文件夹,而是应用程序,并且它们的大小一致。看到这里,就可以基本确定了,我的U盘是中了病毒了。
二.手杀病毒
初步分析,这个病毒会将自身伪装成我的U盘中本来存在的文件夹,从而诱惑我去点击。那么原始的文件夹是被删除了还是被隐藏了呢?
选择显示隐藏文件之后,那些文件依然没有显示出来,这里可用一个cmd下的命令来显示,因为文件的隐藏其实是基于文件的四个属性值。
隐藏文件(添加四个属性):
attrib +s +h +a +r 文件名
显示文件(删除四个属性):
attrib -s -h -a -r 文件名
通过attrib命令操作隐藏的文件无法通过常规的显示文件来显示,这也是病毒隐藏文件的一个常用途径。
txt1
显示出我们原本的文件之后就可将exe程序删除了。
U盘病毒其实危害性并没有多强,但其传播速度与对普通人的影响却是很大。
要编写代码进行快速删除也简单,只需要循环遍历U盘目录,将其中子文件进行显示即可。代码如下:
for /f "delims=?" %%a in ('dir /a /b') do attrib -a -s -h -r "%%a"
只需要将这一行批处理代码保存为cmd后缀名文件,放置U盘跟目录,双击运行即可。
病毒自制实战
自制病毒——控制桌面背景鼠标以及开关机
理论知识
修改桌面背景方法
在Windows下,修改桌面背景可以使用特定的API : SystemParametersInfo
该函数也可以在设置参数中更新用户配置文件,这个函数还有很多其它功能,比如获取桌面工作区的大小。
BOOL SystemParametersInfo(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinlni);
uiAction:该参数指定要查询或设置的系统级参数。其取值如下;
SPI_GETACCESSTIMEOUT:检索与可访问特性相关联的超时段的信息,PvParam参数必须指向某个ACCESSTIMEOUT结构以获得信息,并将该结构中的cbSjze成员和ulParam参数的值设为sizeof(ACCESSTIMEOUT)。
SPI_GETACTIVEWINDOWTRACKING:用于Windows 98和Windows NT 5.0及以后的版本。它表示是否打开活动窗口跟踪(激活该窗口时鼠标置为开状态),pvParam参数必须指向一个BOOL型变量(打开时接收值为TRUE,关闭时为FALSE)。
SPI_GETACTIVEWNDTRKZORDER;用于Windows 98和Windows NT 5.0及以后版本。它表示通过活动窗口跟踪开关激活的窗口是否要置于最顶层。pvParam参数必须指向一个BOOL型变量,如果要置于顶层,那么该变量的值为TRUE,否则为FALSE。
SPI_GETACTIVEWNDTRKTIMEOUT:用于Windows 98和 Windows NT 5.0及以后版本。它指示活动窗口跟踪延迟量,单位为毫秒。pvParam参数必须指向DWORD类型变量,以接收时间量。
SPI_GETANIMATION:检索与用户活动有关的动画效果。pvParam参数必须指向ANIMATIOINFO结构以接收信息。并将该结构的cbSize成员和ulParam参数置为sizeof(ANIMATIONINFO)。
SPI_GETBEEP:表示警告蜂鸣器是否是打开的。pvParam参数必须指向一个BOOL类型变量,如果蜂鸣器处于打开状态,那么该变量的值为TRUE,否则为FALSE。
SpI_GETBORDER:检索决定窗口边界放大宽度的边界放大因子。pvParam参数必须指向一个整型变量以接收该值。
SPI_GETDEFAULTINPUTLANG:返回用于系统缺省输入语言的键盘布局句柄。pvParam参数必须指向一个32位变量,以接收该值。
SPI_GETCOMBOBOXANIMATION:用于Windows 98和Windows NT 5.0及以后版本。它表示用于组合柜的动打开效果是否允许。pvParam参数必须指向一个BOOL变量,如果允许,那么变量返回值为TRUE,否则为FALSE。
SPI_GETDRAGFULLWINDOWS:确定是否允许拖拉到最大窗口。pvParam参数必须指向BOOL变量,如果允许,返回值为TRUE,否则为FALSE。对于Windows 95系统,该标志只有在安装了Windows plus!才支持。
SPI_GETFASTTASKSWITCH:该标志已不用!以前版本的系统使用该标志来确定是否允许Alt+Tab快速任务切换。对于Windows 95、Windows 98和Windows NT 4.0版而言,快速任务切换通常是允许的。
SPI_GETLDWPOWERACTIVE:确定是否允许屏幕保护的低电压状态。如果允许,那么指向BOOL变量的pvParam参数会接收到TRUE值,否则为FALSE。对于Windows 98,该标志对16位和32位应用程序都支持。 对于Windows 95,该标志只支持16位应用程序。对于Windows NT,在Windows NT 5.0及以后版本中支持32位应用程序,对16位应用程序则不支持。
SPI_GETLOWPOWERTIMEOUT:检索用于屏幕保护的低电压状态超时值。pvParam参数必须指向一个整型变量,以接收该值。对于Windows 98该标志支持16位和32位应用程序。对于Windows95,该标志只支持16位应用程序。对于Windows NT,该标志支持Windows NT 5.0及以后版本上的32位应用程序。不支持16位应用程序。
SPI_GETMENUDROPALIGNMENT。确定弹出式菜单相对于相应的菜单条项是左对齐,还是右对齐、参数pvParam必须指向一个BOOL类型变量,如果是左对齐。那么该变量值为TRUE,否则为FALSE。SPI_GETMINIMIZEDMETRICS:检索最小化窗口有关的度量数据信息。参数pvParam必须指向MINIMIZEDMETRCS结构,以接收信息。该结构中的cbSize和ulParam参数的值应设为sizeof(MINIMIZEDMETRICS)。
SPI_GETMOUSE:检索鼠标的2个阈值和加速特性。pvParam参数必须指向一个长度为3的整型数组,分别存储此值。
SPI_GETMOUSEHOVERHEGHT:用于Windows NT 4.0及以后版本或Windows 98。获得在TrackMouseEvent事件中,为产生WM_MOUSEOVER消息而鼠标指针必须停留的矩形框的高度,以像素为单位。参数pvParam必须指向一个UINT变量以接收这个高度值。
SPI_GETMOUSEHOVERTIME:用于Windows NT 4.0及以后版本、Windows 98,获得在TrackMouseEvent事件中,为产生WM_MOUSEOVER消息而鼠标指针必须停留在矩形框内的时间,单位为毫秒。参数pvParam必须指向一个UINT变量以接收该时间值。
SPI_GETMOUSEHOVERWIDTH:用于Windows NT 4.0及以后版本、Windows 98。获得在TrackMouseEvent事件中,为产生WM_MOUSEOVER消息而鼠标指针必须停留的矩形框的宽度,以像素为单位。参数pvParam必须指向一个UINT变量以接收这个宽度值。
SPI_GETMOUSEKEYS:检索与MOUSEKEYS易用特征有关的信息,pvParam参数必须指向某个MOUSEKEYS结构,以获取信息。应将结构的cbSize成员和ulParam参数设置为sizeof(MOUSEKEYS)。
SPI_GETMOUSESPEED:用于Windows NT 5.0及以后版本、Windows 98。检索当前鼠标速度。鼠标速度决定了鼠标移动多少距离,鼠标的指针将移动多远。参数pvParam指向一个整型变量,该变量接收1(最慢)至20(最快)之间的数值。缺省值为们10。这个值可以由最终用户使用鼠标控制面板应用程序或使用调用了SPI_SETMOUSESPEED的应用程序来设置。
SPI_GETMOUSETRAILS:用于WpvParam必须指向一个BOOL类型变量,如果是左对齐。那么该变量值为TRUE,否则为FALSE。
SPI_GETMINIMIZEDMETRICS:检索最小化窗口有关的度量数据信息。参数pvParam必须指向MINIMIZEDMETRCS结构,以接收信息。该结构中的cbSize和ulParam参数的值应设为sizeof(MINIMIZEDMETRICS)。
SPI_GETMOUSE:检索鼠标的2个阈值和加速特性。pvParam参数必须指向一个长度为3的整型数组,分别存储此值。
SPI_GETMOUSEHOVERHEGHT:用于Windows NT 4.0及以后版本或Windows 98。获得在TrackMouseEvent事件中,为产生WM_MOUSEOVER消息而鼠标指针必须停留的矩形框的高度,以像素为单位。参数pvParam必须指向一个UINT变量以接收这个高度值。
SPI_GETMOUSEHOVERTIME:用于Windows NT 4.0及以后版本、Windows 98,获得在TrackMouseEvent事件中,为产生WM_MOUSEOVER消息而鼠标指针必须停留在矩形框内的时间,单位为毫秒。参数pvParam必须指向一个UINT变量以接收该时间值。
SPI_GETMOUSEHOVERWIDTH:用于Windows NT 4.0及以后版本、Windows 98。获得在TrackMouseEvent事件中,为产生WM_MOUSEOVER消息而鼠标指针必须停留的矩形框的宽度,以像素为单位。参数pvParam必须指向一个UINT变量以接收这个宽度值。
SPI_GETMOUSEKEYS:检索与MOUSEKEYS易用特征有关的信息,pvParam参数必须指向某个MOUSEKEYS结构,以获取信息。应将结构的cbSize成员和ulParam参数设置为sizeof(MOUSEKEYS)。SPI_GETMOUSESPEED:用于Windows NT 5.0及以后版本、Windows 98。检索当前鼠标速度。鼠标速度决定了鼠标移动多少距离,鼠标的指针将移动多远。参数pvParam指向一个整型变量,该变量接收1(最慢)至20(最快)之间的数值。缺省值为们10。这个值可以由最终用户使用鼠标控制面板应用程序或使用调用了SPI_SETMOUSESPEED的应用程序来设置。
SPI_GETMOUSETRAILS:用于Windows 95及更高版本。它用来表示是否允许MouseTrails(鼠标轨迹)。该特征通过简单地显示鼠标轨迹并迅速擦除它们来改善鼠标的可见性。参数prParam必须指向一个整型变量来接收该值。如果这个值为0或1,那么表示禁止该特征。如果该值大于1,则说明该特征被允许,并且该值表示在鼠标轨迹上画出的光标数目。参数ulParam不用。
SPI_GETNONCLIENTMETRICS:检索与非最小化窗口的非客户区有关的度量信息。参数pvParam必须指向NONCLIENTMETRICS结构,以便接收相应值。该结构的。cbSize成员与ulParam参数值应设为sizeof(NONCLIENTMETRICS)。对于Windows 98,该标志支持16位和32位应用程序。对于Windows 95,该标志只支持16位应用程序。对于Windows NT该标志在NT 5.0及以后版本中支持32位应用程序,不支持16位应用程序。
SPI_GETPOWEROFFACTIVE:确定是否允许屏幕保护中关电。TRUE表示允许,FA参数pvParam必须指定SERIALKEYS结构来接收信息。该结构中的cbSize成员和ulParam参数的值要设为sizeof(SERIALKEYS)。
SPI_GETSHOW