加密与解密学习笔记5-Windows注册表

从Win 95开始,微软在Windows中引入了注册表(registry)的概念,注册表是Windows的核心数据库,包含各种参数,直接控制Windows的启动、硬件驱动程序的装载、应用程序的各种状态信息和数据等。
 
注册表被组成子树及其项、子项、值项的分层结构,就像磁盘文件系统的目录结构一样,每个键都包含一组特定的信息,每个键的键名都是和它所包含的信息相关联的。
 
注册表的根主键不能被删除,也不可以添加新的根主键。
结构含义如下:
  1.HKEY_CLASSES_ROOT(简称:HKCR,包含扩展名和COM组件类的信息)
  该主键用于管理文件系统,记录的是Windows 操作系统中所有数据文件的信息,主要记录不同文件的文件名后缀和与之对应的应用程序。当用户双击一个文档时,系统可以通过这些信息启动相应的应用程序。
  2.HKEY_CURRENT_USER(简称:HKCU,包含当前登录用户相关的软件配置和参数)
  该主键用于管理当前用户的配置情况。在这个主键中我们可以查阅计算机中登录的用户信息、密码等相关信息。
  3.HKEY_LOCAL_MACHINE(简称:HKLM)
  该主键用于管理系统中的所有硬件设备的配置情况,在该主键中存放的是用来控制系统和软件的设置。由于这些设置是针对那些使用Windows 系统的用户而设置的,是一个公共配置信息,所以它与具体用户无关。
其中,HKLM\SOFTWARE子键存储了一些Windows系统软件的配置信息,还存储了第三方应用程序的系统设置,如:应用程序中文件的路径和目录路径,以及相关使用许可证和期限信息。
  4.HKEY_USERS(简称:HKU,包含了关于动态加载的用户配置文件和默认的配置文件的信息,同时还包含了出现在HKEY_CURRENT_USER中的信息)
  该主键用于管理系统中所有用户的配置信息,电脑系统中每个用户的信息都保存在该文件夹中,如用户在该系统中的一些口令、标识等。
  5.HKEY_CURRENT_CONFIG(包含了启动时由本地计算机系统使用的硬件配置文件的相关信息)
  该主键用于管理当前系统用户的系统配置情况,如该用户自定义的桌面管理、需要启动的程序列表等信息
 
另外,HKEY_DYN_DATA是Windows 9x注册表的子目录树,不被windows 2000/xp使用;
HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER是注册表中两个最重要的部分,应用程序一般在这里存储配置信息。
每个注册表项或子项都可以包含称为值项的数据,值项:一部分存储每个用户的特殊信息,一部分则存储应用于计算机所有用户的信息。
值项包括:指的名称、值的数据类型、值本身
注册表的数据类型:
REG_SZ:
(说明:固定长度的文本串)
REG_FULL_RESOURCE_DESCRIPTOR:
(说明:设计用来存储硬件元件或驱动程序的资源列表的一列嵌套数据)
REG_MULTI_SZ:
(说明:多个字符串,包含格式可被用户读取的列表或多值的值通常为该类型。项目用空格、逗号或其他标记分开)
REG_BINARY:
(说明:未处理的二进制数据,多数硬件组件信息都以二进制数据格式存储,而以十六进制格式显示在注册表编辑器中)
REG_DWORD:
(说明:数据由4字节长度的数表示,许多设备驱动程序和服务的参数是这种类型,并在注册表编辑器中以二进制、十六进制或十进制的格式显示)
REG_EXPAND_SZ:
(说明:长度可变的数据串,该数据类型包含在程序或服务使用该该数据时确定的变量)
 
注册表相关函数
1.RegOpenKeyEx函数
此函数在ADVAPI32.DLL用户模块中,它的作用是打开子键,函数原型:
LONG RegOpenKeyEx(
HKEY hKey, //要打开的主键句柄或标准项名
LPCWSTR lpSubKey, //要打开的子键名地址
DWORD ulOptions, //保留,必须为0
REGSAM samDesired, //存取掩码
PHKEY phkResult //存放打开子键句柄的地址
);
返回值:如果成功就返回0(ERROR_SUCCESS);失败则返回非零错误代码
2、RegQueryValueEx函数
此函数在ADVAPI32.DLL用户模块中,它的作用是获取一个项的设置值,函数原型:
LONG RegQueryValueEx(
HKEY hKey, //需要查找的主键的句柄或标准项名
LPCWSTR lpValueName, //需要查找的子键名地址
LPDWORD lpReserved, //保留,必须为0
LPDWORD lpType, //存放子键类型的缓冲区地址
LPBYTE lpData, //存放返回结果的缓冲区地址
LPDWORD lpcbData //存放返回结果字节长度的缓冲区地址
);
返回值:如果成功就返回0(ERROR_SUCCESS);失败则返回非零错误代码
3、RegSetValueEx函数
此函数在ADVAPI32.DLL用户模块中,它的作用是设置指定项的值,函数原型:
RegSetValueEx(
HKEY hKey, //需要设置键值的主键句柄或一个标准项名
LPCWSTR lpValueName, //需要设置的子键名地址
DWORD Reserved, //保留,必须为0
DWORD dwType, //键值类型
CONST BYTE * lpData, //所设置的数据地址
DWORD cbData //所设置的数据字节长度
);
返回值:如果成功就返回0(ERROR_SUCCESS);失败则返回非零错误代码
用Win32 API操作windows注册表步骤:
1、用RegOpenKey()或RegOpenKeyEx()打开想要操作的主键,获得一个句柄
2、将句柄传递给RegQueryValueEx(),RegSetValueEx()等函数来读写相应的键值
3、操作完毕后用RegCloseKey()关闭先前获得的句柄
 
注册表分析软件(两大类):
一类:注册表读写监视软件
另一类:注册表比较软件
 
1、注册表“监视员”-- Regmon
注册表实时监视软件,它将与注册表相关的一切操作(如:读取、修改、出错信息等)全部记录下来供用户参考,并允许用户对记录的信息进行保存、过滤、查找
2、注册表照相机 RegSnap
是一款分析windows注册表及系统配置文件更改的工具,原理:在不同时间段对注册表“拍照”,然后比较“拍照”结果,进而分析出注册表与系统文件的变化
3、注册表比较工具RegShot
是一个小巧的注册表静态比较工具,能够快速地帮助发现注册表变化,国产免费软件;作者:TiANWEI
posted @ 2020-02-13 17:07  鬼谷神僧  阅读(598)  评论(0编辑  收藏  举报