Run/RunOnce Keys

用户级

1
2
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

管理员

1
2
3
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  • HKEY_CURRENT_USER 代表当前用户,当前用户登录后才执行的操作。

  • HKEY_LOCAL_MACHINE代表当前机器,所有操作在用户登录后就执行了。

  • Run 键值代表着开机启动项,也就是说在这个项下的键值会随着开机启动(这里的开机是指用户登录,也就是说只要有登录操作就会执行,注销然后登录,也会执行这个键值)。

  • RunOnce 键值类似于 Run 键值,唯一的区别在于,RunOnce 键值只执行一次,操作执行后会被自动删除。

reg_1

reg_2

BootExecute Key

smss.exe进程是微软®公司为其发布的基于Windows NT系统(200/XP/Vista以及Win7等)定义的一个重要系统核心程序,官方描述为:Windows会话管理器。

smss.exe这是一个Windows后台进程,会随着系统一起启动。

由于smss.exe在Windows子系统加载之前启动,因此会调用配置子系统来加载当前的配置单元,具体注册表键值为:

1
2
HKLM\SYSTEM\CurrentControlSet\Control\hivelist
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager

reg_3

  • autocheck autochk *。如果电脑出现蓝屏,将会在电脑重启后自动运行自检程序,试图对系统中存在的错误进行修复。
  • Autochk.exe 是Windows NT架构的系统中的一个文件,用于确定卷检测(或磁盘检查)任务是手动安排的,还是由于文件系统发现卷处于“dirty”状态而自动安排的,然后判断是否在计算机启动时自动执行chkdsk命令强制检测卷(磁盘),并将相应的消息写入应用程序事件日志中。

Userinit Key

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit这个注册表键的作用是在用户进行登陆时,winlogon运行指定的程序。根据官方文档,可以更改它的值来添加与删除程序。

WinLogon进程加载的login scripts,具体键值:

1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

reg_4

Startup Keys

1
2
3
4
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

1554090222814

  • Common Administrative Tools自定义管理工具目录
  • Common AppData自定义系统文件目录
  • Common Desktop自定义桌面目录
  • Common Documents自定义文档目录
  • Common Programs自定义程序目录
  • Common Start Menu自定义开始菜单目录
  • Common Startup自定义开机启动项目录

Browser Helper Objects

本质上是Internet Explorer启动时加载的DLL模块

1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects

这个注册表项的每个子项都保存了一个浏览器助手的信息,所有浏览器助手在用户登录后以dll的方式加载,没有独立的进程,因此很难发现。并且必须在安全模式下才能删除。

生成DLL

C++开发BHO之HelloWorld

reg_5

设置项目MFC的使用ATL的使用

reg_5

注册DLL

需要管理员权限,命令如下:

1
regsvr32 helloworld.dll /s

/s参数用来去掉注册成功的提示框

卸载dll:

1
regsve32 helloworld.dll /s /u

reg_7

reg_6

在IE页面注入js

可参考以下开源工程做进一步修改:

https://github.com/xiyiaoo/BHO

AppInit_DLLs

加载User32.dll会加载的DLL

1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

-  AppInit_DLLs键的值可以是一个dll的文件名或一组dll的文件名(通过逗号或空格来分隔),由于空格是用来分隔文件名的,因此dll文件名不能含有空格。第一个dll的文件名可以包含路径,但其他的dll包含的路径将被忽略。
-  LoadAppInit_DLLs键的值表示AppInit_DLLs键是否有效,为了让AppInit_DLLs键的值有效,需要将LoadAppInit_DLLs的值设置为1。

reg_9