歡迎關(guān)注我的新博客https://pino-hd.github.io,最新的博文都會(huì)發(fā)布在上面哦~
Windows編程之注冊(cè)表編程
關(guān)于注冊(cè)表,是Windows的一大特色,也是在Windows滲透過程中用得到的,不過我一向覺得Windows的注冊(cè)表太過神秘(好吧,是因?yàn)樘嗔?。。。),那么今天學(xué)會(huì)了操作注冊(cè)表的一些操作,包括
RegCreateKeyEx, RegOpenKeyEx, RegQueryValueEx, RegSetValueEx, RegDeleteValue, RegCloseKey
代碼
#include <Windows.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
HKEY hKey;
DWORD dwType;
char d[255];
DWORD nLen = sizeof(d);
char* data = "https://www.baidu.com/";
RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Internet Explorer\\Main", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, &hKey);
RegQueryValueEx(hKey, "Start Page", 0, &dwType, (LPBYTE)d, &nLen);
printf("before change: %s\n", d);
memset(d, 0, strlen(d));
RegSetValueEx(hKey, "Start Page", 0, REG_SZ, (BYTE*)data, strlen(data));
RegQueryValueEx(hKey, "Start Page", 0, &dwType, (LPBYTE)d, &nLen);
printf("after change: %s\n", d);
//RegDeleteValue(hKey, "Start Page");
//RegQueryValueEx(hKey, "Start Page", 0, &dwType, (LPBYTE)d, &nLen);
//printf("after delete: %s\n", d);
RegCloseKey(hKey);
return 0;
}
這里稍微說一下這段代碼的含義,總的作用就是修改ie瀏覽器的默認(rèn)頁面,改成baidu的首頁。那么首先利用RegOpenKeyEx打開注冊(cè)表,并且將句柄放到先前聲明的hKey中,
這里的參數(shù)前兩個(gè)比較好理解,分別是注冊(cè)表的主鍵和子建,第三個(gè)REG_OPTION_NON_VOLATILE意思是將注冊(cè)表項(xiàng)存入文件中,使得重啟后修改有效,相反的就是REG_OPTION_VOLATILE,意思是重啟后無效,KEY_ALL_ACCESS的意思是打開子建后允許任意操作,最后一個(gè)是用來存放句柄的。
之后我們使用RegQueryKeyEx函數(shù)進(jìn)行查詢,這里第三個(gè)選項(xiàng)為保留值,一般為0,第四個(gè)是我門聲明的一個(gè)DWORD變量,這個(gè)是用來存放查詢的注冊(cè)表值的類型,第五個(gè)是用來存放查詢后的值的緩沖區(qū),然后是緩沖區(qū)的大小。
查詢后我們?cè)诶肦egSetValueEx函數(shù)進(jìn)行修改,第三個(gè)選項(xiàng)為保留值,一般為0,第四個(gè)選項(xiàng)是要修改的注冊(cè)表的類型,這里是REG_SZ,之后是要修改的數(shù)據(jù)的緩沖區(qū)以及他的大小。
當(dāng)然了,使用RegDeleteValue即可刪除注冊(cè)表選項(xiàng),參數(shù)也很簡(jiǎn)單,一個(gè)句柄,一個(gè)要?jiǎng)h除的名字
最后用RegCloseKey來關(guān)閉注冊(cè)表的句柄即可。