注册表安全编程实验
实验三、注册表安全编程实验一、实验目的与要求1、了解windows注册表的作用2、设计注册表安全防护工具,并利用vc++ 编程实现二、实验环境Visual C++ 6.0三、实验原理在Windows的注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来,就象磁盘文件系统的目录结构一样。
每个键都包含了一组特定的信息,每个键的键名都是和它所包含的信息相关联的。
注册表的根键共有6个,这些根键都是大写的,并以HKEY为前缀,这种命令约定是以Win32API的Registry函数的关键字的符号变量为基础的。
它们分别为:1)HKEY_CLASSES_ROOT管理文件系统,根据在Windows中安装的应用程序的扩展名,该根键指明其文件类型的名称,相应打开该文件所要调用的程序等信息。
2)HKEY_CURRENT_USER管理系统当前的用户信息,在这个根键中保存了本地计算机中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码,在用户登录Windows时,其信息从HKEY_USERS中相应的项拷贝到HKEY_CURRENT_USER中。
3)HKEY_LOCAL_MACHINE该根键存放本地计算机硬件数据,管理当前系统硬件配置,此根键下的子关键字包括在SYSTEM.DAT中,用来提供HKEY_LOCAL_MACHINE所需的信息。
4)HKEY_USERS管理系统的用户信息,在这个根键中保存了存放在本地计算机口令列表中的用户标识和密码列表,同时每个用户的预配置信息都存储在HKEY_USERS根键中,HKEY_USERS是远程计算机中访问的根键之一。
5)HKEY_CURRENT_CONFIG管理当前用户的系统配置,在这个根键中保存着定义当前用户桌面配置(如显示器等等)的数据,该用户使用过的文档列表,应用程序配置和其他有关当前用户的安装信息。
6)HKEY_DYN_DATA管理系统运行数据,在这个根键中保存了系统在运行时的动态数据,此数据在每次显示时都是变化的[2],因此,此根键下的信息没有放在注册表中。
以上是注册表树最顶层的6个分支所分别代表的含义,可以由用户有针对性的对其进行修改、编辑等操作,但也可能受到来自网络的恶意攻击。
因此,注册表安全就是防止非授权用户访问注册表敏感键值和注册表本身。
系统启动项Windows操作系统的系统启动项是在注册表中设置的,在注册表中常见的自启动位置如下:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\下的Run、RunOnce、RunOnceEx、RunServices和RunServicesOnce;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion下的Run和Runonce;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersi on\Winlogon\Notify。
在这些注册表位置下,如果添加一新键值,并指定运行的程序,那么只要操作系统启动时,改程序自动启动。
文件关联文件关联就是将一种类型的文件与一个可以打开它的程序建立起一种依存关系。
当用户双击该类型文件时,系统就会先启动这一应用程序,再用它来打开该类型文件。
一个文件可以与多个应用程序发生关联,我们可以利用文件的“打开方式”进行关联选择,我们也可以删除因误操作而引起的错误文件关联,可以根据需要新建文件关联,在有些软件中还可以恢复文件的关联。
文件关联也是很多流行病毒、木马经常利用的隐藏和自动运行的手段。
可能被病毒修改用于启动病毒的,比较常见的是.exe关联方式被破坏,其他的文件关联也有可能被病毒利用.对应的注册表项主要有如下几项:HKEY_CLASSES_ROOT\exefile\shell\open\command;HKEY_CLASSES_ROOT\comfile\shell\open\command;HKEY_CLASSES_ROOT\txtfile\shell\open\command;HKEY_CLASSES_ROOT\batfile\shell\open\command;HKEY_CLASSES_ROOT\inifile\shell\open\command。
操作注册表的API函数介绍:RegCreateKeyEx该函数用来创建注册表键LONG RegCreateKeyEx(HKEY hKey,LPCTSTR lpSubKey,DWORD Reserved,LPTSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);hKey 入参,一个打开键的句柄。
调用该函数的进程必须拥有KEY_CREATE_SUB_KEY的权力。
该句柄可以是RegCreateKeyEx或者RegOpenKeyEx的返回值,也可以是以下预定义的值HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERSlpSubKey 入参,标识子键名称。
该参数不能为空。
参数中不能存在(/)Reserved 保留值,必须为0lpClass 入参,指向一个字符串,该字符串定义了该键的类型。
可以为空。
该参数可以在操作本地和远程注册表时使用dwOptions 入参,该参数可以是以下值REG_OPTION_BACKUP_RESTORE,0x00000004LREG_OPTION_NON_VOLATILE,0x00000000L ,一般使用该值REG_OPTION_VOLATILE,0x00000001LsamDesired 入参,定义访问权限lpSecurityAttributes 入参,定义返回的句柄是否可以被子进程继承,为NULL时不能继承。
phkResult 出参,保存返回的句柄lpdwDisposition 出参,可以是以下值。
如果为空,则不返回。
REG_CREATED_NEW_KEY,0x00000001L 该键是新创建的键REG_OPENED_EXISTING_KEY,0x00000002L 该键是已经存在的键该函数的返回结果:成功则返回ERROR_SUCCESS,否则失败.RegOpenKeyEx该函数用来打开一个指定的注册表键,参数的使用和返回结果与RegCreateKeyEx函数相同。
LONG RegOpenKeyEx(HKEY hKey, // 需要打开的主键的名称LPCTSTR lpSubKey, //需要打开的子键的名称DWORD ulOptions, // 保留,设为0REGSAM samDesired, // 安全访问标记,也就是权限PHKEY phkResult // 得到的将要打开键的句柄) ;RegSetValueEx该函数将在注册表项下设置指定值的数据和类型LONG RegSetValueEx(HKEY hKey,LPCTSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);hKey 一个已打开项的句柄,或指定一个标准项名lpValueName 指向一个字符串的指针,该字符串包含了欲设置值的名称。
若拥有该值名称的值并不存在于指定的注册表项中,则此函数将其加入到该项。
如果此值是NULL,或指向空字符串,则此函数为该项的默认值或未命名值设置类型和数据。
Reserved 保留值,必须强制为0dwType 指定将被存储的数据类型,该参数可以为REG_BINARY 任何形式的二进制数据REG_DWORD 一个32位的数字REG_DWORD_LITTLE_ENDIAN 一个“低字节在前”格式的32位数字REG_DWORD_BIG_ENDIAN 一个“高字节在前”格式的32位数字REG_EXPAND_SZ 一个以0结尾的字符串,该字符串包含对环境变量(如“%PAHT”)的未扩展引用REG_LINK 一个Unicode格式的带符号链接REG_MULTI_SZ 一个以0结尾的字符串数组,该数组以连接两个0为终止符REG_NONE 未定义值类型REG_RESOURCE_LIST 一个设备驱动器资源列表REG_SZ 一个以0结尾的字符串lpData 指向一个缓冲区,该缓冲区包含了欲为指定值名称存储的数据。
cbData 指定由lpData参数所指向的数据的大小,单位是字节。
该函数的返回结果:成功则返回ERROR_SUCCESS,否则失败.四、实验内容1、注册表编写实验2、通过注册表修改浏览器的默认主页五、实验步骤(1)、注册表编写实验以管理员的身份运行vc++6.0,部分代码如下:HKEY hKey1;DWORD dwDisposition;LONG lRetCode;//创建注册表代码lRetCode = RegCreateKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\\ Microsoft\\Windows NT\\CurrentVersion\\IniFileMapping\\WebSecurity", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey1, &dwDisposi tion);//设置键值代码,Hack_Name为键名,sixage为键值lRetCode=RegSetValueEx(hKey1,"Hack_Name",0,REG_SZ,(byte*)"sixage", 100);成功后截图如下:程序运行完后,结果是在HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\Windows NT\CurrentVersion\IniFileMapping\WebSecurity下创建了2个键值Hack_Hobby和Hack_Name(2)、通过注册表修改浏览器的默认主页通过修改HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main下“Start Page”的键值和HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下“Start Page”的键值,来达到修改浏览者IE默认连接首页的目的。
L002004024-维护注册表安全
实验步骤1、学生单击“试验环境试验”进入试验场景,单击“打开控制台”按钮,进入windows 2000目标主机,如图所示:2、输入密码123456,然后点击确定,进入目标主机。
如图:3、在菜单栏单击运行并输入regedt32.如图:4、选择HKEY_LOCAL_MACHINE项5、给注册表项指派权限单击想要指派权限的项(这里我们选择HKEY_LOCAL_MACHINE项)在“安全”菜单上,单击“权限”。
6、可以为相应的用户和组指派访问权限:要授予用户读取该项内容的权限,但不保存对文件的任何更改,请选中“读取”下的“允许”复选框。
要授予用户打开、编辑和获得所选项所有权的权限,请选中“完全控制”下的“允许”复选框。
要授予用户对所选项的特殊权限,请单击“高级”。
如果要给子项指派权限,并希望指派给父项的可继承权限能够应用于子项,请选中“允许将来自父系的可继承权限传播给该对象”复选框。
设置完成后,单击确定。
7、在只读模式下查看数据“只读模式”可以保护注册表数据免遭潜在的损坏和突然的改变。
单击“只读模式”后,注册表编辑器将不保存所做的任何更改。
在“选项”菜单上,单击“只读模式”。
8、注册表的备份与恢复(1)在Windows 2000中,所有的注册表文件都放在“%systemroot%\system32\config”目录下(%systemroot%是系统的环境变量,表示Windows 2000安装路径)。
此文件夹中的每一个文件都是注册表的重要组成部分,对系统有着关键的作用。
其中没有扩展名的文件是当前注册表文件,也是最重要的。
Default:缺省注册表文件SAM:安全帐户管理器注册表文件SECURITY:安全注册表文件Software:应用软件注册表文件System:系统注册表文件(2)应用备份程序点击“程序”→“附件”→“系统工具”→“备份”,打开备份程序。
点击“备份”选项卡,在左边的窗口中选择“系统状态”,在右边的窗口中选择“注册表”。
实验一、注册表安全机制实验
实验一、注册表安全机制实验【实验目的】(1)了解注册表在系统安全中的地位和作用(2)了解几个与系统安全密切相关的重要注册表键值(3)掌握使用Windows API访问注册表的编程方法。
【实验内容】通过编程以对话框形式完成对注册表编辑器的禁用与解禁。
【实验方法步骤】(1)用RegOpenKeyEx()函数打开注册表项:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrestVersion\Policies\System。
如果该注册表项不存在,则用RegCreateKeyEx()函数创建该项。
(2)如果该项为新创建的,则新建立一个REG_SZ值项DisableChangePassword 和一个REG_DWORD值项dword。
如果该值项已经存在,则用RegQueryValueEx()读取值项DisableRegistryTools的dword的值。
(3)用wsprintf()和MessageBox()函数把项值显示在屏幕上。
(4)将值项dword的值置为1。
(5)用RegFlushKey()函数将对注册表项的修改写入注册表。
(6)用RegCloseKey()函数关闭打开的注册表项。
(7)编译执行立即生效。
(8)发regedit命令验证结果。
【实验报告】(1)提交原程序、可执行程序代码。
(2)编写并提交程序数据字典。
【实验注意事项】由于注册表值项中值的改变会直接影响系统性能,编程时需慎重,除本次实验要求的内容外,不得随意改变或删除其它注册表项。
【相关知识点】1、实验必备知识注册表既是Windows的重要组成部分,也是黑客攻击的主要对象之一。
黑客通过对被攻击方注册表的的访问获取大量系统信息,甚至直接击毁系统。
防止注册表攻击的方法有许多,其中一种就是禁止用户运行系统提供的两个注册表工具Regedt32.exe和Regedit.exe。
禁止的方法由修改下列注册表项的值实现:HKEY_CURRENT_USER\Software\Wicrosoft\Windows\CurrentVersion\Policie s\System值项:DisableRegistryTools类型:REG_DWORD值为1表示禁止使用Windows 中的注册表工具Regedt32.exe和Regedit.exe。
注册表安全实验
整理课件
11
【相关知识点】(续)
HETY_LOCAL_MACHINE HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_USERS HKEY_CURRENT_USER HETY_LOCAL_MACHINE根键中存放控制
整理课件
6
【实验方法步骤】(续)
(3) 用wsprintf()和MessageBox()函数把项值显 示在屏幕上。
(4) 将值项dword的值置为1。 (5) 用RegFlushKey()函数将对注册表项的修改
写入注册表。 (6) 用RegCloseKey()函数关闭打开的注册表
项。 (7) 编译执行立即生效。 (8) 发regedit命令验证结果。
整理课件
7
【实验报告】
(1) (2)
提交原程序、可执行程序代码。 编写并提交程序数据字典。
整理课件
8
【实验注意事项】
由于注册表值项中值的改变会直接影响系统性 能,编程时需慎重,除本次实验要求的内容外, 不得随意改变或删除其它注册表项。
整理课件
9
【相关知识点】
1、实验必备知识 防止注册表攻击的方法有许多,其中一种就是禁
整理课件
4
【实验内容】
通过编程以对话框形式完成对注册表编辑器 的禁用与解禁
整理课件
5
【实验方法步骤】
(1) 用RegOpenKeyEx()函数打开注册表项: HKEY_CURRENT_USER\Software\Microsoft\ Windows\Currest Version\Policies\System。如果 该注册表项不存在,则用RegCreateKeyEx() 函数创建该项。
实验三注册表维护实验
实验三注册表维护实验一、实验目的了解注册表的作用和如何维护注册表。
二、实验要求(1)注册表的导入与导出(2)注册表的编辑修改(3)注册表的备份(4)注册表的恢复与禁用三、实验原理注册表在Windows中起着核心的作用。
注册表内存放了所有的硬件信息,包括系统启动时可识别、BIOS可识别的和BIOS不可识别的。
注册表通过描述硬件的驱动程序和参数,使得Windows可以知道,到哪里去装入硬件的驱动程序,可以分配给与它哪些资源,分配的资源之间是否有冲突等等。
在注册表中,还存放了硬件的运行状态,应用程序可以通过注册表这层“中介”来取得硬件信息。
软件方面,一方面,注册表储存了windows的所有信息,这些信息控制了Windows的桌面外观、浏览器界面、系统性能、网络协议等。
如果这些信息出错或损坏,Windows将无法正常工作。
另一方面,注册表也存储了32位应用程序和Windows打交道的信息。
应用程序的安装注册信息,启动参数,文件名关联等等都离不开注册表。
像一些高级技术,如OLE,DDE等的实现,更是离不开注册表。
通过注册表,Windows操作系统和应用程序十分密切地结合在一起。
(一)注册表在Windows中的作用分析1.设置Windows安装程序和其他(程序或硬件的)安装程序,在安装或配置时,都会将配置数据添加到注册表中。
例如,安装新的SCSI适配器或更改显示器的设置时,系统将添加新的信息。
安装程序也读取注册表信息来确定是否安装了必须的组件。
2.识别器每次启动运行Windows的计算机时,识别程序都将把硬件配置数据放置在注册表中,该数据包括系统中检测到的硬件列表。
对于WindowsNT/2000,硬件检测由硬件识别程序()和Windows2000内核(NToskrnl.exe)程序完成。
3.Windows内核在系统启动过程中,Windows内核从注册表中提取信息,如加载哪些设置驱动程序以及它们的加载顺序。
实验课:Windows注册表
补充:实验课---Windows注册表 补充:实验课---Windows注册表 ---Windows
由此可见, 注册表( 由此可见 , 注册表 ( Registry) 是 Windows95以 ) 以 上版本操作系统中硬件设备以及客户应用程序得 以正常运行和保存设置的核心“ 数据库” 以正常运行和保存设置的核心 “ 数据库 ” ; 也可 以说是一个非常巨大的树状分层结构的数据库系 统 。 它记录了用户安装在机器上的软件和每个程 序的相互关联信息; 它包含了计算机的硬件配置, 序的相互关联信息 ; 它包含了计算机的硬件配置 , 包括自动配置的即插即用的设备和已有的各种设 备说明、状态属性以及各种状态信息和数据。 备说明、状态属性以及各种状态信息和数据。
注册表? 一、什么是Windows注册表? 什么是 注册表 有人曾经说过,了解了注册表就读懂了 WIN系统,这句话是一点都不假的。 那么,什么是注册表?注册表有什么功 能? 如何去修改注册表以达到最佳的效果? 又如何来区分注册表里有用和无用甚至 是危害的部分呢?
补充:实验课---Windows注册表 补充:实验课---Windows注册表 ---Windows
(1)分析: 分析:
什么是注册表?在还是使用 操作系统的时代里, 什么是注册表?在还是使用Dos和Win3.x操作系统的时代里,大部分的 和 操作系统的时代里 应用程序都采用了ini文件 初始化文件)来保存一些配置信息,如设置路径, 文件( 应用程序都采用了 文件(初始化文件)来保存一些配置信息,如设置路径, 环境变量等。 控制着所有windows和应用程序的特征和 环境变量等。system.ini和win.ini控制着所有 和 控制着所有 和应用程序的特征和 存取方法,它在少数的用户和少数应用程序的环境中工作的很好。 存取方法,它在少数的用户和少数应用程序的环境中工作的很好。随着应用程 序的数目的不断增加和复杂性的日益增强,则需要在.ini文件中添加更多的参 序的数目的不断增加和复杂性的日益增强,则需要在 文件中添加更多的参 数项。这样下来,在一个变化的环境中,在应用程序安装到系统中后, 数项。这样下来,在一个变化的环境中,在应用程序安装到系统中后,每个人 都会更改.ini文件 然而,几乎没有一个人在删除应用程序后删除.ini文件中的 文件。 都会更改 文件。然而,几乎没有一个人在删除应用程序后删除 文件中的 相关设置,所以system.ini和win.ini这个两个文件会变的越来越大。每次增加 这个两个文件会变的越来越大。 相关设置,所以 和 这个两个文件会变的越来越大 的内容会导致系统性能越来越慢,在每次应用程序的升级都出现类似的难题: 的内容会导致系统性能越来越慢,在每次应用程序的升级都出现类似的难题: 升级后会增加更多的参数项但是从来不去掉旧的参数设置。 升级后会增加更多的参数项但是从来不去掉旧的参数设置。而且还有一个明显 的问题,一个.ini文件的最大尺寸是 文件的最大尺寸是64KB。为了能够解决这个问题,软件商自 的问题,一个 文件的最大尺寸是 。为了能够解决这个问题, 己开始支持自己的.ini文件 然后指向特定的ini文件 这样下来多个.ini文件影 文件, 文件, 己开始支持自己的 文件,然后指向特定的 文件,这样下来多个 文件影 响了系统正常的存取级别设置。 响了系统正常的存取级别设置。
注册表实验报告
注册表实验报告信息安全与对抗系统综合应⽤姓名学号班级指导教师2015年 5 ⽉15 ⽇实验名称:注册表安全编程实验⼀:注册表基础⼀.实验时间:15min⼆.实验组成员:三.实验⽬的:学习注册表编辑器的启动⽅法、如何查找和导⼊导出。
四.实验原理:Windows操作系统是由许多⽂件组成的,注册表也不例外,对于Windows 9x系统,注册表底层是由System.dat和User.dat两个⽂件组成的。
它们是⼆进制⽂件,不能⽤⽂本编辑器查看。
它们⼀般存放于Windows⽬录下,具有隐含、系统、只读属性。
System.dat包含了计算机特定的配置数据,User.dat包含了⽤户特定的数据。
User.dat ⽂件的位置在以某个⽤户名登录时,其位于C:\Windows\profiles\⽤户名⽬录下,系统同时在C:\Windows⽬录下保留了⼀个缺省的User.dat⽂件,以备新⽤户使⽤。
另外⼀个⽂件Config.pol影响着注册表中⽤户看到的设置,但其并不真正是注册表的⼀部分。
Windows NT/2000/XP中的注册表⽂件在多数情况下存放于%SystemRoots%\System32\Config⽂件夹中(%SystemRoot%指系统根⽬录)。
其中包括Default、Sam、security、Software、System和以log、sav为扩展名的同名⽂件。
⽽每个计算机⽤户的⽤户配置⽂件信息(包括Ntuser.dat和Ntuser.dat.log)的位置在Windows NT 中是%SystemRoot%\profiles\Username,⽐如⽤户public的Ntuser.dat⽂件就存放于C:\winnt\profiles\public。
Windows 2000则取决于是全新安装还是从windows 95/98或windows NT升级安装。
在全新安装以及从Windows 95/98升级安装的情况下,Ntuser.dar和Ntuset.dar.log⽂件存储在%SystemDriye%\Documents and Settings\username⽂件夹中。
(安全生产)计算机网络安全技术实验
计算机网络安全技术实验案例名称:操作注册表程序名称:#include <stdio.h>#include <windows.h>main(){HKEY hKey1;DWORD dwDisposition;LONG lRetCode;//创建lRetCode = RegCreateKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\IniFileMapping\\WebSecurity", 0, NULL, REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL, &hKey1, &dwDisposition);//如果创建失败,显示出错信息printf ("Error in creating WebSecurity key\n");return (0) ;}//设置第一个键值lRetCode = RegSetValueEx ( hKey1,"Hack_Name",0,REG_SZ,(byte*)"sixage",100);//设置第二个键值lRetCode = RegSetValueEx ( hKey1,"Hack_Hobby",0,REG_SZ,(byte*)"Running",100);//如果创建失败,显示出错信息printf ( "Error in setting Section1 value\n");return (0) ;}printf("注册表编写成功!\n");return(0);}案例名称:判断是否中了“冰河”程序名称:proj3_13.cpp#include <stdio.h>#include <windows.h>main(){HKEY hKEY;LPCTSTR data_Set ="txtfile\\shell\\open\\command";long ret0 = (RegOpenKeyEx(HKEY_CLASSES_ROOT, data_Set, 0, KEY_READ,&hKEY));if(ret0 != ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行{return 0;}//查询有关的数据LPBYTE owner_Get = new BYTE[80];DWORD type_1 = REG_EXPAND_SZ ;DWORD cbData_1 = 80;long ret1=RegQueryValueEx(hKEY, NULL, NULL, &type_1, owner_Get, &cbData_1);if(ret1!=ERROR_SUCCESS){return 0;}if(strcmp((const char*)owner_Get,"%systemroot%\\system32\\notepad.e xe %1") == 0){printf("没有中冰河");}else{printf("可能中了冰河");}printf("\n");}编译运行会有下面结果然后在注册表中HKEY_CLASSES_ROOT 主键下的“txtfile\shell\open\command”将值改为其他的,然后再运行。
实验二 Socket编程与注册表编程
信息工程学院、软件学院实验报告实验项目:Socket编程与注册表编程实验者:金宇杰班级:05计算机一班学号:19号指导老师:丁琼实验日期:2007-11实验二Socket编程与注册表编程一、实验目的.1编写程序实现功能:登陆系统以后,自动执行一个程序,该程序将系统登陆名改成Administrator;2编写程序实现功能:清除”冰河”程序和文本文件的关联.。
二、实验环境与实验准备工作实验环境:Microsoft Windows xp操作系统,安装了C++语言程序。
实验准备工作:在开始本实验之前,请回顾教科书的相关内容(如常用C++的使用和注册表的编辑)。
三、实验要求:学生每人一台计算机,独立完成实验全过程.四、实验内容与步骤(含结果及实验中出现的问题)1:编写. 程序实现功能:登陆系统以后,自动执行一个程序,该程序将系统登陆名改成Administrator.:#include <iostream>#include <windows.H>using namespace std;main(){HKEY hKey1;LONG lRetCode;lRetCode=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",0,KEY_WRITE,&hKey1);if(lRetCode != ERROR_SUCCESS){printf("Error in creating appname.ini key \n");return(0);}lRetCode = RegSetValueEx(hKey1,"DefaultUserName",0,REG_SZ,(byte*)"Administrator",20);if(lRetCode != ERROR_SUCCESS){printf("Error in setting Section1 value\n");return (0);}printf("已经成功将登录名改成Administrator");return(0);}结果:2.编写程序实现功能:清除”冰河”程序和文本文件的关联.#include <stdio.h>#include <windows.h>int main(){ HKEY hkey,hKEY;LPCTSTR lpSubKey="txtfile\\shell\\open\\command";LPCTSTR dest="C:\\WINDOWS\\notepad.exe %1";//查找记事本程序LONG ret0=RegOpenKeyEx(HKEY_CLASSES_ROOT,lpSubKey,0,KEY_READ,&hkey);//查询注册表信息if(ERROR_SUCCESS!=ret0){ MessageBox(NULL,"Open Failure","Error",MB_OK);//如果查询出错则输出异常提示return 0; }LPBYTE lpData=new BYTE[80];DWORD lpType=REG_SZ;DWORD lpcbData=80;LONG ret1=RegQueryValueEx(hkey,NULL,0,&lpType,lpData,&lpcbData);if(ERROR_SUCCESS!=ret1){ MessageBox(NULL,"read Failure","Error",MB_OK);return 0; }if(strcmp((const char*)lpData,dest)==0)MessageBox(NULL,"No IceRiver","Safety",MB_OK);else{MessageBox(NULL,"Maybe IceRiver","Warm",MB_OK);long ret3 = (RegOpenKeyEx(HKEY_CLASSES_ROOT, lpSubKey, 0, KEY_WRITE,&hKEY));long ret2 = RegSetValueEx (hKEY, NULL, 0, REG_EXPAND_SZ, (byte*)"%systemroot%\\system32\\notepad.exe %1", 80);//LONGret2=RegSetValueEx(hkey,NULL,0,REG_SZ,(BYTE*)dest,strlen(dest));//RegSetValue(hkey,NULL,REG_SZ,"C:\\WINDOWS\\notepad.exe %1",40);if(ret2!=ERROR_SUCCESS){MessageBox(NULL,"NO-Success!","Error",MB_OK);printf("Change Fail!\n");}else{MessageBox(NULL,"Yes-Success!","OK",MB_OK);printf("Change Success!\n"); }}return 0;//return 1;}实验结果:五、实验心得这是我第二次关于网络安全的实验.由于C++和注册表都是我所擅长的,所以做起来也非常的熟练.上课积极提问是我的优点,谢谢老师不厌其烦的为我们讲解.这节课使我学会了使用注册表,复习C++编程.掌握如何通过C++和注册表修改管理员用户和清楚冰河木马程序.真的是受益非浅呀.。
Windows关于注册表编程reg
读写windows注册表Windows注册表是Windows的灵魂,它不仅保存了windows运行时所有配置信息,而且包括所有应用程序的运行环境。
下面我们通过一个实例来展示一下如何利用windows提供的api来操作注册表。
注册表函数对注册表的操作是通过句柄来完成的,与文件操作一样,在对某个键下的子键或者键值项进行操作之前,需要先将这个键打开,然后使用键句柄来引用这个键,在操作完毕以后再将键句柄关闭。
注册表的根键不需要打开,它们的句柄是固定不变的,要使用根键的时候只要把这些句柄直接拿来用就是了,在WinReg.h已经定义了这些句柄值,下面是常用的:#define HKEY_CLASSES_ROOT (( HKEY ) (ULONG_PTR)((LONG)0x80000000) )#define HKEY_CURRENT_USER (( HKEY ) (ULONG_PTR)((LONG)0x80000001) )#define HKEY_LOCAL_MACHINE (( HKEY ) (ULONG_PTR)((LONG)0x80000002) )#define HKEY_USERS (( HKEY ) (ULONG_PTR)((LONG)0x80000003) )#define HKEY_CURRENT_CONFIG (( HKEY ) (ULONG_PTR)((LONG)0x80000005) )在程序中可以随时将这些助记符当做句柄来引用对应的根键。
在程序结束的时候,不需要关闭这些根键句柄。
打开子键使用RegOpenKeyEx函数,在Win16中还存在一个RegOpenKey函数,虽然在Win32中这个函数仍然存在,但这仅是为了兼容的目的而设置的。
API手册中推荐使用RegOpenKeyEx函数:LONG RegOpenKeyEx( HKEY hKey,LPCWSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult );函数的hKey参数指定父键句柄,lpSubKey指向一个字符串,用来表示要打开的子键名称,在系统中一个子键的全称是以“根键\第1层子键\第2层子键\第n层子键”类型的字符串表示的,中间用“\”隔开,字符串的最后以0字符结束,这和目录名的表示方法是很像的。
网络安全技术实验一_注册表编程
沈阳工程学院
学生实验报告
实验室名称:信息学院网络安全实验室
实验课程名称:网络安全技术
实验项目名称:实验一注册表管理实验
班级:姓名:学号:
实验日期:2014 年3 月14 日实验台编号:34 指导教师:
批阅教师(签字):成绩:
图1 修改注册中我的电脑的键值
删除该子键,然后刷新一下桌面在找找看有没有我的电脑这个图标,如图2
图3 隐藏最近登录的用户第三步:为开始菜单和任务栏加速
图4 为开始菜单和任务栏加速第四步:禁止CD-ROM的自动运行
图5 禁止CD-ROM的自动运行第五步:改变欢迎对话框
图6 修改前的注册表图7 修改后的注册表
图13 修改其注册表
图16 修改其注册表
、重启计算机后,将会看到在任务栏中显示的时间会显示为hh点mm分了,如图。
