国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      控制機(jī)器代碼的本機(jī)圖像訪問操作系統(tǒng)資源的系統(tǒng)及方法

      文檔序號(hào):9866061閱讀:407來源:國知局
      控制機(jī)器代碼的本機(jī)圖像訪問操作系統(tǒng)資源的系統(tǒng)及方法
      【技術(shù)領(lǐng)域】
      [0001] 本公開內(nèi)容設(shè)及計(jì)算機(jī)科學(xué)領(lǐng)域,并且更具體地設(shè)及用于控制機(jī)器代碼的本機(jī)圖 像訪問計(jì)算機(jī)裝置的操作系統(tǒng)資源的系統(tǒng)及方法。
      【背景技術(shù)】
      [0002] 目前,可安裝在用戶裝置(例如,個(gè)人計(jì)算機(jī)、智能電話、平板電腦等)上的軟件應(yīng) 用顯著地增長,且可由運(yùn)些應(yīng)用創(chuàng)建的文件的數(shù)目也指數(shù)地上升。在應(yīng)用的安裝和運(yùn)行時(shí) 由軟件應(yīng)用創(chuàng)建的某些文件是唯一的,即,文件可作為單一副本存在。很難在不執(zhí)行其內(nèi)容 的詳細(xì)分析的情況下分類此類文件。
      [0003] 通常,運(yùn)些文件可為機(jī)器代碼中的父程序集的圖像(即,本機(jī)圖像),運(yùn)是.肥T技術(shù) 的一部分。.肥T應(yīng)用可使用一定數(shù)目的程序集一起創(chuàng)建,其中程序集為由公共語言運(yùn)行(" CLR")環(huán)境輔助的二進(jìn)制文件。.肥T程序集包括W下元數(shù)據(jù)元素:
      [0004] ?可移植執(zhí)行("PE")文件標(biāo)頭;
      [0005] ?化晰頭;
      [0006] .公共中間語言("CIL")代碼;
      [0007] .在各種類型的程序集中使用的元數(shù)據(jù)(例如,類別、接口、結(jié)構(gòu)、列舉 (enumerations)、委托);
      [000引.程序集的清單;W及
      [0009] ?額外的內(nèi)置資源。
      [0010] 大體上,PE標(biāo)頭識(shí)另帷序集可在Window?系列的操作系統(tǒng)中加載和執(zhí)行。陽標(biāo)頭 還識(shí)別應(yīng)用(例如,控制臺(tái)應(yīng)用、具有圖形用戶接口的應(yīng)用、代碼庫等)的類型。
      [00川化財(cái)示頭構(gòu)成可支持所有.肥T程序集W便它們可在化R環(huán)境中維護(hù)的數(shù)據(jù)。CLR標(biāo) 頭包含諸如標(biāo)記、CLR版本、入口點(diǎn)(例如,在特定情況下,開始函數(shù)Main0的地址),運(yùn)允許 執(zhí)行環(huán)境確定管理的文件的組成(即,包含管理代碼的文件)。
      [0012] 各個(gè)程序集均包含CIL代碼,其為并非依賴處理器的中間代碼。在執(zhí)行期間,CIL代 碼由JIT(準(zhǔn)時(shí),即,動(dòng)態(tài)編譯)W實(shí)時(shí)模式編譯成對(duì)應(yīng)于特定處理器的要求的指令。
      [0013] 在任何給定程序集中,還存在完整描述存在于程序集內(nèi)的類型(例如,類別、接口、 結(jié)構(gòu)、計(jì)數(shù)、委托等)W及程序集參照的外部類型(即,其它程序集中描述的類型)的格式的 元數(shù)據(jù)。在可執(zhí)行環(huán)境中,元數(shù)據(jù)用于確定二進(jìn)制文件中的類型的位置,W將類型置于存儲(chǔ) 器中,且簡化類型的方法的遠(yuǎn)程調(diào)用的進(jìn)程。
      [0014] 程序集還可包含清單,其描述組成程序集的各個(gè)模塊、程序集的版本W(wǎng)及還有當(dāng) 前程序集參照的任何外部程序集。清單還包含指定程序集的版本和身份的程序集的要求所 需的所有元數(shù)據(jù),W及確定程序集的范圍和允許鏈接至資源和類別所需的所有元數(shù)據(jù)。下 表示出了包含在程序集的清單中的數(shù)據(jù)。前四個(gè)元素(程序集名稱、版本號(hào)、語言和區(qū)域參 數(shù),W及強(qiáng)名稱數(shù)據(jù))構(gòu)成程序集的身份。
      [0015]
      [0017] 任何.肥τ程序集都可包含任何給定數(shù)目的嵌入資源,如,應(yīng)用圖標(biāo)、圖形文件、音 頻片段或字符串表。
      [0018] 程序集可由若干模塊構(gòu)成。模塊為程序集的一部分,即,代碼或資源的邏輯收集。 用于程序集中的實(shí)體的等級(jí)為:程序集 >模塊> 類型(類別、接口、結(jié)構(gòu)、計(jì)數(shù)、委托 (delegate))>方法。模塊可為內(nèi)部(即,程序集的文件內(nèi))或外部的(即,分離文件)。模塊沒 有入口點(diǎn),其也不具有任何獨(dú)立的版本號(hào),且因此其不可由化R環(huán)境直接地載入。模塊僅可 由程序集的主模塊載入,如,包含程序集的清單的文件。模塊的清單僅包含所有外部程序集 的計(jì)數(shù)。各個(gè)模塊均具有模塊版本標(biāo)識(shí)符("MVID"),其為程序集的各個(gè)模塊中寫出的唯一 標(biāo)識(shí)符,其在各次編譯期間變化。
      [0019] 圖1A示出了單文件程序集的示例性布局。如圖所示,在單文件程序集中,所有要求 元素(例如,標(biāo)頭、CIL代碼、類型的元數(shù)據(jù)、清單和資源)位于單個(gè)文件*.exe或*.dll內(nèi)。
      [0020] 圖1B示出了多文件程序集的實(shí)例。多文件程序集由一組.肥T模塊構(gòu)成,其W單個(gè) 邏輯單元的形式配置,且設(shè)有相同的版本號(hào)。通常,運(yùn)些模塊中的一個(gè)稱為主模塊,且包含 程序集的清單,且還可包含所有所需的CIL指令、元數(shù)據(jù)、標(biāo)頭和附加資源。
      [0021] 主模塊的清單描述主模塊的操作依賴的所有其它相關(guān)模塊。多文件程序集中的次 級(jí)模塊可分配擴(kuò)展名*. netmodule。次級(jí)*. netmodule模塊也包含CIL代碼和類型的元數(shù)據(jù), W及模塊的水平的清單,其中列舉了由給定模塊所需的外部程序集。
      [0022] 正如任何PE文件,程序集可利用數(shù)字簽名(例如,X. 509)來簽名,其位于PE文件或 數(shù)字簽名目錄文件(.cat)的疊加部分(overlay)中。強(qiáng)名稱簽名另外或單獨(dú)使用,即,通過 使用程序集的內(nèi)容和RSA私鑰生成的哈希值。哈希值位于PE標(biāo)頭與元數(shù)據(jù)之間的程序集中。 哈希值使得有可能檢查程序集從其編譯時(shí)的時(shí)間起沒有變化。對(duì)于單文件程序集,當(dāng)編譯 文件時(shí),在PE標(biāo)頭之后沒有字節(jié)。文件的哈希值然后使用私鑰計(jì)算,且所得的哈希值輸入運(yùn) 些可用的字節(jié)中。
      [0023] 該技術(shù)對(duì)于多文件程序集是不同的。除程序集的主文件的哈希值之外,還計(jì)算外 部模塊的哈希值,此后,數(shù)據(jù)輸入主程序集中。模塊沒有其自身的簽名,且它們具有不同于 主模塊的MVID。W下項(xiàng)目輸入程序集的清單中:
      [0024] . PublicK巧,即,強(qiáng)名稱簽名的公鑰,W及
      [00巧]?化blicK巧Token,即,強(qiáng)名稱簽名的密鑰的公開部分的哈希。
      [0026] 通常,程序集分成:私密和公開/共享。私密程序集應(yīng)當(dāng)總是位于與它們用于其中 的客戶應(yīng)用相同的目錄(即,應(yīng)用目錄)中或其子目錄中的一個(gè)中。
      [0027] 相比之下,公開程序集可同時(shí)用于同一裝置上的若干應(yīng)用中。公開程序集并非位 于與它們被認(rèn)為應(yīng)用其中的應(yīng)用相同的目錄內(nèi)。相反,它們可安裝在全局程序集緩存(GAC) 中。GAC可同時(shí)位于如下表所示的若干位置中:
      [002引
      [0029] 安裝在GAC中的程序集應(yīng)當(dāng)具有強(qiáng)名稱。強(qiáng)名稱是用于COM中的全局唯一標(biāo)識(shí)符 (GUID)的當(dāng)代.肥T等同物。不同于128位數(shù)字的COM中的GUID值,.肥T的強(qiáng)名稱部分地基于 稱為公開密鑰和秘密(私密)密鑰的兩個(gè)相關(guān)加密密鑰。
      [0030] 強(qiáng)名稱由一組相關(guān)數(shù)據(jù)構(gòu)成,至少包括:
      [0031] .程序集的名稱(沒有文件擴(kuò)展名的程序集的名稱)。
      [0032] .程序集的版本號(hào);
      [0033] ?公鑰值;
      [0034] .指定區(qū)域的值,其不是強(qiáng)制的,且可用于應(yīng)用的定位;W及
      [0035] ?利用從程序集的內(nèi)容和私鑰的值獲得的哈希值創(chuàng)建的數(shù)字簽名。
      [0036] 為了創(chuàng)建程序集的強(qiáng)名稱,例如,用戶可獲得公鑰和私鑰,公鑰和私鑰的數(shù)據(jù)由提 供為.肥T框架SDK的一部分的實(shí)用程序sn.exe生成。實(shí)用程序生成包含用于兩個(gè)不同但數(shù) 學(xué)上相關(guān)的密鑰(公鑰和私鑰)的數(shù)據(jù)的文件。該文件的位置然后向編譯器指出,編譯器寫 出程序集的清單中的公鑰的全部值。
      [0037] 在特定情況中,編譯器基于程序集的全部內(nèi)容(例如,CIL代碼、元數(shù)據(jù)等)生成對(duì) 應(yīng)的哈希值。哈希值是對(duì)于固定輸入數(shù)據(jù)在統(tǒng)計(jì)上唯一的數(shù)值。因此,在.NET程序集的任何 數(shù)據(jù)(甚至字符串字面值中的單個(gè)字符)的變化的情況下,編譯器將生成不同的哈希值。生 成的哈希值然后與包含在文件內(nèi)的私鑰數(shù)據(jù)組合,W獲得插入CL財(cái)示頭數(shù)據(jù)內(nèi)的程序集中 的數(shù)字簽名。
      [0038] 圖1C示出了用于生成強(qiáng)名稱的示例性進(jìn)程。通常,私鑰數(shù)據(jù)未在清單中指出,而是 僅用于由數(shù)字簽名(連同生成的哈希值)識(shí)別程序集的內(nèi)容。在完成創(chuàng)建和分配強(qiáng)名稱的進(jìn) 程之后,程序集可安裝在GAC中。
      [0039] 例如,至GAC中的程序集的路徑可為:
      [0040] C:\Windows\assembly\GAC_32\KasperskyLab\2.0.0.0__b03f5f7f1Id50a3a\ KasperskyLab.dll,其中:
      [0041 ] C: \Windows\assembly 是至 GAC 的路徑;
      [0042] \GAC_32是處理器的GAC結(jié)構(gòu);
      [0043] \KasperskyLab是
      當(dāng)前第1頁1 2 3 4 5 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1