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