clsid

clsid

CLSID是指windows系統對於不同的應用程式,檔案類型,OLE對象,特殊資料夾以及各種系統組件分配一個唯一表示它的ID代碼,用於對其身份的標識和與其他對象進行區分。

基本介紹

  • 中文名:類標識符
  • 外文名:Class Identifier
  • 主體windows系統
  • 對象應用程式,檔案類型
  • 功能:對其身份的標識與其他對象區分
程式介紹,構成分析,運作基礎,常見CLSID,惡意廣告外掛程式,

程式介紹

CLSID是指windows系統對於不同的應用程式,檔案類型,OLE對象,特殊資料夾以及各種系統組件分配的一個唯一表示它的ID代碼,用於對其身份的標識和與其他對象進行區分。
先得說下GUID,它是Globally Unique Identifier的簡稱,中文翻譯為“全局唯一標識符”,在Windows系統中也稱之為Class Identifier,縮寫為CLSID。

構成分析

CLSID像人身份證一樣,是個類的唯一標識:
ID是英文IDentity的縮寫,是身份標識號碼的意思,就是一個序列號,也叫帳號,是一個編碼,而且是唯一的。
class是對某種類型的對象定義變數和方法的原型,是ID的樣式或屬性的補充。
註冊表中展開HKEY_CLASSES_ROOT\CLSID\,在CLSID分支下面就可以看到很多的ID,這些ID對應的都是系統裡面不同的程式,檔案,系統組件等。

運作基礎

CLSID是一個128位的隨機數,為了確保它的隨機性,避免重複,它的算法主要是從兩個方面入手:
1. 一部分數字來自於系統網卡的序列號,由於每一個網卡的MAC地址都不一樣,因此產生的ID也就會有差異。
2. 另外一部分數字來自於系統的當前時間。
有人計算過按照上面兩種方式得到ID的隨機性,得出的結論是:即使一台電腦每秒產生10000000個CLSID,也可以保證3240年不會重複。
為了避免衝突,微軟使用GUID作為CLSID,有專門生成GUID的函式,主要是根據當時的時間、機器地址等信息動態生成,理論上可保證全球代碼永不重複。

常見CLSID

我的文檔:450D8FBA-AD25-11D0-98A8-0800361B1103
我的電腦:20D04FE0-3AEA-1069-A2D8-08002B30309D
網上鄰居:208D2C60-3AEA-1069-A2D7-08002B30309D
資源回收筒:645FF040-5081-101B-9F08-00AA002F954E
Internet Explorer:871C5380-42A0-1069-A2EA-08002B30309D
控制臺:21EC2020-3AEA-1069-A2DD-08002B30309D
撥號網路/網路連線:992CFFA0-F557-101A-88EC-00DD010CCC48
任務計畫:D6277990-4C6A-11CF-8D87-00AA0060F5BF
印表機(和傳真):2227A280-3AEA-1069-A2DE-08002B30309D
歷史資料夾:7BD29E00-76C1-11CF-9DD0-00A0C9034933
公文包:85BBD920-42A0-1069-A2E4-08002B30309D
Web資料夾:BDEADF00-C265-11d0-BCED-00A0C90AB50F
網頁:25336920-03F9-11CF-8FD0-00AA00686F13

惡意廣告外掛程式

上面說到電腦上所有的的軟體都有CLSID,那么惡意外掛程式也有他自己的CLSID。比如下面的:
偽造IE瀏覽器:871C5380-42A0-1069-A2EA-08002B303099
如果你懷疑自己的電腦是否中了偽造IE瀏覽器惡意廣告外掛程式,進入註冊表,發現有這段CLSID,那么就肯定中了。
CLSID的生成
生成GUID的C++代碼
//--生成GUID的代碼//--相關程式/微軟guidgen.exe#include <objbase.h>#include <stdio.h>//--生成GUIDconst char* newGUID(){    static char buf[64] = {0};    GUID guid;    if (S_OK == ::CoCreateGuid(&guid))    {        _snprintf(buf, sizeof(buf)            , "{%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}"            , guid.Data1            , guid.Data2            , guid.Data3            , guid.Data4[0]            , guid.Data4[1]            , guid.Data4[2]            , guid.Data4[3]            , guid.Data4[4]            , guid.Data4[5]            , guid.Data4[6]            , guid.Data4[7]        );    }    return (const char*)buf;}int main(int argc, char* argv[]){    //--COM    CoInitialize(NULL);    printf(newGUID());    printf("\r\n");    //--COM    CoUninitialize();    return 0;}

相關詞條

熱門詞條

聯絡我們