注册表是Windows系统中极其重要的一个东西,Windows系统中自带了注册表编辑器(regedit.exe),路径为:“C:\Windows\regedit.exe”(注:系统版本不同可能有些许差异),如图:
也可以按win+R在输入框里输regedit。程序启动后,具体的格式如图:
其中,有以“HKEY_”开头的项,这些就是“父项”,他下面的就是子项,父项有“HKEY_CLASSES_ROOT”、“HKEY_CURRENT_USER”、“HKEY_LOCAL_MACHINE”、“HKEY_USERS”、“HKEY_CURRENT_CONFIG”(具体意思可以自行查询),右边黄色的就是“键值”,键值的名称定义了其改变的目标,而键值的数值则定义了其更改后的效果(例:图中的字符串值“screensize”,其数值1280_1024即是定义的分辨率大小)。我只例举几个病毒会改的,HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下的NoClose(禁止关机),NoLonOff(禁止注销),NoRun(禁止运行),NoDrive(不显示驱动器),NoViewOnDrive(禁止访问驱动器),这几个都是REG_DWORD类型的值,有人就要问了:“唉!大大,那别人直接拔电源重启你不就炸了吗?”唉,我们可以让程序自启动,有这几个办法(但全都会被杀毒软件拦截):第一个,将程序的快捷方式或者是备份文件放到启动文件夹中,这个是比较低级的自启动方式了,但比较适合普通软件,若是病毒的话,可能会被杀毒软件拦截;第二个,更改注册表来达到自启动的目的,自启动项的路径为HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,在这个路径下所有的字符串值(REG_SZ)所储存的路径都会运行,但有概率会被360等比较厉害的杀毒软件拦截;第三个,就比较恶心人了,在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下有一个叫做Shell的字符串值,如图:
聪明的你可能看见了,这个字符串值储存的数据是资源管理器,它的自启动等级是比较高的了,只要能更改掉数据内容换成你的程序路径,这样你的程序就可以获得仅次于登录画面的优先级,但前提是你要绕过杀毒软件成功设置。
有问题的话可以在评论区问我,大多数我都会回答的,下一期讲如何用C++对注册表进行更改。