加密與解密學習筆記5 Windows登錄檔

2022-09-12 15:09:32 字數 3261 閱讀 1077

從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

《加密與解密》筆記(二)

9.2.3 il以元資料為操作物件,同時本身的執行又收到元資料的限定,元資料在 il中通過 token 引用和定位,token 是元資料項的唯一標識 從pe結構看,簽名 signature 就是在儲存在 blob 中的一段二進位制資料,作用是描述特定元資料的性質 9.4.1強名稱 net提供了一種驗...

《加密與解密》筆記五(二)

筆記內出現的api都是沒有加上引數的,細節需要去msdn檢視 相關api這裡對上面筆記的做一些補充 findfirstfile 確定檔案存在性的 createfile lopen 確定檔案存在性並獲得控制代碼對其操作 getfilesize 確定檔案的大小 getfileattributes 獲得檔...

MD5加密與解密

using system using system.collections.generic using system.linq using system.text using system.security.cryptography using system.io namespace encrypt...