專利名稱:限制軟件更新的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計算機軟件安全領(lǐng)域,尤其涉及盜版或未許可軟件的檢測。
背景技術(shù):
軟件盜版是軟件生產(chǎn)商的主要關(guān)注問題。大量的金錢收入損失都歸因于投入市場的軟件產(chǎn)品的非法復(fù)制和使用。對軟件產(chǎn)品的保護可采取許多形式。一種流行的形式是使用軟件產(chǎn)品中嵌入的代碼,它一般令操作被非法復(fù)制的代碼變得很難。盡管這些類型的基于軟件的代碼保護對抑制不熟練的軟件盜竊者是有用的,然而受良好訓(xùn)練的軟件黑客僅僅被這類保護降低了速度。實際上,在因特網(wǎng)上有若干市場上可買到的工具可用,它們可幫助軟件黑客反轉(zhuǎn)工程師代碼,使得可設(shè)計出補丁或其它繞道工作來克服基于軟件的保護。因此,當前可用的基于軟件的代碼保護在防止市場上可買到的軟件的未授權(quán)使用中變得越來越低效。然而,基于軟件的代碼保護的確在某一級別上能夠?qū)τ诒I版給予保護,并且對某些想要成為軟件盜版者的人是有效的。
因此,需要一種保護軟件免受盜竊的技術(shù),那些盜竊者充分利用了軟件代碼保護概念,但也回答了聰明的盜竊者對于誰將反轉(zhuǎn)工程師代碼并抑制那些保護的問題。本發(fā)明著眼于上述需求并解決了這些問題,同時還具有此處所表達的額外的優(yōu)點。
發(fā)明內(nèi)容
一種檢測盜版軟件的方法包括接收客戶機計算機對軟件更新的請求,并向客戶機計算機提供要執(zhí)行的測試。該測試在客戶機計算機上對客戶機軟件應(yīng)用程序執(zhí)行。作為測試的結(jié)果,客戶機計算機可被拒絕軟件更新,由此停止了軟件盜竊的傳播。
依照本發(fā)明的一個方面,客戶機向發(fā)送測試代碼到客戶機的服務(wù)器請求軟件更新,客戶機執(zhí)行該代碼并向服務(wù)器發(fā)送結(jié)果。服務(wù)器評估該結(jié)果,并且基于服務(wù)器通過測試對客戶機軟件是否合法的驗證,同意對軟件更新的請求或拒絕該請求。在非服務(wù)器環(huán)境中,測試可被傳送到向CD請求升級的客戶機計算機上。升級請求的同意或拒絕分別基于由客戶機計算機在軟件應(yīng)用程序上執(zhí)行的完整性測試的成功或失敗。
當結(jié)合附圖閱讀時,可以更好地理解以上概述以及以下較佳實施例的詳細描述。為說明本發(fā)明的實施例的目的,附圖中示出了本發(fā)明的示例性構(gòu)造;然而,本發(fā)明不限于所揭示的具體方法和手段。附圖中;圖1所示是其中可實施本發(fā)明的一個實施例的網(wǎng)絡(luò)的框圖;圖2是涉及本發(fā)明的各方面的方法的流程圖;圖3是其中可實現(xiàn)本發(fā)明的各方面的示例性計算環(huán)境的框圖。
具體實施例方式
綜述基于軟件的反盜版技術(shù)可通過使用添加到應(yīng)用程序的反盜版代碼來幫助識別所使用的軟件副本是否為合法的許可副本,來有利地使用。軟件盜竊者可改變基于軟件的保護并禁用它們,以哄騙保護方案允許使用該應(yīng)用程序。
本發(fā)明的一個方面是如果在應(yīng)用程序的站點處的受懷疑的代碼上執(zhí)行了測試,使得返回指示受懷疑的代碼的完整性的結(jié)果,則會發(fā)生對這類盜版的應(yīng)用程序的合法更新的拒絕。通過測試諸如基于軟件的反盜版保護等項目的正確存在和/或功能,可對于可行的許可證的真實性作出評估。如果由主存(host)受懷疑的應(yīng)用程序的客戶機計算機執(zhí)行的測試失敗,則代碼可能已被改變,并且很可能不正確地被許可。在這些情況下,可拒絕軟件更新,由此防止了盜版代碼的升級使用的延續(xù)。防止將來的升級最終將使軟件的盜版副本變得過時,并且因此降低了被盜竊的軟件副本的可用性。
本發(fā)明的示例性實施例對于在銷售給顧客的軟件應(yīng)用程序中安置的基于軟件的保護,有三種主要類別的攻擊。第一種類別可被稱為數(shù)據(jù)攻擊,其中,通過改變所依賴的數(shù)據(jù)阻撓軟件保護機制,以感知一不受限制的條件。例如,如果安裝在用戶機器上的軟件應(yīng)用程序,如試用副本,在一周或一個月內(nèi)有用,因此軟件保護機制在一周或一個月的到期日之后會防止對應(yīng)用程序的訪問。阻撓這一保護的一種方式是輸入軟件保護碼,并移除或篡改定時信息(數(shù)據(jù)),使得永遠不會達到超時時段。由此,盜竊者取出了試用應(yīng)用軟件的時間限制許可證,并將許可證的時段非法地延長為無限期。另一種常見的技術(shù)是在每次啟動試用軟件時將試用軟件的定時器復(fù)位到零,由此非法地延長了臨時許可證。這些類型的攻擊可被稱為數(shù)據(jù)攻擊。
對基于軟件的反盜竊機制的第二種類別的攻擊可以被稱為二進制補丁。這一常見的技術(shù)涉及軟件盜竊者生成在盜版的應(yīng)用程序中運作的代碼,以繼續(xù)起作用,因為代碼補丁阻撓了許可證測試參數(shù)。例如,如果軟件的許可副本是在給定的時間終止,或者如果使用了某些其它許可證可行性測試,則盜竊者可用軟件補丁將測試的狀態(tài)設(shè)為即使在許可證過期之后仍總是被許可的。這一類型的攻擊可被稱為二進制攻擊。
對基于軟件的反盜竊保護的第三種類型的攻擊可被稱為旁路密鑰(bypasskey)泄漏。在這一類型的攻擊中,可修改通常給予企業(yè)作為場地許可證的多用戶密鑰,以允許非授權(quán)的密鑰持有者獲取期望的應(yīng)用軟件的副本。一個示例是向合法地購買密鑰的企業(yè)外的個人銷售旁路許可證密鑰的其它傳播。如果將所泄漏的密鑰和產(chǎn)品標識符給予其他人,那么它們可用于獲取期望軟件的有效副本。
一般而言,如果發(fā)現(xiàn)了旁路密鑰泄漏類型的攻擊,則可改變旁路密鑰,并可使用舊的密鑰來拒絕對盜版軟件的升級。這一類型的攻擊分解在本領(lǐng)域中當前是已知的。然而,數(shù)據(jù)類型攻擊和二進制類型攻擊更不容易被檢測和克服。
數(shù)據(jù)和二進制類型的攻擊可通過對被盜竊的應(yīng)用程序的源代碼運行測試來檢測。如果測試顯示源代碼與最初由制造商分發(fā)的代碼相同,則所測試的應(yīng)用程序可被認為是可行的。然而,如果應(yīng)用程序代碼不同于制造商分發(fā)的代碼,則代碼可能被改變。代碼的改變可以是合法的,或者改變可以是指示盜版代碼的篡改指示。
不與制造商原始產(chǎn)品相匹配的應(yīng)用軟件代碼可能是從制造商處獲取合法更新的正常過程的結(jié)果。這些更新一般在應(yīng)用程序中被反映為新版本或應(yīng)用到應(yīng)用程序的服務(wù)包更新。由此,對軟件應(yīng)用程序代碼的不同測試可能是必需的,這取決于應(yīng)用程序上所指示的版本或軟件服務(wù)包。諸如循環(huán)冗余碼校驗、校驗和或散列值等測試必須依照應(yīng)用軟件的成熟級別來應(yīng)用。
可執(zhí)行來確定應(yīng)用軟件的完整性的另一類型的測試可以是執(zhí)行軟件應(yīng)用程序中的隱藏代碼。隱藏在應(yīng)用軟件中的代碼在應(yīng)用程序有用性方面可能是休眠的(dormant),但是如果期望完整性測試,則可激活它。另一種基于軟件的反盜竊措施可以是在應(yīng)用軟件中插入各種數(shù)字簽名。數(shù)字簽名的失敗可能是可能被修改來延長對盜竊者的許可證頒發(fā)的應(yīng)用程序代碼的指示。在本發(fā)明的一個方面,應(yīng)用程序軟件上確定其許可證完整性的測試可以在線執(zhí)行。
圖1描述了其中可實施本發(fā)明的各方面的網(wǎng)絡(luò)配置100。在這一配置中,網(wǎng)絡(luò)20將客戶機A、B和C(分別為30、40和50)互連到網(wǎng)絡(luò)服務(wù)器10。盡管僅示出了一個服務(wù)器和三個客戶機,然而圖1的配置僅是一個示例,更多數(shù)量的服務(wù)器,以及更少或更多數(shù)量的客戶機計算機都是可能的。在該網(wǎng)絡(luò)配置中,服務(wù)器10可以被指定為當被請求時向客戶機計算機30、40和50提供軟件更新的服務(wù)器。
在一個較佳的實施例中,客戶機計算機30、40或50較佳地聯(lián)系服務(wù)器10以請求對駐留在客戶機計算機上的軟件應(yīng)用程序的升級。在本發(fā)明的一個方面,服務(wù)器10也能夠提供客戶機軟件應(yīng)用程序完整性測試代碼,它可以被傳輸?shù)娇蛻魴C機器并在那里執(zhí)行。客戶機30、40和50然后可將測試結(jié)果發(fā)送回服務(wù)器10用于評估。評估的結(jié)果可基于客戶機正在運行盜版軟件的可能性來確定是允許客戶機訪問軟件應(yīng)用程序升級,還是拒絕升級請求。
圖2是結(jié)合了本發(fā)明的各方面的示例性方法。在包括至少一個客戶機和一個服務(wù)器的系統(tǒng)中,該方法可由生成并發(fā)送對客戶機軟件應(yīng)用程序的更新的請求的客戶機計算機啟動(步驟210)。服務(wù)器接收對軟件更新的請求,并通過向客戶機計算機發(fā)送測試來響應(yīng)(步驟220)。如此處所討論的,測試被設(shè)計成檢測作為所請求的更新的主體的客戶機軟件應(yīng)用程序是否為合法副本。發(fā)送到客戶機計算機的測試依照所請求的特定軟件更新,以及關(guān)于客戶機計算機上可用的版本或服務(wù)包升級來設(shè)計。由此,在本發(fā)明的一個實施例中,在接收了對軟件升級的請求之后,可在服務(wù)器和客戶機之間作出一系列的查詢,以允許服務(wù)器更充分地確認升級的范圍,并識別客戶機計算機上可用的軟件產(chǎn)品和版本。
一旦服務(wù)器確定了所請求的是軟件應(yīng)用程序更新的哪一類型和版本,服務(wù)器向客戶機計算機發(fā)送對應(yīng)的測試代碼(步驟220)。測試代碼由客戶機計算機接收,然后由其執(zhí)行(步驟230)。執(zhí)行的測試代碼檢查客戶機軟件應(yīng)用程序,并測試其總的完整性。測試可被設(shè)計成實行客戶機軟件的各部分以確定代碼是否被篡改,或確定代碼是否已超出了許可證。改變的代碼可以是盜版的指示,而關(guān)注代碼許可的數(shù)據(jù)(如定時信息)被改變的可能性也可指示非法使用,它也可以是盜版指示。
可執(zhí)行的測試在客戶機計算機上執(zhí)行,使得它可訪問客戶機軟件代碼的所有方面,以試圖發(fā)現(xiàn)主題軟件應(yīng)用程序是否在更新的容許之內(nèi)。本發(fā)明的一方面是,測試代碼可通過客戶機計算機之外的來源提供,如通過服務(wù)器提供,使得任何基于客戶機的代碼無法預(yù)測要運行來驗證客戶機軟件應(yīng)用程序的完整性的測試類型。結(jié)果是修改了客戶機軟件應(yīng)用程序的軟件盜竊者可能無法屏蔽掉他在克服軟件應(yīng)用程序的許可證限制中的所有行動。在客戶機計算機上運行了可執(zhí)行測試之后,完整性測試的結(jié)果被提供給服務(wù)器(步驟240)。服務(wù)器然后可開始處理測試結(jié)果(步驟250)。
作為一個替換的實施例,客戶機可發(fā)送對更新的請求(步驟210),服務(wù)器可接收該請求(步驟221,通過虛線)。服務(wù)器可確定最適當?shù)臏y試來驗證客戶機軟件的完整性。如上所述,在向服務(wù)器作出了升級請求之后,可在服務(wù)器和客戶機之間作出一系列的查詢,以允許服務(wù)器更全面地確認升級范圍并識別客戶機計算機上可用的軟件產(chǎn)品和版本。當服務(wù)器確定了適當?shù)耐暾詼y試之后,服務(wù)器然后可自己執(zhí)行完整性測試(步驟231)。
使用通過步驟231或通過步驟240的途徑,測試結(jié)果的處理(250)可以是廣泛的或相對直接的。廣泛的處理可以是處理CRC、校驗和、散列值、數(shù)字簽名、隱藏的可執(zhí)行碼或其它測試方法,并將它們與標準和容限進行比較,以確定測試是失敗還是通過。對客戶機應(yīng)用軟件執(zhí)行的測試產(chǎn)生失敗或通過的狀態(tài),并將狀態(tài)或數(shù)據(jù)傳遞回服務(wù)器也是可能的。在任何情況下,可在步驟260測試處理的結(jié)果來看是成功還是失敗。
如果結(jié)果指示測試未失敗,并且作為結(jié)果,客戶機軟件應(yīng)用程序被認為是合法的,則服務(wù)器被授權(quán)來提供所請求的客戶機軟件更新(步驟280)。如果測試失敗,則軟件完整性很可能被損壞,并且拒絕所請求的軟件應(yīng)用程序更新(步驟270)。
在一個實施例中,由服務(wù)器提供給客戶機以測試客戶機軟件應(yīng)用程序的完整性的測試可包括向服務(wù)器,如可從華盛頓州雷蒙德市的Microsoft公司購買的Windows更新服務(wù)器發(fā)送時間零點信息以及加密的產(chǎn)品標識(PID)或產(chǎn)品密鑰(Pkey)。如果服務(wù)器對N次以上,如N<100,對同一PID/Pkey組合獲得了不同的時間零點,則可得出結(jié)論,有一個以上機器正在使用同一PID/Pkey。在這些情況下,如上所述,客戶機軟件可被認為是超出許可證的范圍之外操作,并且可拒絕軟件更新。
在另一實施例中,基于軟件的許可證實施可被構(gòu)建到客戶機軟件應(yīng)用程序中??稍谂c客戶機軟件應(yīng)用程序一起發(fā)貨的不同二進制文件中實現(xiàn)對應(yīng)的應(yīng)用編程接口(API)。發(fā)送給客戶機的測試程序可在客戶機計算機上執(zhí)行,并且測試程序可調(diào)用API來獲取關(guān)于特定客戶機軟件應(yīng)用程序的信息,并將該信息發(fā)送給服務(wù)器。相同的測試程序也可計算所選擇的二進制文件的二進制散列,并將它們發(fā)送給更新服務(wù)器。然后將這些散列值與服務(wù)器側(cè)的表中的有效二進制散列值進行比較。如果散列值不匹配,則二進制文件很可能被軟件制造商無意地打補丁或改變。在這一實施例中,可以有對更新服務(wù)器內(nèi)部或外部的機制,只要軟件制造商發(fā)行了合格的軟件更新或服務(wù)包更新,該機制就更新散列表中的條目。
在另一實施例中,諸如XrML許可證文件等有效許可證文件的散列值或?qū)嶋H值可被發(fā)送到更新服務(wù)器。由于有效許可證文件或XrML許可證較不可能被改變,因此可向更新服務(wù)器發(fā)送二進制文件的已更新散列值的較少更新。
在另一實施例中,如果請求了更新,可由更新服務(wù)器探查客戶機軟件應(yīng)用程序本身中的一種自審計(self-auditing)機制,它能夠生成一心跳(heart-beat)序列。更新服務(wù)器可檢測或測試該心跳序列,并且該序列可由更新服務(wù)器確認?;诖_認,可如上所述地提供或拒絕請求的更新。
在另一實施例中,可向更新服務(wù)器安全地發(fā)送實際的旁路許可證密鑰,完整性測試然后可包括將真正的密鑰與客戶機計算機上存在的旁路許可證密鑰進行比較。以此方式,更新服務(wù)器可測試許可證密鑰,并識別使用虛假的旁路許可證密鑰的客戶機計算機。另外,非真實產(chǎn)品密鑰可被檢測,并與真實的產(chǎn)品密鑰相區(qū)分,以識別盜版客戶機軟件。
在本發(fā)明的非網(wǎng)絡(luò)化環(huán)境中,如上所述的服務(wù)器側(cè)認證機制可用作本發(fā)明中的客戶機執(zhí)行的測試,并也可被集成到經(jīng)簽署的二進制文件中。這一二進制文件可以與在CD上發(fā)貨的離線軟件包安裝程序集成。在這一實施例中,客戶機可購買具有軟件更新的CD。該CD上的安裝程序可在升級和/或應(yīng)用新更新之前調(diào)用一認證機制來驗證已安裝在客戶機機器上的客戶機軟件。如果CD提供的測試機制檢測到客戶機計算機具有完整性被損壞的應(yīng)用程序,則拒絕對該應(yīng)用程序的更新。如果測試機制檢測到客戶機軟件應(yīng)用程序是合法的副本,則可提供對該應(yīng)用程序的更新。
示例性計算設(shè)備圖3及以下討論旨在提供其中可實現(xiàn)本發(fā)明的一個合適的計算環(huán)境的簡要綜述。盡管下文描述了通用計算機,然而這只是一個示例,本發(fā)明的實施例可用其它計算設(shè)備來實現(xiàn),如具有網(wǎng)絡(luò)/總線互操作性和交互的客戶機。由此,本發(fā)明的實施例可在其中包含了極少或最少的客戶機資源的網(wǎng)絡(luò)主存服務(wù)的環(huán)境中實現(xiàn),如,其中客戶機設(shè)備僅擔(dān)當?shù)骄W(wǎng)絡(luò)/總線的接口的網(wǎng)絡(luò)化環(huán)境,客戶機設(shè)備如置于設(shè)備中的對象或其它計算設(shè)備和對象。本質(zhì)上,可儲存數(shù)據(jù)或可從其檢索數(shù)據(jù)的任何地方都是合乎需要的、合適的操作環(huán)境。
盡管并非所需,本發(fā)明的實施例也可通過操作系統(tǒng)來實現(xiàn),該操作系統(tǒng)由設(shè)備或?qū)ο蟮拈_發(fā)者使用,和/或包括在應(yīng)用軟件內(nèi)。軟件可以在諸如由如客戶機、工作站、服務(wù)器或其它設(shè)備等一個或多個計算機執(zhí)行的軟件模塊等計算機可執(zhí)行指令的通用上下文中描述。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。通常,如各個實施例中所需要的,程序模塊的功能被組合或分布。此外,本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的各個實施例可以用其它計算機配置來實施。適合使用的其它眾所周知的計算系統(tǒng)、環(huán)境和/或配置包括但不限于,個人計算機(PC)、自動售貨機、服務(wù)器計算機、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費者電子設(shè)備、網(wǎng)絡(luò)PC、電器、燈、環(huán)境控制元件、小型機、大型機等等。本實施例也可在其中任務(wù)由通過通信網(wǎng)絡(luò)/總線或其它數(shù)據(jù)傳輸介質(zhì)連接的遠程處理設(shè)備執(zhí)行的分布式計算環(huán)境中實施。在分布式計算環(huán)境中,程序模塊可以位于包括存儲器存儲設(shè)備的本地和遠程計算機存儲介質(zhì)中,并且客戶機節(jié)點進而可起服務(wù)器節(jié)點的作用。
圖3由此示出了其中可實現(xiàn)本發(fā)明的各個實施例的合適的計算系統(tǒng)環(huán)境的一個示例,盡管如上文所闡明的,計算系統(tǒng)700僅是合適的計算環(huán)境的一個示例,并非暗示對本發(fā)明的使用范圍或功能的局限。也不應(yīng)將計算環(huán)境700解釋為對示例性操作環(huán)境700中示出的任一組件或其組合具有任何依賴或需求。
參考圖3,用于實現(xiàn)本發(fā)明的一個實施例的示例性系統(tǒng)包括計算機系統(tǒng)710形式的通用計算裝置。計算機710的組件可包括,但不限于,處理單元720、系統(tǒng)存儲器730以及將包括系統(tǒng)存儲器的各類系統(tǒng)組件耦合至處理單元720的系統(tǒng)總線721。系統(tǒng)總線721可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲器總線或存儲器控制器、外圍總線以及使用各類總線體系結(jié)構(gòu)的局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標準體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強ISA(EISA)總線、視頻電子技術(shù)標準協(xié)會(VESA)局部總線以及外圍部件互連(PCI)總線(也稱為Mezzanine總線)。
計算機系統(tǒng)710通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算機系統(tǒng)710訪問的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例而非局限,計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于儲存諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括但不限于,隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、閃存或其它存儲器技術(shù)、壓縮盤只讀存儲器(CDROM)、壓縮盤可重寫(CDRW)、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以用來儲存所期望的信息并可由計算機系統(tǒng)710訪問的任一其它介質(zhì)。通信介質(zhì)通常在諸如載波或其它傳輸機制的已調(diào)制數(shù)據(jù)信號中包含計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指以對信號中的信息進行編碼的方式設(shè)置或改變其一個或多個特征的信號。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無線介質(zhì),如聲學(xué)、RF、紅外和其它無線介質(zhì)。上述任一的組合也應(yīng)當包括在計算機可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器730包括以易失性和/或非易失性存儲器形式的計算機存儲介質(zhì),如只讀存儲器(ROM)731和隨機存取存儲器(RAM)732?;据斎?輸出系統(tǒng)733(BIOS)包括如在啟動時幫助在計算機系統(tǒng)710內(nèi)的元件之間傳輸信息的基本例程,通常儲存在ROM 731中。RAM 732通常包含處理單元720立即可訪問或者當前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖3示出了操作系統(tǒng)734、應(yīng)用程序735、其它程序模塊736和程序數(shù)據(jù)737。
計算機系統(tǒng)710也可包括其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)。僅作示例,圖3示出了對不可移動、非易失性磁介質(zhì)進行讀寫的硬盤驅(qū)動器741、對可移動、非易失性磁盤752進行讀寫的磁盤驅(qū)動器751以及對可移動、非易失性光盤756,如CD ROM、CDRW、DVD或其它光介質(zhì)進行讀寫的光盤驅(qū)動器755??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器741通常通過不可移動存儲器接口,如接口740連接到系統(tǒng)總線721,磁盤驅(qū)動器751和光盤驅(qū)動器755通常通過可移動存儲器接口,如接口750連接到系統(tǒng)總線721。
圖3討論并示出的驅(qū)動器及其關(guān)聯(lián)的計算機存儲介質(zhì)為計算機系統(tǒng)710提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。例如,在圖3中,示出硬盤驅(qū)動器741儲存操作系統(tǒng)744、應(yīng)用程序745、其它程序模塊746和程序數(shù)據(jù)747。注意,這些組件可以與操作系統(tǒng)734、應(yīng)用程序735、其它程序模塊736和程序數(shù)據(jù)737相同,也可以與它們不同。這里對操作系統(tǒng)744、應(yīng)用程序745、其它程序模塊746和程序數(shù)據(jù)747給予不同的標號來說明至少它們是不同的副本。用戶可以通過輸入設(shè)備,如鍵盤762和指點設(shè)備761(通常指鼠標、跟蹤球或觸摸板)向計算機系統(tǒng)710輸入命令和信息。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線721的用戶輸入接口760連接至處理單元720,但是也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器791或其它類型的顯示設(shè)備也通過接口,如視頻接口790連接至系統(tǒng)總線721,視頻接口790進而可與視頻存儲器(未示出)通信。除監(jiān)視器791外,計算機系統(tǒng)也可包括其它外圍輸出設(shè)備,如揚聲器797和打印機796,通過輸出外圍接口795連接。
計算機系統(tǒng)710可以在使用到一個或多個遠程計算機,如遠程計算機780的邏輯連接的網(wǎng)絡(luò)化環(huán)境中操作。遠程計算機780可以是個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它公用網(wǎng)絡(luò)節(jié)點,并通常包括許多或所有上述與計算機系統(tǒng)710相關(guān)的元件,盡管在圖3中僅示出了存儲器存儲設(shè)備781。圖3描述的邏輯連接包括局域網(wǎng)(LAN)771和廣域網(wǎng)(WAN)773,這里示出作為示例而非局限。這類網(wǎng)絡(luò)環(huán)境常見于家庭、辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當在LAN網(wǎng)絡(luò)環(huán)境中使用時,計算機系統(tǒng)710通過網(wǎng)絡(luò)接口或適配器770連接至LAN 771。當在WAN網(wǎng)絡(luò)環(huán)境中使用時,計算機系統(tǒng)710可包括調(diào)制解調(diào)器722或其它裝置,用于通過WAN 773,如因特網(wǎng)建立通信。調(diào)制解調(diào)器772可以是內(nèi)置或外置的,通過用戶輸入接口760或其它適當?shù)臋C制連接至系統(tǒng)總線721。在網(wǎng)絡(luò)化環(huán)境中,描述的與計算機系統(tǒng)710相關(guān)的程序模塊或其部分可儲存在遠程存儲器存儲設(shè)備中。作為示例而非局限,圖3示出了遠程應(yīng)用程序785駐留在存儲器設(shè)備781中??梢岳斫猓境龅木W(wǎng)絡(luò)連接是示例性的,也可以使用在計算機之間建立通信鏈路的其它裝置。
鑒于個人計算活動與因特網(wǎng)的交匯,已經(jīng)發(fā)展并且正在發(fā)展各種分布式計算框架。個人和商業(yè)用戶同樣地擁有用于應(yīng)用程序和計算設(shè)備的無縫的互操作和web激活的接口,使得計算活動越來越面向web瀏覽器和網(wǎng)絡(luò)。
例如,可從微軟公司購買的MICROSOFT.NETTM平臺包括服務(wù)器、構(gòu)件服務(wù)如基于web的數(shù)據(jù)存儲、以及可下載設(shè)備軟件。盡管這里的示例性實施例是結(jié)合駐留在計算設(shè)備上的軟件描述的,但也可以通過操作系統(tǒng)、應(yīng)用程序接口(API)或協(xié)處理器、顯示設(shè)備和請求對象的任一個之間的“中間人”對象來實現(xiàn)本發(fā)明的實施例的一個或多個部分,使服務(wù)可以由所有.NETTM的語言和服務(wù),以及在其它分布式計算框架中來完成、支持或訪問。
如上所述,盡管結(jié)合各種計算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)描述了本發(fā)明的示例性實施例,然而其基本概念可應(yīng)用于期望實現(xiàn)用于非法軟件的檢測的技術(shù)的任何計算設(shè)備或系統(tǒng)。由此,結(jié)合本發(fā)明的實施例所描述的方法和系統(tǒng)可應(yīng)用于各種應(yīng)用和設(shè)備。盡管此處選擇了示例性編程語言、名字和示例作為各種選擇的代表,然而這些語言、名字和示例并不旨在局限。本領(lǐng)域的普通技術(shù)人員可以理解,有許多方法來提供實現(xiàn)本發(fā)明的實施例所實現(xiàn)的相同、相似或等效系統(tǒng)和方法的對象代碼。
此處所描述的各種技術(shù)可以結(jié)合硬件、軟件或在適當時用兩者的組合來實現(xiàn)。由此,本發(fā)明的方法和裝置,或其某些方面或部分,可采用包含在諸如軟盤、CD-ROM、硬盤或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(即,指令)的形式,其中,當程序代碼被加載到諸如計算機等機器中并由其執(zhí)行時,該機器變?yōu)橛糜趯嵤┍景l(fā)明的裝置。在可編程計算機上的程序代碼執(zhí)行的情況下,計算裝置一般包括處理器、處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備以及至少一個輸出設(shè)備。例如可通過使用處理API或其類似物來使用本發(fā)明的一個實施例的信號處理服務(wù)的一個或多個程序較佳地以高級過程語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以與計算機通信。然而,如有需要,程序可以用匯編語言或機器語言來實現(xiàn)。在任何情況下,語言可以是已編譯或已解釋語言,并與硬件實現(xiàn)相組合。
盡管結(jié)合各個附圖的較佳實施例描述了本發(fā)明的各方面,然而可以理解,可在不脫離本發(fā)明的情況下,使用其它類似的實施例,或?qū)λ枋龅膶嵤├鞒鲂薷暮吞砑?,以?zhí)行本發(fā)明的相同功能。此外,應(yīng)當強調(diào),尤其是當無線網(wǎng)絡(luò)化設(shè)備的數(shù)量持續(xù)增長的情況下,考慮了各種計算機平臺,包括手持式設(shè)備操作系統(tǒng)和其它應(yīng)用專用操作系統(tǒng)。因此,要求保護的本發(fā)明不限于任一單個實施例,而是相反,本發(fā)明應(yīng)當在依照所述權(quán)利要求書的廣度和范圍下解釋。
權(quán)利要求
1.一種在服務(wù)器處檢測盜版軟件的方法,其特征在于,所述方法包括;接收一客戶機計算機對軟件更新的請求;確定要對所述客戶機計算機中的軟件執(zhí)行的測試;執(zhí)行所述測試;以及如果所述客戶機計算機測試失敗,則對所述客戶機計算機拒絕所述軟件更新,其中,所述測試檢測盜版軟件。
2.如權(quán)利要求1所述的方法,其特征在于,接收軟件更新請求包括所述服務(wù)器通過網(wǎng)絡(luò)接收所述軟件更新請求,其中,所述服務(wù)器主存盜版檢測軟件。
3.如權(quán)利要求1所述的方法,其特征在于,執(zhí)行所述測試的步驟包括在所述客戶機和所述服務(wù)器的一個或多個上執(zhí)行所述測試。
4.如權(quán)利要求1所述的方法,其特征在于,執(zhí)行所述測試的步驟包括將測試從所述服務(wù)器下載到所述客戶機計算機中,所述測試被設(shè)計成執(zhí)行客戶機軟件程序的運行時間完整性核查。
5.如權(quán)利要求4所述的方法,其特征在于,所述運行時間完整性測試包括運行客戶機軟件中存在的可執(zhí)行碼、執(zhí)行循環(huán)冗余碼測試、執(zhí)行散列值測試和驗證數(shù)字簽名的一個或多個。
6.一種計算機服務(wù)器,其特征在于,所述服務(wù)器包括一能夠訪問存儲器的處理器;一軟件組件,所述組件具有執(zhí)行檢測被改變的客戶機軟件的方法的指令,所述方法包括從一客戶機計算機接收對客戶機軟件更新的請求;確定要對所述客戶機計算機中的軟件執(zhí)行的測試;執(zhí)行所述測試;以及確定所述客戶機計算機軟件是否被改變;其中,所述處理器通過執(zhí)行所述軟件組件的指令來執(zhí)行所述方法。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述軟件組件還包括如果所述客戶機計算機測試失敗,則對所述客戶機計算機拒絕所述客戶機軟件更新的方法步驟。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,還包括一用于從所述客戶機計算機接收對軟件更新的請求的網(wǎng)絡(luò)接口。
9.如權(quán)利要求6所述的系統(tǒng),其特征在于,執(zhí)行所述測試的步驟包括在所述客戶機計算機和所述服務(wù)器的一個或多個上執(zhí)行所述測試。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,執(zhí)行所述測試的步驟包括將測試從所述服務(wù)器下載到所述客戶機計算機中,所述測試被設(shè)計成執(zhí)行客戶機軟件程序的運行時間完整性核查。
11.一種具有用于執(zhí)行一方法的計算機可執(zhí)行指令的計算機可讀介質(zhì),其特征在于,所述方法包括從一客戶機計算機接收對軟件更新的請求;確定要對所述客戶機計算機中的軟件執(zhí)行的測試;執(zhí)行所述測試;以及確定所述客戶機計算機軟件是否被改變;以及根據(jù)所述客戶機計算機測試的結(jié)果確定是否準許所述軟件更新。
12.如權(quán)利要求11所述的計算機可讀介質(zhì),其特征在于,所述方法還包括如果所述測試的結(jié)果表明所述軟件被改變,則拒絕所述軟件更新。
13.一種用于檢測盜版軟件的系統(tǒng),其特征在于,所述系統(tǒng)包括用于在服務(wù)器和客戶機之間傳輸消息的網(wǎng)絡(luò);具有對客戶機計算機的軟件更新的服務(wù)器計算機,其中,所述服務(wù)器駐留在所述網(wǎng)絡(luò)上;駐留在所述網(wǎng)絡(luò)上的客戶機計算機,其中,所述客戶機計算機向所述服務(wù)器請求對客戶機軟件更新的更新;以及其中,對所述客戶機軟件執(zhí)行一測試,其中,所述測試結(jié)果確定所述客戶機軟件是否被盜版。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述測試是在所述客戶機計算機和所述服務(wù)器的一個或多個上執(zhí)行的。
15.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述測試是從所述服務(wù)器下載到所述客戶機計算機中的,所述測試被設(shè)計成執(zhí)行客戶機軟件程序的運行時間完整性核查。
全文摘要
一種檢測盜版軟件的方法包括接收客戶機計算機對軟件更新的請求,并向客戶機計算機提供要執(zhí)行的測試。該測試在客戶機計算機上對客戶機軟件應(yīng)用程序執(zhí)行。作為測試發(fā)現(xiàn)客戶機軟件的非法副本的結(jié)果,可對該客戶機計算機拒絕軟件更新。本發(fā)明可以在其中服務(wù)器向客戶機傳輸測試程序以對軟件更新請求執(zhí)行的網(wǎng)絡(luò)環(huán)境中實施。測試執(zhí)行完整性核查,并且如果客戶機軟件被發(fā)現(xiàn)為非法,則拒絕對軟件更新的請求。
文檔編號G06F9/46GK1694031SQ20051005625
公開日2005年11月9日 申請日期2005年3月31日 優(yōu)先權(quán)日2004年4月30日
發(fā)明者C·古恩亞可迪, K·E·哈特萊利德 申請人:微軟公司