黑客编程入门(二)

黑客编程入门(二)

注册表下的操作是windows下的黑客不可或缺的东西,今天我们就来用代码操作下注册表

什么是注册表?

注册表是windows下的一个数据库,用于记录我们的系统和应用程序的各项配置信息。比如它控制着我们的开机就运行的程序,我们的浏览器的主页。

我们主要用到以下几个API函数:

LONG RegOpenKey(
	HKEY hkey,   //父键句柄
	LPCTSTR lpSubKey, //要打开的子键名称
	PHKEY phkResult //返回的子键句柄
	); //打开注册表函数
LONG RegCloseKey(
	HKEY hkey //关闭注册表的句柄
	); //关闭注册表函数
LONG RegQueryValueEx(
	HKEY hkey, //打开的注册表的句柄
	LPCTSTR lpValueName, //要查询的键值名称
	LPDWORD lpReserved, //保留 使用时直接用NULL
	LPDWORD lpType, //返回要查询的值的类型
	LPBYTE lpData, //要查询数据的缓冲区
	LPDWORD lpcbData //缓冲区的长度
	); //注册表键值查询函数
LONG RegSetValueEx(
	HKEY hkey, //打开的注册表的句柄
	LPCTSTR lpValueName, //被写入的键值名称
	DWORD Reserved, //保留 使用时直接用NULL
	DWORD dwType, //要写入的键值得类型
	CONST BYTE *lpData, //写入的键值的缓冲区
	DWORD cbData //写入键值缓冲区的长度
	); //注册表创建函数
LONG RegEnumValue(
	HKEY hkey, //打开的注册表的句柄
	DWORD dwIndex, //查询的索引值
	LPCTSTR lpValueName, //键名的缓冲区
	LPDWORD lpcValueName, //键名缓冲区的长度
	LPDWORD lpReserved, //保留 使用时直接用NULL
	LPDWORD lpType, //返回要查询的值的类型
	LPBYTE lpData, //要查询数据的缓冲区
	LPDWORD lpcbData //缓冲区的长度
	); //注册表枚举函数
LONG RegDeleteValue(
	HEKY heky, //打开的注册表的句柄
	LPCTSTR lpValueName, //要删除的键值项的名称
	); //注册表删除函数

这里不一一举例,下面的代码只是打印出启动项:

(使用了上面的3个API函数,打开/关闭注册表以及枚举函数 )

#include<stdio.h>
#include<windows.h>
#define REG_RUN "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
void ShowRunlist()
{
	HKEY hkey = NULL;
	LONG lRet = RegOpenKey(HKEY_LOCAL_MACHINE,REG_RUN,&hkey);
	if (lRet != ERROR_SUCCESS)
	{
		printf("打开注册表失败!\n");
		return ;
	}
	printf("打开注册表成功!\n");
	int i = 1;
	char szValueName[MAXBYTE] = {0};
	DWORD dwBufferSize = MAXBYTE;
	DWORD dwType = MAXBYTE;
	char szValueKey[MAXBYTE] = {0};
	DWORD dwKeySize = MAXBYTE;
	printf("Number\t键 名\t\t键 值\n");
	while(true)
	{
		lRet = RegEnumValue(hkey,i,szValueName,&dwBufferSize,NULL,&dwType,(unsigned char *)szValueKey,&dwKeySize);
		if(lRet == ERROR_NO_MORE_ITEMS)
		{
			break;
		}
		printf("%d\t%s\t%s\t\n",i,szValueName,szValueKey);
		i++;
		ZeroMemory(szValueName,MAXBYTE);
		ZeroMemory(szValueKey,MAXBYTE);
	}
	RegCloseKey(hkey);
}
int main()
{
	ShowRunlist();
	return 0;
}


程序运行结果图:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值