有效地打補丁的制作方法

            文檔序號:6546100閱讀:205來源:國知局
            專利名稱:有效地打補丁的制作方法
            技術領域
            本發明涉及到升級已安裝的計算機程序的操作領域。
            背景技術
            打補丁是修改已經安裝的程序,包括應用程序、實用程序、操作系統和操作系統部件、設備驅動程序等等的過程。打補丁對于出于各種目的來修改程序是有用的,這些目的包括糾正程序錯誤、減少或消除安全風險或者提高所修改程序使用的邏輯。打補丁一般是由最初提供要打補丁的程序的公司或其它組織發起的。
            安裝的程序主要是由可執行代碼模塊組成的。作為一個例子,許多設計成在來自Washington Redmond的Microsoft Corp.的WINDOWS XP操作系統上執行的程序主要是由叫做“DLL”的可執行代碼模塊組成的。一個打補丁的流行的傳統方法是要在組成要打補丁的安裝程序的可執行代碼模塊中標識出含有希望用補丁來修改的程序代碼的可執行代碼模塊;創建一個新版本的已標識的可執行代碼模塊,在其中已作了需要的修改;并且將新版本的已標識的可執行代碼模塊與安裝程序一起分配給希望應用該補丁的用戶。然后每個用戶確定她/他是否希望應用這個補丁,如果是,執行用新版本的已標識的可執行代碼模塊取代原來版本的已標識的可執行代碼模塊的安裝程序。
            傳統的用于打補丁的方法有很多非常不利的地方。這些不利經常增加了與接收和應用補丁有關的負擔。一些情況下,這種增加的負擔延遲了一些用戶對一些補丁的應用,而且甚至阻止了一些用戶對一些補丁的應用。補丁應用中的這種延遲和阻礙在一些情況下可能對用戶有嚴重的負面效果,對那些設計成減少或消除安全風險的補丁來說尤其如此。
            傳統的用于打補丁的方法的一個缺陷涉及到必須創建多個補丁進行分配以實現對單個程序的單獨修改的常例。一些情況下,要打補丁的程序有幾個不同的特定可執行代碼模塊的“環境(flavor)”,比如程序被設計成可在其上執行的每個操作系統或操作系統版本,和/或程序的每個自然語言版本的不同環境。這里標識的可執行代碼模塊是這樣的一種可執行代碼模塊以上描述的補丁的創建和分配過程必須為已標識的可執行代碼模塊的每個環境而重復。然后用戶必須選擇并應用已標識的可執行代碼模塊的適當環境的補丁。對大量結果補丁進行分類并選擇在每個用戶的計算機系統上適合的一組補丁來應用是非常繁重的,如此之多以至于這種情況有時被叫做“補丁地獄(patch hell)”。一些情況下,管理員必須維持一個標識了安裝在每個目標系統上的一組可執行模塊版本的目錄數據庫,它用于為每個目標系統選擇適當的常規補丁。
            傳統的用于打補丁的方法的另一個缺陷涉及到分配的補丁的較大的尺寸。這對于有以兆比特級大小的可執行代碼模塊來說,并非罕見,這會導致單個補丁有一個可比較的大小,使得它對一些用戶來說難以分配和存儲,或者甚至不可能分配或存儲。這個問題對具有多個環境的補丁來說更要加倍嚴重。進一步說,因為每個常規補丁一般包括一個完整的可替代的可執行模塊,應用常規補丁會產生代碼攪拌(code churn)的問題。
            傳統的打補丁的方法的一個進一步的缺陷涉及到一些用戶在應用補丁到生產計算機系統之前要對其進行測試的需要。一些情況下,在計算機系統上安裝一個補丁可能會有相反的結果,比如補丁中包含的新版本的標識的可執行代碼模塊產生一個新的程序錯誤的情況,或與在與補丁應用相對的計算機上運行的另一個程序之間產生新的、不可預料的相互作用的情況。因此,經常在生產系統上應用一個補丁之前,用戶首先對一個測試系統應用該補丁以估計該補丁應用在生產系統中是否安全,該生產系統的數據和操作的維持是重要的。這種獨立的補丁測試增加了與打補丁有關的負擔。此外,在常規補丁產生問題的情況下——比如應用程序兼容性問題或新的開發弱點——在應用補丁充分長的時間后,這種問題很難追溯到該補丁。
            傳統的用于打補丁的方法的一個附加的缺陷涉及到補丁內包括的安裝程序的運行。經常地,為了取代為執行程序的一部分的可執行代碼模塊,該安裝程序必須首先終止那個程序的執行。同樣地,一些情況下,這種取代在沒有重新啟動計算機系統的情況下不能完成。所有這些步驟會在打補丁的計算機系統的使用中導致實質的中斷。
            傳統的用于打補丁的方法的另一個缺陷包括試圖修補一個可執行模塊,其中已經為那個可執行模塊更早地發布“專用修補”,也叫做“熱修補”給該可執行模塊的適合的用戶子集。這樣的情況下,因為在向根據用戶是否已經應用熱修補的每個用戶來分配取代不同新版本的可執行代碼模塊的常規補丁過程中遇到的困難,通常代之以分配一個取代單個新版本的可執行模塊的簡單的常規補丁,而不考慮用戶是否已經應用熱修補。如果那個新版本包含熱修補,該補丁就向用戶強加上熱修補,而不是接收該熱修補。另一方面,如果那個新版本沒有包含熱修補,它就剝奪了用戶想要接收熱修補的權利。
            傳統的用于打補丁的方法另一個缺陷包括對依靠特定可執行模塊,比如一個特定動態鏈接庫的軟件產品的安裝程序經常通過將該可執行模塊存儲在目標計算機系統的文件系統內的一個非標準位置來“隱藏”那個可執行模塊這一事實。因此,有時候確定特定的目標系統是否包含一個需要打補丁的可執行模塊的副本是困難的或不可能的,并且,同樣,也很難確定它位于目標計算機系統的文件系統內的哪個位置。同樣地,一些軟件產品維持已經由安裝程序安裝的可執行模塊版本的一個“目錄”。軟件產品可以依靠特定的可執行模塊版本的目錄中指示的正確性。常規補丁在沒有更新該目錄而用可執行模塊的新版本取代標識的可執行模塊版本的情況下,這種依靠就會失敗了。
            傳統的用于打補丁的方法的另一個缺陷根源于在要打補丁的可執行模塊被安裝在目標計算機系統中之前的時間應用它們是不可能的這一事實。因此,如果要打補丁的可執行模塊是在接收那個可執行模塊的常規補丁之后才被安裝到目標計算機系統中,該補丁被應用于該可執行模塊是不可能的。
            傳統的用于打補丁的方法的另一個缺陷是它們典型地只能由使用具有自由的修改許可的管理賬戶登錄到目標計算機系統的用戶來應用。為此目的而登錄一個管理賬戶會使該目標計算機系統易受存在于目標計算機系統上尋求修改該目標計算機系統并需要自由的修改許可的病毒的攻擊。
            傳統的用于打補丁的方法的另一個缺陷是常規補丁很難或不可能失效,這需要比如倒轉可執行模塊的取代步驟,或者倒轉一個或多個對系統注冊表的修改的步驟。
            因此,一個克服了以上討論的傳統的打補丁方法的一些或所有缺陷方面的新的打補丁的方法具有重要的實用性。
            附圖簡述

            圖1說明了一個適合的工具程序(facility)可在其中實現的計算系統環境的一個例子。
            圖2是顯示一個典型的參照該工具程序的計算機系統間數據交換的流程圖。
            圖3是顯示由該工具程序為接收并處理新補丁一般執行的步驟的流程圖。
            圖4是顯示由該工具程序使用的典型的樣本補丁表格的數據結構圖表。
            圖5是顯示由該工具程序為更新一個為特定補丁的配置指令而一般執行的步驟的流程圖。
            圖6是顯示由該工具程序為完成一個由補丁指定的參數確認而一般執行的步驟的流程圖。
            具體實施例方式
            提供了一個用于為安裝的計算機程序代碼(“該工具程序”)打補丁的軟件程序。一些實施例中,該工具程序增加了參數測試和對安裝函數的測試結果處理。另一些實施例中,該工具程序為安裝函數增加不同的其他類型的泛函性(functionality),一些情況下是在安裝函數的執行流程中的任意位置。
            一些實施例中,對每個補丁而言,該工具程序向每個要打補丁的計算機系統——即每個“目標計算機系統”分配可以執行測試的一個點的說明、要執行測試的特性和怎樣動作以回應一個或多個不同的測試結果。一些實施例中,該工具程序提供了一組標準的參數確認和可在補丁中被指定的其它測試。例如,補丁可以指定對于一個特定的函數,如果該函數的特定參數沒有一個確定的值,那該函數的調用應該在它實質的執行開始之前會失敗。另一個補丁可以指定對于一個特定的函數,如果特定的參數長度超過指定的最大長度值,那該參數應該在該函數的執行被允許繼續進行之前被截短到指定的最大長度。許多依賴于調用帶有參數值的函數的安全開發,當它們在沒有原有函數代碼的版本內被阻塞時,會導致該函數創建或利用不安全的環境。一些情況下,這種開發可通過使用這種補丁來阻止帶有這種參數值的函數執行而被阻止。一些實施例中,補丁指定了例如從文件中讀取或由用戶輸入的值的測試,而不是對函數參數進行測試。
            一些實施例中,一個自動打補丁代理自動接收每個補丁,確認它,并將它們存儲在補丁表格內用于可能的應用程序。一些實施例中,每個補丁被應用于要打補丁的可執行模塊的任何情況下,當接收到補丁時,該模塊已經被加載在目標計算機系統中上。這里該方法稱作為“熱修補”,并且使得補丁一被接收立刻就有效,并且不要求該工具程序能夠確定要打補丁的可執行模塊存儲在磁盤的哪個地方。一些實施例中,每個接收的補丁應用于要打補丁的可執行模塊的磁盤映像,這樣,當磁盤映像在未來時間被加載時,加載的磁盤映像包括該補丁。這里該方法是指“冷修補”,允許補丁跨越多個會話的是持久的。一些實施例中,該工具程序執行熱修補和冷修補。一些實施例中,每次要打補丁的可執行模塊被操作系統加載者加載時,就將每個補丁應用于要打補丁的可執行模塊。這里該方法是指“加載時間補丁”。一些實施例中,每次要打補丁的函數被調用時,就將每個補丁應用于要打補丁的可執行模塊。這里該方法是指“調用截取補丁”。加載時間補丁和調用截取補丁都(1)不要求該工具程序能夠確定要打補丁的可執行模塊存儲在磁盤的哪個地方,(2)方便了特定補丁的有準備的可逆性,并且(3)不要求對可執行模塊的磁盤映像的修改。
            一些實施例中,該工具程序允許用戶或管理員配置已被應用的補丁的運行。作為例子,這種配置可以包括,對一個特定的已應用的補丁由該補丁指定的測試在執行到達為該補丁指定的點時是否被執行;由該補丁指定的測試結果處理是被執行還是被忽略;和/或是否測試的性能和/或其結果被記錄、顯示在警告消息中等等。這些實施例中,該工具程序允許通過最初使登陸有效并使結果處理無效而在生產計算機系統上測試補丁。這些實施例中,該工具程序進一步允許在補丁結果處理之后,將該補丁記錄在“詳細(verbose)的模式”中來幫助標識該補丁產生問題的情況,比如應用程序兼容性問題或其它IT問題。如果發現補丁產生問題之后,這些實施例也允許該補丁在應用之后迅速失效。該工具程序的一些實施例也允許通過簡單地從接收并存儲在目標計算機系統中的一組補丁中刪除該補丁而迅速失效。
            一些實施例中,該工具程序使用“數據驅動”補丁方法,其中補丁不包含代碼,而包含數據,比如指定了執行測試的點、要執行的測試的特性和怎樣動作作為對一個或多個不同測試結果的響應的一段小的人類可讀的文本或XML文檔。這樣的實施例中,打補丁代理接收數據驅動補丁,并且附加由補丁指定的測試和測試處理。一些實施例中,該工具程序使用“代碼驅動”打補丁方法,其中每個補丁包含附加在要打補丁的可執行模塊上的短程序,該短程序通過調用該工具程序的標準參數測試函數來自行執行測試,并且自行執行測試處理。使用數據驅動補丁或代碼驅動補丁,用單個補丁來處理要打補丁的可執行模塊的所有環境有時候是可能的。
            一些實施例中,該工具程序標記每個補丁來證明(1)該補丁來源于一個批準的源頭,并且(2)該補丁的內容從批準源頭創建補丁開始就未被修改。
            一些實施例中,該工具程序分配每個補丁給每個目標計算機系統,而且目標計算機系統上的打補丁代理基于目標計算機系統的特征自動確定哪個補丁將在目標計算機系統上應用和它們怎樣被應用。這減輕了用戶和管理員的許多傳統的與選擇和應用補丁有關的負擔,以及維持一個正確的、當前的目錄數據庫的負擔。例如,這些特征可以包括哪個版本的要打補丁的可執行模塊被安裝在目標計算機系統上。這些實施例中,該工具程序可以通過分配為特定可執行模塊的熱修補和未熱修補的環境指定了不同處理的補丁、為那個可執行模塊打補丁時消除為特定可執行模塊犧牲熱修補或使得熱修補普遍存在的需要來克服由熱修補所導致的該類型的問題。
            一些實施例中,打補丁代理將每個接收的補丁存儲在目標系統中,而不考慮當該補丁被接收時,要由特定補丁打補丁的可執行模塊是否被安裝在目標系統上。因為在許多情況下,該工具程序應用補丁作為對加載要打補丁的可執行模塊或調用要打補丁的函數的響應,該工具程序可以對在接收補丁到目標系統之后安裝在目標系統上的可執行模塊應用一個補丁。同樣地,補丁可以在要打補丁的可執行模塊卸載和其后的重新安裝中繼續存在。
            一些實施例中,打補丁代理在操作系統服務中實現。這些實施例中,工具程序符合打補丁代理應用補丁所需要的任何許可。這些實施例減少了當常規補丁被應用時通常強加的安全風險,因為它們消除了用戶使用具有很寬修改許可的管理賬戶登錄目標計算機系統的任何要求,上述要求會給目標計算機系統上存在的任何病毒修改目標計算機系統的敏感部分的較大機會。
            這些由工具程序使用的補丁一般比較小,并因此提出了適度的對傳輸和存儲的資源要求。同樣地,因為工具程序使用的補丁易于以少數定義明確的方式來修改打補丁軟件的行為(behavior),故該工具程序幫助減少了代碼攪拌的問題。
            圖1說明了適合的在其中可以實現該工具程序的計算機系統環境100的一個例子。該計算系統環境100只是一個適合的計算環境的例子并沒有任何限制用戶范圍或程序功能性的意圖。對涉及到示例性計算環境100中說明的任一部件或其結合而言,計算環境100被認為與其既無任何依賴性,也非必需。
            該工具程序在大量其它的常用或專用計算系統環境或配置中也是可以操作的。適合使用該工具程序的熟知的計算系統、環境和/或配置的例子包括,但不限于個人計算機、服務器計算機、手提或膝上設備、寫字板設備、多處理器系統、基于微處理器的系統、機頂盒、可編程消費者電子設備、網絡PC、微型機、大型機、包括任何以上系統或設備的分布式計算環境等等。
            該工具程序可在計算機可讀指令的普通上下文范圍,比如由計算機執行的程序模塊中進行描述。一般來說,程序模塊包括基本例程、程序、對象、部件、數據結構等等,它們執行特定的任務或實現特定的抽象數據類型。該工具程序也可以在任務由通過通信網絡鏈接的遠端處理設備執行的分布式計算環境中施行。在分布式環境中,程序模塊可被安置在包括存儲器存儲設備的本地和/或遠程計算機存儲介質。
            關于圖1,一個用于實現該工具程序的示例性系統包括以計算機110的形式的通用計算設備。計算機110的部件可以包括,但不限于處理單元120、系統存儲器130和把包括系統存儲器在內的不同部件耦合到處理單元120的系統總線121。系統總線121可以是許多類型的總線結構,包括存儲器總線或存儲器控制器、外圍總線、和使用多種總線結構的任何一種的局部總線的任何一種。作為例子,而非限制,這種結構包括工業標準結構(ISA)總線、微通道結構(MCA)總線、增強型ISA(EISA)總線、視頻電子標準協會(VESA)局部總線以及外圍組件互聯(PCI)總線,也稱為Mezzanine總線。
            計算機110典型地包括多種計算機可讀的介質。計算機可讀介質可以是由計算機110訪問的任何可用介質并包括易失的和非易失的介質、可移動的和不可移動的介質。作為例子,而非限制,計算機可讀介質可以包括計算機存儲介質和通信介質。計算機存儲介質包括易失的和非易失的介質、可移動的和不可移動的介質,這些介質以用于信息存儲的任何方法或技術,比如計算機可讀指令、數據結構、程序模塊或其它數據來實現。計算機存儲介質包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲技術、CDROM、數字化視頻光盤(DVD)或其它的光盤存儲器、磁性磁帶、磁性錄音帶、磁性磁盤存儲器或其它的磁性存儲器設備,或可用于存儲需要的信息并可由計算機110存取的任何其它介質。通信介質典型地包括計算機可讀指令、數據結構、程序模塊或在一個調制數據信號比如載波或其它傳輸裝置中的其它數據并且包括任何信息傳遞介質。術語“調制數據信號”意思是具有一個或多個它的特征集或以信號中編碼信息的方式變換的信號。作為例子,而非限制,通信介質包括比如有線網絡或直接有線連接的有線介質和比如聲頻、RF、紅外線和其它無線介質。以上的任何組合也應該包括在計算機可讀介質的范圍內。
            系統存儲器130包括以比如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132的易失的和非易失的存儲器形式的計算機存儲介質。基本輸入/輸出系統133(BIOS)典型地存儲在ROM 131內,它包括如啟動時幫助在計算機110內的元件間傳輸信息的基本例程。RAM 132通常包含可由處理單元120即時存取和/或目前在操作的數據和/或程序模塊。作為例子而非限制,圖1說明了操作系統134、應用程序135、其它程序模塊136以及程序數據13。
            計算機110還包括其它可移動/不可移動、易失/非易失計算機存儲介質。僅僅作為例子,圖1顯示了從不可移動的非易失磁性介質讀取或向其中寫入的硬盤驅動器141、從可移動的非易失磁性磁盤152讀取或向其中寫入的磁盤驅動器151、以及用于向諸如CD ROM或其它光學媒介這樣的可移動非易失光學介質156讀寫的光盤驅動器155。其它能用于示例性操作環境的可移動/不可移動、易失/非易失計算機存儲介質包括但不限于磁性盒式磁帶、閃存卡、數字多用途盤、數字視頻磁帶、固態RAM、固態ROM等等。硬盤驅動器141經常通過諸如接口140等不可移動存儲器接口連接到系統總線121,而磁盤驅動器151通過諸如接口150等可移動存儲器接口連接到系統總線121。
            圖1討論并示出的驅動器及其關聯的計算機存儲介質為計算機110提供了計算機可讀指令、數據結構、程序模塊和其它數據的存儲。例如,在圖1中,示出硬盤驅動器141作為儲存操作系統144、應用程序145、其它程序模塊146和程序數據147。注意,這些組件可以與操作系統134、應用程序135、其它程序模塊136和程序數據137相同,也可以與它們不同。這里對操作系統144、應用程序145、其它程序模塊146和程序數據147給予不同的標號來說明至少它們是不同的副本。用戶可以通過輸入設備,如寫字板、電子數字化儀164、麥克風163、鍵盤162和定位設備161(通常指鼠標、跟蹤球或觸摸板)向計算機110輸入命令和信息。其它輸入設備(圖1中未示出)可包括操作桿、游戲手柄、圓盤式衛星天線、掃描儀等。這些和其它輸入設備通常通過耦合至系統總線的用戶輸入接口160連接至處理單元120,但是也可以通過其它接口和總線結構相連,如并行端口、游戲端口或通用串行總線(USB)。監視器191或其它類型的顯示設備也通過接口,如視頻接口190連接至系統總線121。監視器191也可以與觸摸屏面板等集成。注意,監視器和/或觸摸屏面板可以物理連接到結合有計算設備110中的外殼,比如一個平板型的個人計算機。此外,比如計算設備110的計算機也可以包括其他外圍輸出設備,比如,揚聲器195和打印機196,它們通過外圍接口194等進行連接。
            計算機110可能工作在使用一個或多個到諸如遠程計算機180的遠程計算機的邏輯連接的網絡化環境內。遠程計算機180可以是個人計算機、服務器、路由器、網絡PC、對等設備或其他公共網絡節點,并且一般包括與計算機110相關的許多或所有上述元件,雖然圖1中僅說明了存儲器存儲設備181。圖1所述的邏輯連接包括局域網(LAN)171以及廣域網(WAN)173,但也可以包括其他網絡。這種網絡環境常見于辦公室、企業范圍的計算機網絡、內聯網以及因特網。例如,現在的工具程序中,計算機系統110可以包含數據移植于其中的源頭裝置,而遠程計算機180可以包含目的裝置。然而注意到,源頭和目的裝置不需要由網絡或任何其他裝置連接,代之以數據可通過任何能夠由源頭平臺寫入并由目的平臺讀取的任何裝置進行轉移。
            當用于LAN網絡環境時,計算機110通過網絡接口或適配器170連接到局域網LAN 171。當用于WAN網絡環境時,計算機110一般包括調制解調器172或其他裝置,用于在諸如因特網的廣域網173上建立通信。調制解調器172可能是內置或外置的,它通過用戶輸入接口160或其它適合的機制連接到系統總線121。在網絡化環境內,所述與個人計算機110相關的程序模塊或其中的一部分可能存儲在遠程存儲設備內。作為例子,而非限制,圖1說明了將遠程應用程序185駐留在存儲設備181上。應該認識到所示的網絡連接是示例性的,在計算機間建立連接的其他裝置也可以使用。
            盡管圖1顯示了存在于特定計算機系統上以特定方式排列的各種功能性和數據,本領域的技術人員意識到這種功能性和數據可以通過不同排列的計算機系統以不同的其他方式分布。盡管以上述方式配置點計算機系統一般用于支持該工具程序的運行,然而本領域的一個普通技術人員意識到該工具程序可以用不同類型和配置并由不同部件的設備來實現。
            圖2是顯示了參照本工具程序的計算機系統間一個典型的數據交換的數據流程圖。圖2顯示的計算機系統(計算機系統210、220、221、222、230、231和232)一般有顯示的一些或所有部件并且與圖1結合進行討論。在補丁分配服務器上,該工具程序產生一個或多個補丁。這些補丁201從補丁分配服務器發送到一個或多個管理服務器,比如管理服務器220和230。接著,每個管理服務器將補丁運送到一個或多個目標計算機系統,比如目標計算機系統221、222、231和232。一些實施例中(未顯示),補丁分配服務器直接,或通過一個比通過單個管理服務器更為間接的路徑發送補丁到一個或多個目標計算機系統。在目標計算機系統接收到的補丁在目標計算機系統進行處理,下面將作更詳細的描述。管理服務器也可以發送補丁配置命令202到一個或多個目標計算機系統,該系統應用補丁配置命令以重新配置特定補丁的運行。作為下面更為詳細的描述,補丁可以完全失效;如果補丁沒有失效,其運行通知和測試結果處理可以獨立地生效或失效。當運行通知為生效時,通知可以顯示或本地存儲在目標計算機系統上,或可以作為通知203被發送到適當的管理服務器上。
            圖3是顯示該工具程序為了接收和處理新補丁而一般執行的步驟的流程圖。在步驟301,該工具程序接收一個補丁。在步驟301接收的補丁可以是一個數據驅動補丁或是一個代碼驅動補丁。下面的表格1內顯示了一個樣本數據驅動補丁。
            1<Softpatch Patch=″Q382429″>
            2 <AffectedApplication AffectedExe=″sqlservr.exe″>
            3 <AffectedVersion Version=″9.*″>
            4 <AffectedModules Name=″SQLSORT.DLL″>
            5<Version ″8.0.*, 9.*″>
            6 <Function Name=″SsrpEnumCore″Address=″0x0802E76B″7 Param=″2″Paramtype=″LPSTR″>
            8<Filter MaxByteLength=″60″/>
            9<Resolution ActionType=″BOOL″Action=″FALSE″/>
            10 </Function>
            11 </Version>
            12 <Version ″10.*,11.*″>
            13 <Function Name=″SsrpEnumCore″Address=″0x0802D283″14 Param=″2″Paramtype=″LPSTR″>
            15 <Filter MaxByteLength=″128″/>
            16 <Resolution ActionType=″BOOL″Action=″FALSE″/>
            17 </Function>
            18 </Version>
            19 </AffectedModules>
            20 </AffectedVersion>
            21</AffectedApplication>
            2223<Signature Hash=″MD5″Signature=″C509-64AA-9161-8C52-24 9F6D-BF5A-AEF2-ECE1-0038-34D1″/>
            25 </Softpatch>
            表格1行1包含一個該補丁唯一的標識符。行2標識了受該補丁影響的應用程序。行3標識了受該補丁影響的應用程序版本。行4標識了受該補丁影響的可執行模塊。行5標識了兩個版本的受影響的可執行模塊——版本8.0.*和9.*——它們提供了打補丁的方向。行6-10包含為這些兩個版本的可執行模塊打補丁的方向。行6-7標識了要打補丁的函數、它在可執行模塊內的地址、由補丁測試的它的參數和要測試參數的類型。行8指示了在行6-7標識的參數應被測試以確定是否其長度超過60字節。行9指示了如果測試成功,該函數的調用應該失敗。行12標示了兩個更多版本的受影響的可執行模塊——版本10.*和11.*——它們提供了打補丁的方向。行13-17包含為這些兩個版本的可執行模塊打補丁的方向。行13-14標識了要打補丁的函數、它在可執行模塊內的地址、由補丁測試的它的參數和要測試參數的類型。可以看到,在行13-14內為版本10.*和11.*標識的可執行模塊內要打補丁的函數地址不同于在行6-7內為版本8.0.*和9.*標識的的可執行模塊內要打補丁的函數地址。行15指示了在行13-14內標識的參數應被測試以確定是否其長度超過128字節。行16指示了如果測試成功,該函數的調用應該失敗。該補丁可以指定各種結果處理動作類型,包括補丁函數調用失敗、出現異常、終止要打補丁的可執行模塊正被執行的進程、或者糾正違規值(比如通過截短過長的串)。行23-25包含對該補丁的識別標志,該標志標識了補丁的源頭并校驗了從離開源頭開始該補丁未被改變。
            下面的表格2包含一個以上表格1中顯示的補丁的代碼驅動版本。
            1 00411A7E push3Ch2 00411A80 mov eax,dword ptr[str]3 00411A83 pusheax4 00411A84 cailValidateStringLength(411082h)5 00411A89 add esp,86 00411A8C movzx ecx,al7 00411A8F testecx,ecx8 00411A91 je 411A9Ah9 00411A93 jmp foo+2(411AD2h)10 00411A9A xor eax,eax11 00411A9C ret表格2行1-3將用于測試函數的參數推到堆棧上。行4調用測試函數。行5-8將用于測試函數的返回代碼分支。如果測試函數成功,行9跳回開始執行打補丁函數主體部分。如果測試函數失敗,行10-11推動失敗的結果代碼到堆棧上并從打補丁函數返回到要打補丁函數的本色(color)。為了易讀,表格2忽略了顯示在一些代碼驅動補丁內的某些細節,包括用于測試補丁配置標記的當前值的可驗證的標志、指令,和從打補丁函數的代碼的開始重新定位的指令。
            一些實施例中,所有類型的補丁可包含附加信息,包括,為要打補丁的可執行模塊的一個或多個版本中每一個版本的可用于校驗可執行模塊的特定情況是適合的該版本的副本的文件簽名。這種文件簽名可以是,例如,為整個可執行模塊版本的大小或校驗和,或者可能發生在可執行模塊內的特定點,比如在要打補丁的可執行模塊的偏移量處,的代碼。
            在步驟302,如果補丁帶有合法標志被標記,那么該工具程序繼續到步驟303,否則該工具程序繼續到步驟301以接收下一個補丁。在步驟303,該工具程序增加補丁到本地補丁表格。在步驟304,該工具程序使用補丁的初始配置,比如通過發送它到缺省配置。
            圖4是顯示該工具程序使用的一個典型的樣本補丁表格的數據結構圖。補丁表格400包含行,比如行401和402,每個行分為以下列包含從補丁中提取的補丁標識符的補丁標識符列411;包含標識要打補丁的可執行模塊信息,比如其名字的可執行模塊列412;標識了列412內標識的、要應用補丁的所有版本的可執行模塊的可執行模塊版本列413;包含當前配置值的測試性能有效列414,所述當前配置值用于確定打補丁函數被調用時是否每次都執行由補丁指定的測試;包含當前配置值的測試性能通知有效列415,所述當前配置值用于確定補丁測試執行時,是否每次都產生通知;包含當前配置值的測試結果通知有效列416,所述當前配置值用于確定當補丁測試成功時,是否每次都產生通知;包含當前配置值的測試結果處理有效列417,所述當前配置值用于確定當補丁測試失敗時,是否要執行補丁結果處理;和包含到該補丁自身的指針、指定了測試失敗時每次要執行的測試和測試結果處理的補丁列418。一些實施例中,不是如所示包含一個指針,而是該補丁列418直接包括每個補丁。一個特定的補丁表格可包括或指向各種不同類型的補丁,比如所有的代碼驅動的補丁、所有數據驅動的補丁,或者代碼驅動和數據驅動補丁的結合。
            在步驟305,一旦該工具程序已經將接收的補丁增加到補丁表格并且初始化了它的配置,該補丁可由該工具程序自動應用于可執行模塊。在步驟305,該工具程序可以使用許多不同的方法來應用該補丁,包括由參考結合的應用中描述的那些,也包括實時函數調用攔截、和/或(1)已經加載的可執行模塊、(2)可執行模塊的一個或多個磁盤映像、或者(3)由操作系統的加載程序加載的可執行模塊的情況的代碼重寫。步驟305之后,該工具程序繼續到步驟301以接收下一個補丁。
            圖5是顯示該工具程序為了為特定補丁更新配置指令而一般執行的步驟的流程圖。在步驟501,該工具程序為特定補丁接收配置指令,比如從一個管理員那里。一些實施例中,這種配置指令可由使用組方針的管理員產生。在步驟502,該工具程序參照接收的指令升級補丁表格內補丁的配置。步驟502之后,該工具程序繼續到步驟501以接收下一個配置指令。
            圖6是顯示該工具程序為執行由補丁指定的參數變量而一般執行的步驟的流程圖。在步驟601,打補丁函數被調用。在步驟602,如果對影響被調用函數的補丁的測試是可行的,那么該工具程序繼續到步驟603,否則該工具程序繼續到步驟601以處理下一個對打補丁函數的調用。在步驟603,如果對該補丁的測試性能通知可以有效,那么該工具程序繼續到步驟604,否則該工具程序繼續到步驟605。在步驟604,該工具程序產生一個執行測試的通知。步驟604、608和610可以在該測試滿意的目標計算機系統上顯示或存儲一個指示,和/或傳送這種指示到一個遠程計算機系統用于在那里顯示或記錄。
            在步驟605,該工具程序執行由補丁指定的確認測試。一些實施例中,步驟605包括調用由該工具程序為測試所用的一組標準例程的其中一個。在步驟606,如果在步驟605執行的測試令人滿意,那么該工具程序繼續到步驟601,否則該工具程序繼續到步驟607。在步驟607,如果為該補丁的測試結果通知無效,那么該工具程序繼續到步驟608,否則該工具程序繼續到步驟609。在步驟608,該工具程序產生一個測試不令人滿意的通知。在步驟609,如果測試結果處理對于補丁有效,那么該工具程序繼續到步驟610,否則,該工具程序繼續到步驟601。在步驟610,該工具程序執行由補丁指定的測試結果處理。步驟610之后,該工具程序繼續到步驟601。
            本領域的技術人員應該意識到,以上描述的程序可以直接應用或以不同的方式擴展。例如,可以以不同方式在為不同目的的不同類型的可執行模塊的不同位置使用該工具程序來應用各種不同類型的補丁。同樣地,盡管這里描述的補丁是作為包含當值確認測試失敗時來為其指示一個問題的,但該工具程序也可以用當值確認測試成功時來為其指示一個問題的值確認來實現。一些實施例中,每個測試伴隨一個是成功還是失敗指示問題的一個指示。盡管前面的描述作為首選的實施例而參考,然而本發明的范圍僅僅以下面的權利要求和這里敘述的元件來定義。
            權利要求
            1.一種計算系統內用于擴充軟件的方法,包括在目標計算機系統中接收一個擴充規格表以指定(a)要擴充的函數,所指定的函數在計算系統中所執行的軟件中,(b)要測試的函數的參數,(c)應用于所指定參數的測試,和(d)如果所指定的參數不滿足于所指定的測試,就執行對函數狀態的修改;以及當在目標計算機系統上調用所指定的函數時,如果所指定的參數不能滿足指定的測試時,就對所指定函數的狀態進行指定的修改。
            2.如權利要求1所述的方法,其特征在于,由所述擴充規格表所指定的修改阻止了所指定函數的執行。
            3.如權利要求1所述的方法,其特征在于,由所述擴充規格表所指定的修改是在所指定參數改變之后執行所指定的函數。
            4.如權利要求1所述的方法,其特征在于,在所述目標計算機系統中接收多個擴充規格表。
            5.如權利要求4所述的方法,其特征在于,進一步包括在一種數據結構內來維護所有接收到的擴充規格表。
            6.如權利要求1所述的方法,其特征在于,在接收所述擴充規格表后,并不要求用戶干涉以執行對所指定函數狀態的指定修改。
            7.如權利要求1所述的方法,其特征在于,所述擴充規格表通過識別參數測試函數以進行調用來指定將測試應用于所指定的參數,所述參數測試函數的代碼不包含在所述擴充規格表中。
            8.如權利要求1所述的方法,其特征在于,所述擴充規格表通過識別參數測試函數以進行調用來指定將測試應用于所指定的參數,所述參數測試函數在接收所述擴充規格表之前就已安裝。
            9.如權利要求1所述的方法,其特征在于,所述擴充規格表包含代碼。
            10.如權利要求9所述的方法,其特征在于,由所述擴充規格表包含的代碼包括調用參數測試函數的參數,所述參數測試函數的代碼不包含在所述擴充規格表中。
            11.如權利要求1所述的方法,其特征在于,所述擴充規格表包含識別參數測試函數的文本,所述參數測試函數的代碼不包含在所述擴充規格表中。
            12.如權利要求11所述的方法,其特征在于,由擴充規格表含有的文本所識別的參數測試函數的代碼包含在所述擴充規格表中。
            13.如權利要求11所述的方法,其特征在于,由擴充規格表未含有的文本所識別的參數測試函數的代碼不包含在所述擴充規格表中。
            14.如權利要求1所述的方法,其特征在于,進一步包括提供一個用于配置控制所述擴充規格表操作情況的接口,并且僅當該情況為有效狀態時,才對指定函數的狀態進行指定修改。
            15.如權利要求14所述的方法,其特征在于,所提供的接口允許所述擴充規格表的操作被本地配置。
            16.如權利要求14所述的方法,其特征在于,所提供的接口允許所述擴充規格表的操作被遠程配置。
            17.如權利要求14所述的方法,其特征在于,所提供的接口允許所述擴充規格表的操作根據策略被配置。
            18.如權利要求14所述的方法,其特征在于,所指定的測試是在執行所指定函數的任意實際代碼之前被執行。
            19.如權利要求1所述的方法,其特征在于,進一步包括提供一個用于配置與所述擴充規格表相關警告的接口,并且如果所提供的接口用于使警告有效,就在由所述擴充規格表指定的測試每次失敗時產生一個警告。
            20.如權利要求1所述的方法,其特征在于,進一步包括提供一個用于配置與所述擴充規格表相關通知的接口,并且如果所提供的接口用于使通知有效,就在由所述擴充規格表指定的測試每次執行時產生一個通知。
            21.如權利要求20所述的方法,其特征在于,進一步包括將所產生的通知合并到單個已經合并的通知中。
            22.如權利要求1所述的方法,其特征在于,所接收的擴充規格表被標記,該方法進一步包括驗證所述擴充規格表的簽名,并且,僅當對所述擴充規格表的簽名的驗證成功時,才執行對指定函數狀態進行的指定修改。
            23.如權利要求22所述的方法,其特征在于,僅當所述擴充規格表的簽名的簽名人與含有指定函數的軟件的簽名人匹配時,才執行對指定函數的狀態進行的指定修改。
            24.如權利要求1所述的方法,其特征在于,進一步包括響應于檢測到所指定函數已經被調用來執行所指定的測試,而不改變所指定函數的代碼。
            25.如權利要求1所述的方法,其特征在于,進一步包括當調用所指定函數時,改變所指定函數的代碼以執行所指定的測試。
            26.如權利要求25所述的方法,其特征在于,通過在所指定函數的代碼中插入一個到執行所述指定測試的單獨例行程序的跳轉以改變所指定函數的代碼。
            27.如權利要求1所述的方法,其特征在于,在已鑒別的可執行模塊中提供所指定的函數,所述模塊使用加載程序進行加載,而所述方法進一步包括對加載程序進行登記以具有一個例行程序,該程序在響應對所指定函數的每次調用而執行所指定函數之前來執行所指定的測試。
            28.一種允許在計算系統中存在的軟件進行擴充的計算系統,包括含有該軟件的存儲設備;補丁接收程序,在所述計算系統中接收補丁,該補丁指定了(a)一個指針,在該指針處要擴充該軟件,(b)與在指定指針處要測試的函數相關的一個值,(c)應用于所述指定值的測試,以及(d)如果指定的值不能滿足所指定的測試,就執行對軟件狀態的修改;以及打補丁代理,在所指定指針處將代碼注入軟件,這樣,當軟件的執行到達目標計算機系統的所指定指針時,如果指定的值不能滿足所指定的測試,就執行對軟件狀態的所指定修改。
            29.一種計算機可讀介質,其內容引起目標計算系統執行一種為確認所述目標計算系統中可用的軟件添加值的方法,包括在所述計算系統中接收一個擴充規格表,該規格表指定了(a)要添加值確認的函數,(b)在函數執行期間,在目標計算系統中存在的要進行測試的數據,(c)要應用于所指定數據的測試,以及(d)如果指定的數據不能滿足所指定的測試,就執行對函數狀態的所指定的修改;以及當在目標計算機系統上調用所指定的函數時,如果所指定的數據不能滿足所指定的測試,就對所指定函數的狀態進行指定的修改。
            30.如權利要求22所述的計算機可讀介質,其特征在于,所指定測試是一種通常都能滿足的測試,而不需要考慮所指定的數據值。
            31.一種傳送補丁數據結構所生成的數據信號,包括識別要添加值確認的函數的信息;識別在函數執行期間存在的要測試的數據的信息;識別要應用于所指定數據的測試的信息;以及識別如果所指定的數據不能滿足所指定的測試,就對所指定函數的狀態進行修改的信息,這樣,如果在執行指定函數的目標計算機系統上接收到數據信號,該數據信號的內容就能用于當在目標計算機系統上調用所指定函數時,如果所指定的數據不能滿足所指定的測試,就對所指定函數的狀態進行指定的修改。
            32.如權利要求31所述的所生成數據信號,其特征在于,所生成的數據信號在計算機系統之間進行傳送。
            33.如權利要求31所述的所生成數據信號,其特征在于,所生成數據信號在計算機系統之間進行傳送。
            34.一種用于為目標計算系統中可用軟件添加值確認的方法,包括在所述計算系統中接收一個擴充規格表,該規格表指定了(a)要添加值確認的軟件,(b)在所指定軟件中要添加值確認的指針,(c)在所指定軟件執行期間目標計算系統上存在的在所指定指針處要測試的數據,(d)要應用于所指定數據的測試,以及(e)如果指定的數據不能滿足所指定的測試,就執行對軟件狀態的修改;允許用戶配置所接收擴充規格表的操作模式;以及當在目標計算機系統上所指定指針處執行所指定的函數時,以與配置的所接收的擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表。
            35.如權利要求34所述的方法,其特征在于,所述用戶配置用于所述擴充規格表的有效操作模式,并且以與配置的所接收的擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表的步驟包括如果指定的數據不能滿足所指定的測試,就執行對所指定軟件狀態的修改。
            36.如權利要求34所述的方法,其特征在于,所述用戶配置的所述擴充規格表的有效診斷操作模式,并且,其中以與配置的所接收擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表的步驟包括如果指定的數據不能滿足所指定的測試,就執行(1)執行對所指定軟件狀態的指定修改,以及(2)產生指定的數據不能滿足所指定的測試的通知。
            37.如權利要求34所述的方法,其特征在于,所述用戶配置用于所述擴充規格表的詳細有效操作模式,并且,以與配置用于所接收的擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表的步驟包括如果指定的數據不能滿足所指定的測試,就執行對所指定軟件狀態的指定修改,以及產生指定的測試被執行的通知。
            38.如權利要求34所述的方法,其特征在于,所述用戶配置用于所述擴充規格表的詳細診斷操作模式,并且其中,以與配置用于所接收的擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表的步驟包括如果指定的數據不能滿足所指定的測試,就執行(1)執行對所指定軟件狀態的指定修改,以及(2)產生指定的數據不能滿足所指定的測試的通知。產生指定的測試被執行的通知。
            39.如權利要求34所述的方法,其特征在于,所述用戶配置用于所述擴充規格表的無效操作模式,并且其中,以與配置用于所接收的擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表的步驟包括忽略對所指定軟件的狀態進行指定修改,而不考慮所指定的數據是否能滿足所指定的測試。
            40.如權利要求34所述的方法,其特征在于,所述用戶配置用于所述擴充規格表的無效診斷操作模式,并且其中,以與配置用于所接收的擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表的步驟包括忽略對所指定軟件的狀態進行指定修改,而不考慮所指定的數據是否能滿足所指定的測試;如果指定的數據不能滿足所指定的測試,就產生指定的數據不能滿足所指定測試的通知。
            41.如權利要求34所述的方法,其特征在于,所述用戶配置用于所述擴充規格表的無效診斷操作模式,并且其中,以與配置用于所接收的擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表的步驟包括忽略對所指定軟件的狀態進行指定修改,而不考慮所指定的數據是否能滿足所指定的測試;以及產生指定的測試被執行的通知。
            42.如權利要求34所述的方法,其特征在于,所述用戶配置用于所述擴充規格表的無效診斷操作模式,并且其中,以與配置用于所接收的擴充規格表的操作模式相一致的方式來應用所接收的擴充規格表的步驟包括忽略對所指定軟件的狀態進行指定修改,而不考慮所指定的數據是否能滿足所指定的測試;產生指定的測試被執行的通知;如果指定的數據不能滿足所指定的測試,就產生指定的數據不能滿足所指定測試的通知。
            全文摘要
            這里描述了一個用于在目標計算機系統中擴充軟件的工具程序。該工具程序在計算系統內接收擴充規格表。所述擴充規格表指定了(a)要擴充的函數,(b)要測試的函數參數,(c)應用于所指定參數的測試,和(d)如果所指定的參數不滿足于所指定的測試,就執行對函數狀態的修改。當在目標計算機系統上調用所指定的函數時,如果所指定的參數不能滿足所指定的測試,所述工具程序就對所指定函數的狀態進行指定的修改。
            文檔編號G06F11/36GK1696910SQ20051006507
            公開日2005年11月16日 申請日期2005年4月8日 優先權日2004年5月11日
            發明者A·布魯姆菲爾德, G·古蘭, J·加姆斯, S·A·阿爾施巴尼, S·A·菲爾德 申請人:微軟公司
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品