JP2005327275A - 効率的なパッチ当て - Google Patents

効率的なパッチ当て Download PDF

Info

Publication number
JP2005327275A
JP2005327275A JP2005128431A JP2005128431A JP2005327275A JP 2005327275 A JP2005327275 A JP 2005327275A JP 2005128431 A JP2005128431 A JP 2005128431A JP 2005128431 A JP2005128431 A JP 2005128431A JP 2005327275 A JP2005327275 A JP 2005327275A
Authority
JP
Japan
Prior art keywords
patch
distinguished
behavior
programmatic entity
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005128431A
Other languages
English (en)
Other versions
JP5058450B2 (ja
Inventor
Anthony Blumfield
ブラムフィールド アンソニー
Gilad Golan
ゴラン ギラド
Jason Garms
ガームズ ジェーソン
Saud A Alshibani
エー.アルシバニ ソード
Scott A Field
エー.フィールド スコット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005327275A publication Critical patent/JP2005327275A/ja
Application granted granted Critical
Publication of JP5058450B2 publication Critical patent/JP5058450B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】パッチの受け取りおよび適用に関連する負担を増すなどのパッチ当てに対する従来の手法の不利益を克服する。
【解決手段】コンピューティングシステムで、プログラマチックエンティティの挙動を変更する区別されるパッチパッケージを受け取り、その区別されるパッチパッケージから、(1)パッチが適用される区別されるプログラマチックエンティティを識別するパッチ適用情報と、(2)区別されるプログラマチックエンティティの挙動を変更する形を指定するパッチ挙動情報を抽出し、抽出されたパッチ適用情報およびパッチ挙動情報を含む区別されるエントリをパッチテーブルに自動的に追加する。
【選択図】図6

Description

本発明は、インストールされたコンピュータプログラムの動作の更新の分野に関する。
パッチ当てとは、アプリケーションプログラム、ユーティリティプログラム、オペレーティングシステムおよびオペレーティングシステムコンポーネント、装置ドライバなどを含む既にインストールされているプログラムを変更する処理である。パッチ当ては、プログラミングエラーの訂正、セキュリティリスクの減少または除去、または変更されたプログラムによって使用される論理の改善を含む様々な目的のためのプログラムの変更に有用であり得る。パッチ当ては、通常、パッチを当てられるプログラムを最初に供給した会社または他の組織によって開始される。
インストールされたプログラムは、主に、実行可能コードモジュールからなる。一例として、米国ワシントン州レッドモンドのMicrosoft社のWINDOWS(登録商標)XPオペレーティングシステムで実行されるように設計された多くのプログラムが、主に「DLL」と称する実行可能コードモジュールからなる。パッチ当ての1つのよく知られている従来の手法は、パッチをあてられるインストール済みのプログラムを構成する実行コードモジュールの中から、パッチによって変更することが望まれるプログラムコードを含む実行可能コードモジュールを識別し;所望の変更が行われた、識別された実行可能コードモジュールの新しいバージョンを作成し;識別された実行可能コードモジュールの新しいバージョンを、インストーラプログラムと共に、パッチの適用を望む可能性があるユーザに配布することである。各ユーザは、パッチの適用を望むかどうかを判定し、適用を望む場合、インストーラプログラムを実行する。これによって、識別された実行可能コードモジュールのオリジナルバージョンが、識別された実行コードモジュールの新しいバージョンに置換される。
米国特許出願公開第10/307,902号明細書
パッチ当ての従来の手法は、複数の重要な不利益を有する。多くの場合、パッチの受け取りおよび適用に関連する負担を増すという不利益をもたらす。ある場合には、負担の増加が、一部のユーザによる一部のパッチの適用を遅らせ、一部のユーザによる一部のパッチの適用を妨げもする。そのようなパッチ適用の遅延および阻害は、ある場合には、特にセキュリティリスクを減少しまたは除去するために設計されたパッチの場合には、ユーザにとって深刻で否定的な結果をもたらす可能性がある。
パッチ当てに関する従来の手法の1つの不利益は、単一のプログラムに対する単一の変更をもたらすために複数のパッチを作成し、配布しなければならない一般的な状況に関連する。ある場合、パッチをあてられるプログラムは、プログラムがそこで実行されるように設計されたオペレーティングシステムまたはオペレーティングシステムバージョンごとにおよび/またはプログラムの自然言語バージョンごとに異なる「フレイバ(flavor)」など、特定の実行可能コードモジュールの複数の異なるフレイバを有する。識別された実行可能コードモジュールが、そのような実行可能コードモジュールである場合、前述したパッチ作成配布プロセスを、識別された実行可能コードモジュールのフレイバごとに繰り返さなければならない。ユーザは、識別された実行可能コードモジュールの適当なフレイバ用のパッチを選択し、適用しなければならない。結果として生じた多数のパッチをソートし、各ユーザのコンピュータシステムのアプリケーションに正しいパッチ群を選択することは、非常に負担になる可能性がある。この状態は、時折「パッチ地獄」と呼ばれる。ある場合には、管理者は、各対象システムにインストールされた実行可能モジュールバージョン群を識別するインベントリデータベースを維持しなければない。これは、各対象システムに適当な従来のパッチを選択するのに使用される。
パッチ当てに対する従来の手法のもう1つの不利益は、配布されるパッチのサイズが大きいことに関する。実行可能コードモジュールが、メガバイト単位のサイズを有することがめずらしくない。その故、単一のパッチが匹敵するサイズを有し、配布と保管が手に負えなくなり、一部のユーザにとって配布および保管が不可能になる。この問題は、複数のフレイバを有するパッチのために、複合的になる可能性がある。さらに、各従来のパッチに、通常は、置換実行可能モジュール全体が含まれるので、従来のパッチの適用は、コードチャーン(code churn)の問題に寄与する可能性がある。
パッチ当てに対する従来の手法のさらにもう1つの不利益は、一部のユーザが、実動コンピュータシステムに適用する前にパッチをテストする必要に関する。ある場合、コンピュータシステムへのパッチのインストールは、パッチに含まれる識別された実行可能コードモジュールの新しいバージョンが新しいプログラミングエラーを導入する場合、またはそれが適用されるコンピュータシステムで動作する別のプログラムとの新しい予期されない相互作用を引き起こす場合など、悪い結果を有する可能性がある。したがって、多くの場合、そのデータおよび動作の維持が重要である実動システムにパッチを適用する前に、ユーザは、まず、テストシステムにパッチを適用して、そのパッチを実動ステムに適用しても安全であるか否かを評価する。パッチのそのような別々のテストは、パッチ当てに関連する負担を増やす。さらに、パッチが適用されてから十分に後に、従来のパッチが(アプリケーション互換性の問題または新しいエクスプロイト脆弱性など)問題を起こす場合に、その問題をパッチまでさかのぼって追跡することが困難になる可能性がある。
パッチ当てに対する従来の手法のさらなる不利益は、パッチに含まれるインストーラの動作に関する。多くの場合、実行プログラムの一部である実行可能コードモジュールを置換するために、インストーラは、まずそのプログラムの実行を終わらせなければならない。また、ある場合、そのような置換は、コンピュータシステムを再起動しなければ完了することができない。この両ステップは、パッチをあてられるコンピュータシステムの使用にかなりの混乱を引き起こす可能性がある。
パッチ当てに対する従来の手法のもう1つの不利益は、「ホットフィックス」とも称する「プライベートフィックス(private fix)」が、その実行可能モジュールの顧客の正しいサブセットに以前に発行された実行可能モジュールにパッチを当てることに関する。その場合、ユーザがそのホットフィックスを適用したか否かによって各ユーザに依存する実行可能コードモジュールを、異なる新しいバージョンに置換する従来のパッチの配布で出会う問題のために、それに替えて、ユーザがホットフィックスを適用したか否かに無関係に実行可能モジュールの単一の新しいバージョンに置換する単純な従来のパッチの配布が通常である。その新しいバージョンがホットフィックスを実装する場合、そのパッチは、ホットフィックスを受け取ることを意図されていない顧客にホットフィックスを課す。その一方で、新しいバージョンがホットフィックスを実施しない場合、ホットフィックスを受け取ることが意図された顧客にホットフィックスを与えない。
パッチ当てに対する従来の手法のもう1つの不利益は、特定のダイナミックリンクライブラリなど、特定の実行可能モジュールに頼るソフトウェア製品のインストーラが、多くの場合、対象コンピュータシステムのファイルシステムにおいて標準的でない位置にその実行可能モジュールを保管することにより、その実行可能モジュールを「隠す」という事実に関する。したがって、特定の対象システムに、パッチをあてるべき実行可能モジュールのコピーが含まれるか否かを判定し、そうである場合にそれが対象コンピュータシステムのファイルシステムの何処にあるかを判定することが、しばしば困難または不可能である。また、いくつかのソフトウェア製品は、そのインストーラによってインストールされた実行可能モジュールバージョンの「カタログ」を維持する。ソフトウェア製品は、特定の実行可能モジュールのバージョンのカタログ内の表示の正しさに頼る可能性がある。そのような信用は、従来のパッチが、カタログを更新せずに、カタログで識別される実行可能モジュールのバージョンをその実行可能モジュールの新しいバージョンに置換する場合に失われる。
パッチ当てに対する従来の手法のもう1つの不利益は、パッチを当てられる実行可能モジュールが対象コンピュータシステムにインストールされる前に、そのパッチを適用することが不可能であるという事実から生じる。その結果、パッチをあてられる実行可能モジュールが、その実行可能モジュールの従来のパッチが受け取られた後に対象コンピュータシステムにインストールされる場合、そのパッチが実行可能モジュールに適用される可能性は低い。
パッチ当てに対する従来の手法のもう1つの不利益は、そのようなパッチが、通常、対象コンピュータシステムにログインしたユーザによって、自由な変更の許可を有する管理アカウントを使用してのみ適用できることである。この目的で管理アカウントにログインすることは、対象コンピュータシステムの諸態様を変更することを試み、それを行う自由な許可を必要とする対象コンピュータシステムに存在するウィルスに対して、対象コンピュータシステムを脆弱にする可能性がある。
パッチ当てに対する従来の手法のもう1つの不利益は、従来のパッチが、使用不能にすることが困難または不可能である可能性があり、実行可能モジュールの置換を逆転するか、またはシステムレジストリに対する1つまたは複数の変更を逆転することを必要とすることである。
したがって、上で述べたパッチ当てに対する従来の手法の不利益の一部またはすべてを克服する、パッチ当てに対する新しい手法が、高い有用性を有するはずである。
インストールされたコンピュータプログラムコードにパッチをあてるソフトウェア機構(「本機構」)を提供する。ある態様において、本機構は、インストールされた機能にパラメータテストおよびテスト結果ハンドリングを追加する。他の態様では、本機構は、ある場合に、インストールされた機能の実行の流れの任意の位置で、インストールされた機能に様々な他の種類の機能性を追加する。
ある態様において、パッチごとに、本機構は、パッチをあてられる各コンピュータシステム(すなわち、各「対象コンピュータシステム」)に、テストを実行すべき点、実行されるテストの識別、および1つまたは複数の異なるテスト結果に応答して行動する方法の指定を配布する。ある態様において、本機構は、その使用をパッチで指定できるパラメータ検証および他のテストの標準的な集合を提供する。例えば、パッチは、特定の機能について、その機能の特定のパラメータにある値が含まれない場合、その実質的な実行が開始される前に、その機能の呼出しが失敗すべきであることを指定することができる。もう1つのパッチが、特定の機能について、特定のパラメータが指定された最大の長さを超える長さを有する場合、その機能の実行が進行を許可される前に、そのパラメータを指定された最大の長さまでに切り詰めるべきであることを指定することができる。多くのセキュリティエクスプロイトは、一機能のコードのオリジナルバージョンでは阻まれなかったが、その機能が危険な状態を作り、またはこれを利用させるパラメータ値を用いて機能を呼び出させることを当てにする。多くの場合、そのようなエクスプロイトは、そのようなパッチを使用して、機能がそのようなパラメータ値を用いて実行されないようにすることにより防ぐことができる。ある態様において、パッチは、ファイルから読み取られる値またはユーザによって入力される値など、機能パラメータ以外の値のテストを指定する。
ある態様では、自動化されたパッチ当てエージェントが、自動的に各パッチを受け取り、検証し、可能なアプリケーションに関するパッチテーブルに保管する。ある態様において、各パッチは、パッチが受け取られた時に対象コンピュータシステムに既に読み込まれている、パッチを当てられる実行可能モジュールのすべてのインスタンスに適用される。この手法を、本明細書では「ホットパッチ当て」と称し、これによって、パッチが受け取られた直後にパッチを有効にすることが可能になり、パッチを当てられる実行可能モジュールがディスクに保管されているか否かを本機構が判定できる必要はない。ある態様において、各受け取られたパッチは、パッチを当てられる実行可能モジュールのディスクイメージに適用され、その結果、ディスクイメージが将来読み込まれる時に、読み込まれるディスクイメージにパッチが含まれるようになる。この手法を、本明細書では「コールドパッチ当て」と称し、これによって、パッチが、複数のセッションにまたがって持続できるようになる。ある態様において、本機構は、ホットパッチ当てとコールドパッチ当ての両方を実行する。ある態様において、各パッチは、パッチを当てられる実行可能モジュールがオペレーティングシステムのローダによって読み込まれるたびに、パッチを当てられる実行可能モジュールに適用される。この手法を、本明細書では「読み込み時パッチ当て」と称する。ある態様において、各パッチは、パッチを当てられる機能が呼び出されるたびに、パッチをあてられる実行可能モジュールに適用される。この手法を、本明細書では「呼出しインターセプトパッチ当て」と称する。読み込み時パッチ当ておよび呼出しインターセプトパッチ当ての両方が、(1)パッチを当てられる実行可能モジュールがディスクのどこに保管されているかを本機構が判定できることを必要とせず、(2)特定のパッチの即座の可逆性を容易にし、かつ(3)実行可能モジュールのディスクイメージの変更を必要としない。
ある態様において、本機構は、ユーザまたは管理者が適用されるパッチの動作を構成できるようにする。例として、そのような構成に、特定の適用されるパッチに関して:パッチによって指定されたテストを、実行がパッチについて指定された点に達したときに実行するか否か;パッチによって指定されたテスト結果ハンドリングを実行するか、または無視するか;ならびに/あるいはテストの実行および/またはその結果をログ記録し、警告メッセージで表示するか否かなどを含めることができる。これらの態様で、本機構は、まずロギングを使用可能にし、結果ハンドリングを使用不能にすることによって、実動コンピュータシステムでパッチをテストできるようにする。これらの態様で、本機構は、さらに、その結果ハンドリングを使用可能にした後にパッチの動作を「冗長モード」でログ記録できるようにして、パッチが、アプリケーション互換性問題または他のIT問題などの問題を引き起こしている実例を識別するのを支援する。これらの態様は、パッチが問題を起こしていることが発見された場合、適用された後にパッチを素早く使用不能にすることも可能にする。本機構のいくつかの態様は、受け取られ、対象コンピュータシステムに保管されたパッチ群から単純にパッチを削除することによって、パッチを素早く使用不能にすることも可能にする。
ある態様において、本機構は、「データドリブン」パッチ当て手法を使用する。この手法では、パッチに、コードではなく、小さい人間読取り可能なテキストまたはXML文書などのデータが含まれる。このデータは、テストを実行すべき点、実行すべきテストの識別、および1つまたは複数のテスト結果に応答して行動する方法を指定する。そのような態様において、パッチ当てエージェントが、データドリブンパッチを受け取り、パッチによって指定されたテストおよびテストハンドリングを追加する。ある態様において、本機構は、「コードドリブン」パッチ当て手法を使用する。この手法では、各パッチに、パッチをあてられる実行可能モジュールに追加される短いプログラムが含まれる。このプログラム自体は、本機構の標準パラメータテスト機能を呼び出すことによってテストを実行し、テストハンドリングを実行する。データドリブンパッチ当てまたはコードドリブンパッチ当てを使用することによって、時折、パッチを当てられる実行可能モジュールのすべてのフレイバに単一のパッチで対処することが可能になる。
ある態様において、本機構は、各パッチに署名して、(1)パッチが承認されたソースからであること、および(2)パッチが承認されたソースによって作成された時以降、パッチの内容が変更されていないことの両方を実証する。
ある態様において、本機構は、すべてのパッチをすべての対象コンピュータシステムに配布し、対象コンピュータシステムのパッチ当てエージェントが、その対象コンピュータシステムでどのパッチを適用すべきか、および適用する方法を、対象コンピュータシステムの特性に基づいて自動的に判定する。これによって、ユーザおよび管理者が、従来、パッチの選択および適用に関連した多くの負担、および正確な現在のインベントリデータベースの維持の負担から解放される。例えば、この特性に、パッチをあてられる実行可能モジュールのどのバージョンが対象コンピュータシステムにインストールされているかを含めることができる。これらの態様において、本機構は、特定の実行可能モジュールのホットフィックスされたフレイバおよびホットフィックスされていないフレイバの異なる処理を指定するパッチを配布し、特定の実行可能モジュールのホットフィックスを犠牲にすることも、実行可能モジュールにパッチを当てる時にホットフィックスを遍在させることも必要としなくすることによって、通常、ホットフィックスによって引き起こされる類の問題を克服することができる。
ある態様において、パッチ当てエージェントは、特定のパッチによってパッチを当てられる実行可能モジュールが、そのパッチを受け取った時に対象システムにインストールされているか否かに無関係に、受け取られたすべてのパッチを対象システムに保管する。本機構は、多くの場合、パッチを当てられる実行可能モジュールの読み込み、またはパッチを当てられる機能の呼出しに応答してパッチを適用する。そのため、本機構は、パッチが対象システムで受け取られた後に対象システムにインストールされた実行可能モジュールにパッチを適用することができる。また、パッチは、パッチを当てられる実行可能モジュールのアンインストールおよびその後の再インストールを超えて残存することができる。
ある態様において、パッチ当てエージェントは、オペレーティングシステムサービスで実施される。これらの態様で、本機構は、パッチを適用するのに必要なすべての許可をパッチ当てエージェントに与える。これらの態様は、ユーザが広範囲の変更許可を有する管理者アカウントを使用して対象コンピュータシステムにログインする必要を無くし、これによって、対象コンピュータシステムに存在するすべてのウィルスに、対象コンピュータシステムの重要な態様を変更するより大きな機会を与えない。そのため、従来のパッチが適用される時に通常は課せられるセキュリティリスクを減らす。
本機構によって使用されるパッチは、通常、比較的小さく、したがって、伝送および保管に関して適度なリソース要件を課す。また、本機構によって使用されるパッチは、パッチをあてられるソフトウェアの挙動を少数の明確に定義された形で変更するので、本機構は、コードチャーンの問題を減らすことに資する。
図1に、本機構を実施できる適切なコンピューティングシステム環境100の例を示す。コンピューティングシステム環境100は、適切なコンピューティング環境の一例にすぎず、本機構の使用または機能性の範囲に関する制限を提案することを意図されたものではない。コンピューティング環境100を、例示的なオペレーティング環境100に示された構成要素のいずれかまたはその組合せに関する依存性または要件を有するものと解釈すべきでない。
本機構は、多数の他の汎用または特殊目的のコンピューティングシステム環境またはコンピューティングシステム構成と共に動作する。本機構と共に使用するのに適する可能性がある周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成の例に、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド装置、ラップトップ装置、タブレット装置、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、セットトップボックス、プログム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境、および類似物が含まれるが、これに限定されない。
本機構を、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の全般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本機構は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよび/またはリモートのコンピュータ記憶媒体に配置することができる。
図1を参照すると、本機構を実装する例示的なシステムに、コンピュータ110の形の汎用コンピューティング装置が含まれる。コンピュータ110のコンポーネントに、処理装置120、システムメモリ130、およびシステムメモリを含む様々なシステムコンポーネントを処理装置120に結合するシステムバス121が含まれる。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む複数の種類のバス構造のいずれかとすることができる。限定ではなく例として、そのようなアーキテクチャに、ISA(Industry Standard Architecture)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとも称するPCI(Peripheral Component Interconnect)バスが含まれる。
コンピュータ110に、通常は、様々なコンピュータ読取り可能な媒体が含まれる。コンピュータ読取り可能な媒体は、コンピュータ110によってアクセスできるすべての使用可能な媒体とすることができ、揮発性および不揮発性、取外し可能および固定の両方を含む使用可能な媒体を含む。限定ではなく例として、コンピュータ読取り可能な媒体に、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体に、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報を保管する任意の方法またはテクノロジで実施された、揮発性および不揮発性、取外し可能および固定の媒体が含まれる。コンピュータ記憶媒体に、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリテクノロジ、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、または他の磁気記憶装置、あるいは所望の情報の保管に使用でき、コンピュータ110によってアクセスできる他のすべての媒体が含まれるが、これに限定されない。通信媒体によって、通常は、搬送波または他のトランスポート機構などの変調されたデータ信号内のコンピュータ読取り可能な命令、データ構造、プログラムモジュール、または他のデータが実装され、通信媒体には、すべての情報配布媒体が含まれる。用語「変調されたデータ信号」は、信号内で情報をエンコードする形でその特性の1つまたは複数を設定または変更された信号を意味する。限定ではなく例として、通信媒体に、有線ネットワークまたは直接配線接続などの有線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記のいずれの組合せも、コンピュータ読取り可能な媒体の範囲に含まれなければならない。
システムメモリ130に、読取専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132などの揮発性メモリおよび/または不揮発性メモリの形のコンピュータ記憶媒体が含まれる。起動中などにコンピュータ110内の要素の間での情報の転送を助ける基本ルーチンを含む基本入出力システム133(BIOS)が、通常はROM 131に保管される。RAM 132には、通常は、処理装置120から即座にアクセス可能、かつ/または処理装置120によって現在操作中のデータおよび/またはプログラムモジュールが含まれる。限定ではなく例として、図1に、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110に、他の取外し可能/固定の、揮発性/不揮発性のコンピュータ記憶媒体も含めることができる。単に例として、図1に、固定の不揮発性磁気媒体から読み取られ、またはこれに書き込むハードディスクドライブ141、取外し可能不揮発性磁気ディスク152から読み取られ、またはこれに書き込む磁気ディスクドライブ151、CD−ROMまたは他の光媒体などの取外し可能不揮発性光ディスク156から読み取られ、またはこれに書き込む光ディスクドライブ155を示す。例示的なオペレーティング環境で使用できる他の取外し可能/固定の、揮発性/不揮発性のコンピュータ記憶媒体に、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、および類似物が含まれるが、これに限定されない。ハードディスクドライブ141は、通常は、インターフェース140などの固定のメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース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などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般的なネットワークノードとすることができ、通常、上でコンピュータ110に関して説明した要素の多くまたはすべてが含まれるが、図1には、メモリ記憶装置181だけを示した。図示の論理接続に、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173が含まれるが、他のネットワークも含めることができる。そのようなネットワーキング環境は、オフィス、会社規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。例えば、本機構で、コンピュータシステム110に、そこからデータが移行されるソースマシンを含めることができ、リモートコンピュータ180に、宛先マシンを含めることができる。しかし、ソースマシンおよび宛先マシンを、ネットワークまたは他の手段によって接続する必要がなく、その代わりに、データを、ソースプラットフォームによる書き込みと宛先プラットフォームによる読み取りが可能な任意の媒体を介して移行できることに留意されたい。
LANネットワーキング環境で使用される時に、コンピュータ110は、ネットワークインターフェースまたはネットワークアダプタ170を介してLAN 171に接続される。WANネットワーキング環境で使用される時に、コンピュータ110に、通常は、インターネットなどのWAN 173を介する通信を確立する、モデム172または他の手段が含まれる。モデム172は、内蔵または外付けとすることができるが、ユーザ入力インターフェース160または他の適当な手段を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関して図示されたプログラムモジュールまたはその一部を、リモートメモリ記憶装置に保管することができる。限定ではなく例として、図1に、メモリ装置181に常駐するものとしてリモートアプリケーションプログラム185を示す。図示のネットワーク接続が例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用できることを理解されたい。
様々な機能性およびデータが、特定の形で配置された特定のコンピュータシステムにあるものとして図1に示されているが、当業者は、そのような機能性およびデータを、異なる配置のコンピュータシステムにまたがって様々な他の形で分散できることを理解するであろう。前述したように構成されたコンピュータシステムが、通常は本機構の動作をサポートするのに使用されるが、当業者は、本機構を、様々な種類および構成の、様々なコンポーネントを有する装置を使用して実施できることを理解するであろう。
図2に、本機構によるコンピュータシステム間の通常のデータ交換を示すデータフローを示す。図2に示すコンピュータシステム(コンピュータシステム210、220、221、222、230、231、および232)は、通常、図1に示され、図1に関して述べたコンポーネントのいくつかまたはすべてを有する。パッチ配布サーバにおいて、本機構が、1つまたは複数のパッチを生成する。これらのパッチ201は、パッチ配布サーバから、管理サーバ220および230などの1つまたは複数の管理サーバに送信される。各管理サーバは、そのパッチを、対象コンピュータシステム221、222、231、および232などの1つまたは複数の対象コンピュータシステムに転送する。ある実施形態(図示せず)において、パッチ配布サーバは、1つまたは複数の対象コンピュータシステムに直接に、または単一の管理サーバを介するよりも間接的なルートを介して、パッチを送信する。対象コンピュータシステムで受け取られたパッチは、下記で詳細に説明するように、対象コンピュータシステムで処理される。管理サーバは、1つまたは複数の対象コンピュータシステムにパッチ構成コマンド202を送信することができ、対象コンピュータシステムは、そのパッチ構成コマンドを適用して、特定のパッチの動作を再構成する。下記で詳細に述べるように、パッチは、完全に使用不能にすることができ、あるパッチが使用不能にされない場合、その動作の通知およびそのテスト結果ハンドリングのそれぞれを、独立に使用可能または使用不能にすることができる。その動作の通知が使用可能にされるとき、通知は、対象コンピュータシステムでローカルに表示もしくは保管することができ、または、通知203として適当な管理サーバに送信することができる。
図3に、通常、新しいパッチを受け取り、および処理するために本機構によって実行されるステップの流れ図を示す。ステップ301で、本機構は、パッチを受け取る。ステップ301で受け取られたパッチは、データドリブンパッチまたはコードドリブンパッチのいずれかとすることができる。データドリブンパッチのサンプルを、下の表1に示す。
Figure 2005327275
行1に、パッチの一意識別子が含まれる。行2によって、このパッチによって影響されるアプリケーションが識別される。行3によって、このパッチによって影響されるアプリケーションバージョンが識別される。行4によって、このパッチによって影響される実行可能モジュールが識別される。行5によって、パッチ当ての指示が提供される、影響される実行可能モジュールの2つのバージョン(バージョン8.0.および9.)が識別される。行6〜10に、実行可能モジュールのこの2つのバージョンに関するパッチ当て指示が含まれる。行6〜7によって、パッチをあてられる機能、実行可能モジュール内のそのアドレス、パッチによってテストされるパラメータ、およびテストされるパラメータの型が識別される。行8によって、行6〜7で識別されたパラメータに対し、その長さが60バイトを超えるか否かを判定するためにテストを行うべきであることが示される。行9によって、テストが成功の場合にこの機能の呼出しが失敗すべきであることが示される。行12によって、パッチ当て指示が提供される、影響される実行可能モジュールのもう2つのバージョン(バージョン10.および11.)が識別される。行13〜17に、実行可能モジュールのこの2つのバージョンに関するパッチ当て指示が含まれる。行13〜14によって、パッチを当てられる機能、実行可能モジュール内のそのアドレス、パッチによってテストされるパラメータ、およびテストされるパラメータの型が識別される。バージョン10.および11.について行13〜14で識別される実行可能モジュール内のパッチを当てられる機能のアドレスが、バージョン8.0.および9.について行6〜7で識別されたパッチを当てられる機能のアドレスと異なることが分かる。行15によって、行13〜14で識別されたパラメータをテストして、その長さが128バイトを超えないか否かを判定すべきであることが示される。行16によって、テストが成功する場合、この機能の呼出しが失敗すべきであることが示される。パッチは、パッチを当てられる機能の呼出しの失敗、例外の送出、パッチを当てられた実行可能モジュールが実行されているプロセスの終了、または誤った値の訂正(長すぎるストリングの切詰など)を含む様々な結果ハンドリングアクション型を指定することができる。行23〜25に、パッチのソースを識別すると同時に、ソースから出た後にパッチが変更されていないことを検証するパッチの署名が含まれる。
下記の表2に、上記の表1に示すパッチのコードドリブンバージョンが含まれる。
Figure 2005327275
行1〜3で、テスト機能のパラメータをスタックにプッシュする。行4で、テスト機能を呼び出す。行5〜8で、テスト機能の戻りコードに基づいて分岐する。テスト機能が成功の場合に、行9で、ジャンプして、パッチをあてられた機能の本体の実行を開始する。テスト機能が失敗する場合に、行10〜11で、失敗の結果コードをスタックにプッシュし、パッチを当てられた機能からパッチを当てられた機能の呼出し元に戻る。読み易くするため、表2では、検証可能な署名、パッチ構成フラグの現在の値についてテストする命令、およびパッチを当てられた機能のコードの先頭から再配置された命令を含む、一部のコードドリブンパッチに存在する詳細が省略されている。
ある実施形態において、両方の型のパッチは、パッチを当てられる実行可能モジュールの1つまたは複数のバージョンごとに、実行可能モジュールの特定のインスタンスがそのバージョンの正しいコピーであることを検証するのに使用できるファイル署名を含む追加情報を含むことができる。そのようなファイル署名は、例えば、実行可能モジュールバージョン全体のサイズもしくはチェックサム、または、実行可能モジュールがパッチを当てられるオフセットなどの実行可能モジュール内の特定の点にあると期待されるコードとすることができる。
ステップ302で、パッチに有効な署名が署名されている場合、本機構は、ステップ303で継続する。そうでない場合、本機構は、ステップ301で継続して、次のパッチを受け取る。ステップ303で、本機構は、パッチをローカルパッチテーブルに追加する。ステップ304で、本機構は、デフォルト構成に送ることによるなどのように、パッチの初期構成を初期化する。
図4は、本機構によって使用されるものに典型的なサンプルパッチテーブルを示すデータ構造図である。パッチテーブル400に、行401および402などの行が含まれ、これらの行の各々は、パッチから抽出されたパッチ識別子を含むパッチ識別子列411、名前など、パッチを当てられる実行可能モジュールを識別する情報を含む実行可能モジュール列412、パッチが適用される、列412で識別された実行可能モジュールのバージョンのすべてを識別する実行可能モジュールバージョン列413、パッチを当てられる機能が呼び出されるたびに、このパッチによって指定されるテストを実行されるべきか否かの現在の構成値を含むテスト実行可能列414、このパッチのテストが実行されるたびに通知を生成されるべきか否かの現在の構成値を含むテスト実行通知可能列415、このパッチのテストが成功するたびに通知を生成されるべきか否かの現在の構成値を含むテスト結果通知実行可能列416、このパッチのテストが失敗した時にパッチの結果ハンドリングを実施されるべきか否かの現在の構成値を含むテスト結果ハンドリング実行可能列417、ならびにテストおよびテストが失敗するたびに実行されるテスト結果ハンドリングを指定する、パッチ自体へのポインタを含むパッチ列418に分割される。ある実施形態において、図に示すようにパッチへのポインタを含むのではなく、パッチ列418にパッチ自体が直接に含まれる。特定のパッチテーブルは、すべてのコードドリブンパッチ、すべてのデータドリブンパッチ、またはコードドリブンパッチとデータドリブンパッチの組合せなど、様々な型のパッチを含み、またはこれを指すことができる。
ステップ305で、本機構が、受け取ったパッチをパッチテーブルに追加し、その構成を初期化したならば、そのパッチは、本機構による実行可能モジュールへの自動的適用に使用可能である。ステップ305で、本機構は、参照によって組み込まれた本特許明細書に記載のもの、ならびにリアルタイム機能呼出しインターセプション、および/または(1)既に読み込まれた実行可能モジュール、(2)実行可能モジュールの1つまたは複数のディスクイメージ、もしくは(3)オペレーティングシステムのローダによって読み込まれる実行可能モジュールのインスタンスのコード書き換えを含むパッチを適用する様々な手法を使用することができる。ステップ305の後に、本機構は、ステップ301において継続して、次のパッチを受け取る。
図5は、通常、特定のパッチの構成命令を更新するために本機構によって実行されるステップを示す流れ図である。ステップ501で、本機構は、管理者からなど、特定のパッチの構成命令を受け取る。ある実施形態において、そのような構成命令は、グループポリシを使用して管理者が生成することができる。ステップ502で、本機構は、受け取った命令に従って、パッチテーブル内のパッチの構成を更新する。ステップ502の後に、本機構は、ステップ501で継続して、次の構成命令を受け取る。
図6は、通常、パッチによって指定されるパラメータ検証を実行するために本機構によって実行されるステップを示す流れ図である。ステップ601で、パッチを当てられた機能を呼び出す。ステップ602で、呼び出された機能に影響するパッチについてテストが実行可能にされている場合、本機構は、ステップ603で継続し、そうでない場合には、本機構は、ステップ601で継続して、パッチを当てられた機能の次の呼出しを処理する。ステップ603で、テスト実行通知がこのパッチについて実行可能にされている場合に、本機構は、ステップ604で継続し、そうでない場合に、本機構は、ステップ605で継続する。ステップ604で、本機構は、テストが実行されたことの通知を生成する。ステップ604、608、および610に、テストが満足されたことを表示する対象コンピュータシステムでの表示または保管、および/あるいはリモートコンピュータシステムでの表示またはログ記録に関するリモートコンピュータシステムへのそのような表示の送信を含むことができる。
ステップ605で、本機構は、パッチによって指定される検証テストを実行する。ある実施形態において、ステップ605に、本機構によってテストに使用される標準ルーチンのグループの1つを呼び出すことが含まれる。ステップ606で、ステップ605で実行されたテストが満足される場合、本機構は、ステップ601で継続する。そうでない場合、本機構は、ステップ607で継続する。ステップ607で、テスト結果通知がこのパッチについて実行可能にされている場合、本機構は、ステップ608で継続する。そうでない場合、本機構は、ステップ609で継続する。ステップ608において、本機構は、テストが満足されなかったことの通知を生成する。ステップ609で、このパッチについてテスト結果ハンドリングが実行可能にされている場合、本機構は、ステップ610で継続する。そうでない場合、本機構は、ステップ601で継続する。ステップ610において、本機構は、パッチによって指定されるテスト結果ハンドリングを実行する。ステップ610の後に、本機構は、ステップ601で継続する。
当業者は、上記で説明した機構を、様々な形で簡単に適合または拡張できることを理解されたい。例えば、本機構を使用して、様々な異なる種類のパッチを様々な形で様々な目的の様々な型の実行可能モジュールの様々な位置に適用することができる。また、本明細書では、失敗する時に問題を示す値検証テストを含むものとしてパッチを説明したが、本機構は、成功する時に問題を示す値検証テストを使用して実施することもできる。いくつかの実施形態において、各テストに、その成功または失敗が問題を示すか否かの表示が付随する。前述の説明では、好ましい実施形態を参照したが、本発明の範囲は、請求項およびこれに記載された要素によってのみ定義される。
本機構を実施できる適切なコンピューティングシステム環境の例を示す図である。 本機構によるコンピュータシステムの間のデータの通常の交換を示すデータフロー図である。 通常、新しいパッチを受け取り、処理するために本機構によって実行されるステップを示す流れ図である。 本機構によって使用されるものに典型的なサンプルパッチテーブルを示すデータ構造図である。 通常、特定のパッチの構成命令を更新するために本機構によって実行されるステップを示す流れ図である。 通常、パッチによって指定されるパラメータ検証を実行するために本機構によって実行されるステップを示す流れ図である。
符号の説明
141 ハードディスクドライブ
151 磁気ディスクドライブ
155 光ディスクドライブ
181 メモリ記憶装置

Claims (38)

  1. コンピューティングシステムにおける方法であって、
    インストールされたプログラムの挙動を変更するために、区別されるパッチパッケージを前記コンピューティングシステムで受け取るステップと、
    (1)前記パッチが適用される区別されるプログラムの区別される部分を識別するパッチ適用情報、および(2)前記区別されるプログラムの区別される部分の挙動を変更する形を指定するパッチ挙動情報を、前記区別されるパッチパッケージから自動的に抽出するステップと、
    パッチ適用情報およびパッチ挙動情報の前記抽出を含む区別されるエントリを、パッチテーブルに自動的に追加するステップと
    を備えたことを特徴とする方法。
  2. 前記区別されるエントリの内容を用いて、前記区別されるプログラムの区別される部分の挙動を変更することをさらに備えたことを特徴とする請求項1に記載の方法。
  3. 前記区別されるエントリの前記内容は、管理ユーザが前記コンピューティングシステムにログインしていないとき、前記区別されるプログラムの区別される部分の挙動を変更するために用いられることを特徴とする請求項2に記載の方法。
  4. 前記区別されるエントリの内容は、ユーザ許可に頼らずに、前記区別されるプログラムの区別される部分の挙動を変更するために用いられることを特徴とする請求項2に記載の方法。
  5. 前記区別されるエントリの内容は、前記区別されるプログラムが永続的に保管される位置を判定せずに、前記区別されるプログラムの前記区別される部分の挙動を変更するために用いられることを特徴とする請求項2に記載の方法。
  6. 前記区別されるエントリの内容は、前記区別されるプログラムの読み込みに応答して前記区別されるプログラムの前記区別される部分の挙動を変更するために用いられることを特徴とする請求項2に記載の方法。
  7. 前記区別されるエントリの内容は、前記区別されるプログラムの前記区別される部分の実行に応答して前記区別されるプログラムの区別される部分の挙動を変更するために用いられることを特徴とする請求項2に記載の方法。
  8. 前記区別されるプログラムの2つのインスタンスは、読み込まれ、および前記区別されるエントリの内容は、前記区別されるプログラムの両方のインスタンスの区別される部分の挙動を変更するために用いられることを特徴とする請求項2に記載の方法。
  9. 前記パッチ適用情報が抽出されるとき、前記区別されるプログラムが前記コンピューティングシステムに読み込まれているか否かを判定するステップと、
    前記区別されるプログラムが前記コンピューティングシステムに読み込まれている場合、前記抽出されたパッチ適用情報を用いて、前記パッチ挙動情報に従って前記読み込まれた区別されるプログラムの挙動を変更するステップと
    をさらに備えたことを特徴とする請求項1に記載の方法。
  10. 前記パッチテーブルから前記区別されるエントリを削除して、前記区別されるエントリに含まれる前記パッチ挙動情報に従って、前記区別されるプログラムの区別される部分の挙動が変更されないようにすることをさらに備えたことを特徴とする請求項1に記載の方法。
  11. 前記抽出されたパッチ挙動情報は、前記区別されるプログラムの前記区別される部分の前記挙動を変更することを指定して、値検証を実行することを特徴とする請求項1に記載の方法。
  12. 前記抽出されたパッチ挙動情報は、前記区別されるプログラムの区別される部分の挙動を修正することを指定して、パラメータ検証を実行することを特徴とする請求項1に記載の方法。
  13. 前記抽出されたパッチ挙動情報は、前記区別されるプログラムの区別される部分の挙動を変更することを指定して、ファイルから読み取られる値の検証を実行することを特徴とする請求項1に記載の方法。
  14. 前記抽出されたパッチ挙動情報は、前記区別されるプログラムの区別される部分の挙動を変更することを指定して、ユーザによって入力される値の検証を実行することを特徴とする請求項1に記載の方法。
  15. 前記抽出されたパッチ挙動情報は、前記区別されるプログラムの区別される部分の挙動を変更することを指定して、1つまたは複数のネットワークパケットで受け取られる値の検証を実行することを特徴とする請求項1に記載の方法。
  16. 前記抽出されたパッチ挙動情報は、前記区別されるプログラムの区別される部分の挙動を変更することを指定して、区別される検証機能を呼び出すことによってパラメータ検証を実行することを特徴とする請求項1に記載の方法。
  17. 前記区別されるエントリ以外の前記パッチテーブル内のエントリは、前記区別されるプログラムの前記別個の部分の挙動を変更することを指定して、前記区別される検証機能を呼び出すことによってパラメータ検証を実行するパッチ挙動情報も含むことを特徴とする請求項16に記載の方法。
  18. 前記区別される検証機能用のコードを実行して、前記区別されるプログラムの区別される部分の挙動を変更することをさらに備え、前記区別されるコードは、前記区別されるパッチパッケージに含まれないことを特徴とする請求項16に記載の方法。
  19. プログラマチックエンティティの挙動を変更するために区別されるパッチパッケージをコンピューティングシステムで受け取るステップと、
    (1)前記パッチが適用される区別されるプログラマチックエンティティを識別するパッチ適用情報、および(2)前記区別されるプログラマチックエンティティの前記挙動を変更する形を指定するパッチ挙動情報を、前記区別されるパッチパッケージから自動的に抽出するステップと、
    パッチ適用情報およびパッチ挙動情報の前記抽出を含む区別されるエントリを、パッチテーブルに自動的に追加するステップと
    を備えた方法を前記コンピューティングシステムに実行させる内容を有することを特徴とするコンピュータ読み取り可能な媒体。
  20. 前記区別されるプログラマチックエンティティは、複数の挙動を有し、その挙動のうちの正しいサブセットだけの変更を前記パッチ挙動情報は指定し、前記受け取られる区別されるパッチパッケージは、前記パッチ挙動情報が変更を指定しない前記区別されるプログラマチックエンティティの挙動に関する情報を含まないことを特徴とする請求項19に記載のコンピュータ読み取り可能な媒体。
  21. 複数のパッチエントリを含むパッチテーブルデータ構造を集合的に保管する1つまたは複数のコンピュータメモリであって、各パッチエントリは、
    前記パッチが適用される区別されるプログラマチックエンティティの区別される部分を識別するパッチ適用情報と、
    特定のパッチエントリについて、前記パッチエントリの内容が、指定される形で前記区別されるプログラマチックエンティティの区別される部分の挙動を変更するために用いることができるように、前記区別されるプログラマチックエンティティの区別される部分の挙動を変更する形を指定するパッチ挙動情報と
    を備えたことを特徴とするコンピュータメモリ。
  22. 前記パッチ適用情報は、前記プログラマチックエンティティに関連する実行可能モジュールを識別することを特徴とする請求項21に記載のコンピュータメモリ。
  23. 前記パッチ適用情報は、前記識別された実行可能モジュール内の位置を識別することを特徴とする請求項22に記載のコンピュータメモリ。
  24. 前記パッチ適用情報は、前記識別された実行可能モジュール内の前記識別された位置で期待される内容をさらに識別することを特徴とする請求項23に記載のコンピュータメモリ。
  25. 選択されたパッチエントリは、複数のパッチ適用情報インスタンスを含み、各インスタンスは、前記区別されるプログラマチックエンティティの異なるバージョンの区別される部分を識別することを特徴とする請求項21に記載のコンピュータメモリ。
  26. 第1のパッチ適用情報インスタンスは、選択されたホットフィックスが適用されている前記区別されたプログラマチックエンティティのバージョンを識別し、および第2のパッチ適用情報インスタンスは、前記選択されたホットフィックスが適用されていない前記区別されたプログラマチックエンティティのバージョンを識別することを特徴とする請求項25に記載のコンピュータメモリ。
  27. 前記選択されたパッチエントリは、前記選択されたホットフィックスが適用されている前記区別されるプログラマチックエンティティのバージョンを前記選択されたホットフィックスが適用されていない前記区別されるプログラマチックエンティティのバージョンと置換せず、および前記選択されたホットフィックスが適用されていない前記区別されるプログラマチックエンティティのバージョンを前記選択されたホットフィックスが適用されている前記区別されるプログラマチックエンティティのバージョンと置換せずに、(1)前記選択されたホットフィックスが適用されている前記区別されるプログラマチックエンティティのバージョン、(2)前記選択されたホットフィックスが適用されていない前記区別されるプログラマチックエンティティのバージョン、および(3)この両方に適用することができることを特徴とする請求項26に記載のコンピュータメモリ。
  28. 前記選択されたパッチエントリは、前記区別されるプログラマチックエンティティのどのバージョンが対象コンピュータシステム上で実行されるかにかかわらずに、管理者によって前記対象コンピュータシステムに展開することができることを特徴とする請求項24に記載のコンピュータメモリ。
  29. 選択されたパッチエントリの前記パッチ挙動情報は、前記区別されるプログラマチックエンティティの区別される部分の挙動を変更するために使用可能なコードを含むことを特徴とする請求項21に記載のコンピュータメモリ。
  30. 選択されたパッチエントリの前記パッチ挙動情報は、前記区別されるプログラマチックエンティティの区別される部分の挙動を変更するために使用可能なデータを含むことを特徴とする請求項21に記載のコンピュータメモリ。
  31. 選択されたパッチエントリの前記パッチ挙動情報は、前記区別されるプログラマチックエンティティに関連する指定されたパラメータに適用されるパラメータ検証テストを指定することを特徴とする請求項21に記載のコンピュータメモリ。
  32. 前記パッチテーブルデータ構造を保管する前記コンピュータメモリの識別は、構成可能であることを特徴とする請求項21に記載のコンピュータメモリ。
  33. 前記コンピュータメモリは、1つまたは複数の前記パッチエントリが適用されるコンピュータシステムに直接に接続されることを特徴とする請求項21に記載のコンピュータメモリ。
  34. 前記コンピュータメモリは、前記パッチエントリが適用されないコンピュータシステムに直接に接続されることを特徴とする請求項21に記載のコンピュータメモリ。
  35. 受け取ったコードパッチを自動的に実施するコンピューティングシステムであって、
    ヘルパ機能が予めインストールされたライブラリと、
    コードパッチを受け取るパッチ当てエージェントであって、各コードパッチは、実行可能モジュールのグループを対象とし、その上、前記ライブラリ内のヘルパ機能を識別し、受け取られたコードパッチによって対象とされるグループ内の実行可能モジュールが実行されるとき、値検証を実行するためにその実行可能モジュールを含む実行可能モジュールの前記グループを対象とする前記コードパッチによって識別される前記ヘルパ機能を呼び出すパッチ当てエージェントと
    を備えたことを特徴とするコンピューティングシステム。
  36. 前記パッチ当てエージェントは、新しいパラメータ検証機能を識別するコードパッチに関連して前記新しいパラメータ検証機能を呼び出せるように、前記新しいパラメータ検証機能を受け取り、および前記受け取られた新しいパラメータ検証機能を前記ライブラリに自動的に追加するライブラリ管理サブシステムを含むことを特徴とする請求項35に記載のコンピューティングシステム。
  37. ソフトウェアパッチを自動的に適用するコンピューティングシステムにおける方法であって、
    プログラマチックエンティティの挙動を変更するパッチを前記コンピューティングシステムで受け取るステップであって、前記パッチは、(1)前記プログラマチックエンティティの挙動を変更する形を指定し、(2)前記プログラマチックエンティティの複数のバージョンの各々について、(a)前記プログラマチックエンティティのバージョンを識別し、(b)前記指定された形で前記プログラマチックエンティティの挙動を変更するために前記プログラマチックエンティティのバージョン内の位置を指定し、(c)前記プログラマチックエンティティの挙動を変更する前に、前記プログラマチックエンティティのバージョン内の前記指定された位置にあると期待されるコードを識別する受け取るステップと、
    前記パッチによって識別される前記プログラマチックエンティティのバージョンの中の前記プログラマチックエンティティの区別されるバージョンが、前記コンピューティングシステムにインストールされていることを自動的に判定するステップと、
    前記プログラマチックエンティティの区別されるバージョンの指定された前記位置が、前記指定された位置にあると期待される前記識別されたコードを含む場合に限って、前記パッチに従って前記プログラマチックエンティティの区別されるバージョンについて指定された前記位置で前記プログラマチックエンティティの挙動を変更するステップと
    を備えたことを特徴とする方法。
  38. ソフトウェアパッチを自動的に適用する方法をコンピューティングシステムに実行させる内容を有するコンピュータ読み取り可能な媒体であって、
    プログラマチックエンティティの挙動を変更するパッチを前記コンピューティングシステムで保管するステップであって、前記パッチが、(1)前記プログラマチックエンティティの挙動を変更する形を指定し、および(2)前記プログラマチックエンティティ複数のバージョンの各々について、(a)前記プログラマチックエンティティのバージョンを識別し、(b)前記プログラマチックエンティティのバージョン内の位置を指定して、前記指定された形で前記プログラマチックエンティティの挙動を変更し、(c)前記プログラマチックエンティティの挙動を変更する前に、前記プログラマチックエンティティのバージョン内の前記指定された位置にあると期待されるコードを識別する保管するステップと、
    前記パッチによって識別される前記プログラマチックエンティティのバージョンの中の前記プログラマチックエンティティの区別されるバージョンが、前記コンピューティングシステムにインストールされていることを自動的に判定するステップと、
    前記プログラマチックエンティティの区別されるバージョンの指定された前記位置が、前記指定された位置にあると期待される前記識別されたコードを含む場合に限って、前記パッチに従って前記プログラマチックエンティティの区別されるバージョンについて指定された前記位置で前記プログラマチックエンティティの挙動を変更するステップと
    を備えたことを特徴とするコンピュータ読み取り可能な媒体。
JP2005128431A 2004-05-11 2005-04-26 効率的なパッチ当て Expired - Fee Related JP5058450B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US57012404P 2004-05-11 2004-05-11
US60/570,124 2004-05-11
US10/881,810 US7559058B2 (en) 2004-05-11 2004-06-30 Efficient patching
US10/881,810 2004-06-30

Publications (2)

Publication Number Publication Date
JP2005327275A true JP2005327275A (ja) 2005-11-24
JP5058450B2 JP5058450B2 (ja) 2012-10-24

Family

ID=34939455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005128431A Expired - Fee Related JP5058450B2 (ja) 2004-05-11 2005-04-26 効率的なパッチ当て

Country Status (4)

Country Link
US (2) US7559058B2 (ja)
EP (1) EP1596289A1 (ja)
JP (1) JP5058450B2 (ja)
KR (2) KR101150091B1 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890946B2 (en) * 2004-05-11 2011-02-15 Microsoft Corporation Efficient patching
US7559058B2 (en) * 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching
US8539469B2 (en) * 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
US7818781B2 (en) * 2004-10-01 2010-10-19 Microsoft Corporation Behavior blocking access control
US8181219B2 (en) 2004-10-01 2012-05-15 Microsoft Corporation Access authorization having embedded policies
US7685591B2 (en) * 2004-12-20 2010-03-23 Microsoft Corporation Customizing a software application through a patch file
US7937697B2 (en) * 2005-05-19 2011-05-03 International Business Machines Corporation Method, system and computer program for distributing software patches
JP2009509273A (ja) * 2005-09-22 2009-03-05 モカナ・コーポレーション 組み込みパッチの管理
US8484725B1 (en) * 2005-10-26 2013-07-09 Mcafee, Inc. System, method and computer program product for utilizing a threat scanner for performing non-threat-related processing
US8341622B1 (en) * 2005-12-15 2012-12-25 Crimson Corporation Systems and methods for efficiently using network bandwidth to deploy dependencies of a software package
US7779401B2 (en) * 2006-06-26 2010-08-17 Research In Motion Limited Method and system for generating a reverse binary patch for undoing a software update
JP2008009715A (ja) * 2006-06-29 2008-01-17 Hitachi Ltd プログラム配付方法及び計算機システム
US7876902B2 (en) * 2006-08-31 2011-01-25 Microsoft Corporation Distribution of encrypted software update to reduce attack window
US8286238B2 (en) * 2006-09-29 2012-10-09 Intel Corporation Method and apparatus for run-time in-memory patching of code from a service processor
US9213535B1 (en) * 2006-10-31 2015-12-15 Hewlett Packard Enterprise Development Lp Pre-computing computer software patch solutions
JP2008198060A (ja) * 2007-02-15 2008-08-28 Seiko Epson Corp 情報処理装置、パッチコード実装システム、電子機器及びパッチコードの実装方法
US8615751B2 (en) * 2007-02-28 2013-12-24 Oracle International Corporation Seeding product information
US8458670B2 (en) * 2007-09-27 2013-06-04 Symantec Corporation Automatically adding bytecode to a software application to determine network communication information
US20090132999A1 (en) * 2007-11-21 2009-05-21 At&T Corp. Secure and fault-tolerant system and method for testing a software patch
US20090259999A1 (en) * 2008-04-11 2009-10-15 Oracle International Corporation Method and system for applying a patch during application execution
US7876995B2 (en) * 2008-10-29 2011-01-25 Commscope, Inc. Of North Carolina Telecommunications patching systems with obliquely-angled patching modules
US20110321024A1 (en) * 2010-06-28 2011-12-29 Nokia Corporation Method and apparatus for updating an executing application
US9063819B2 (en) * 2011-01-02 2015-06-23 Cisco Technology, Inc. Extensible patch management
US8739151B1 (en) * 2013-03-15 2014-05-27 Genetec Inc. Computer system using in-service software upgrade
US9246935B2 (en) 2013-10-14 2016-01-26 Intuit Inc. Method and system for dynamic and comprehensive vulnerability management
US9501345B1 (en) 2013-12-23 2016-11-22 Intuit Inc. Method and system for creating enriched log data
US9323926B2 (en) 2013-12-30 2016-04-26 Intuit Inc. Method and system for intrusion and extrusion detection
US9325726B2 (en) 2014-02-03 2016-04-26 Intuit Inc. Method and system for virtual asset assisted extrusion and intrusion detection in a cloud computing environment
US20150304343A1 (en) 2014-04-18 2015-10-22 Intuit Inc. Method and system for providing self-monitoring, self-reporting, and self-repairing virtual assets in a cloud computing environment
US10121007B2 (en) 2014-02-21 2018-11-06 Intuit Inc. Method and system for providing a robust and efficient virtual asset vulnerability management and verification service
US10757133B2 (en) 2014-02-21 2020-08-25 Intuit Inc. Method and system for creating and deploying virtual assets
US9866581B2 (en) 2014-06-30 2018-01-09 Intuit Inc. Method and system for secure delivery of information to computing environments
US9298927B2 (en) 2014-02-27 2016-03-29 Intuit Inc. Method and system for providing an efficient vulnerability management and verification service
US9276945B2 (en) 2014-04-07 2016-03-01 Intuit Inc. Method and system for providing security aware applications
US9245117B2 (en) 2014-03-31 2016-01-26 Intuit Inc. Method and system for comparing different versions of a cloud based application in a production environment using segregated backend systems
US9516044B2 (en) 2014-07-31 2016-12-06 Intuit Inc. Method and system for correlating self-reporting virtual asset data with external events to generate an external event identification database
US11294700B2 (en) 2014-04-18 2022-04-05 Intuit Inc. Method and system for enabling self-monitoring virtual assets to correlate external events with characteristic patterns associated with the virtual assets
US10514904B2 (en) 2014-04-24 2019-12-24 Hewlett Packard Enterprise Development Lp Dynamically applying a patch to a computer application
US9374389B2 (en) 2014-04-25 2016-06-21 Intuit Inc. Method and system for ensuring an application conforms with security and regulatory controls prior to deployment
US9900322B2 (en) 2014-04-30 2018-02-20 Intuit Inc. Method and system for providing permissions management
US9330263B2 (en) 2014-05-27 2016-05-03 Intuit Inc. Method and apparatus for automating the building of threat models for the public cloud
US9535688B2 (en) * 2014-07-23 2017-01-03 Verizon Patent And Licensing Inc. Efficient deployment of application revisions and implementation of application rollbacks across multiple application servers
US10102082B2 (en) * 2014-07-31 2018-10-16 Intuit Inc. Method and system for providing automated self-healing virtual assets
US9473481B2 (en) 2014-07-31 2016-10-18 Intuit Inc. Method and system for providing a virtual asset perimeter
CN109828772B (zh) * 2019-02-19 2022-03-11 百度在线网络技术(北京)有限公司 热更新方法、操作系统、终端设备和存储介质
US11442848B1 (en) 2020-06-18 2022-09-13 Appceler8, LLC System and method for automated patch compatibility of applications
US10970064B1 (en) 2020-07-28 2021-04-06 Bank Of America Corporation Dynamically updating a software program to resolve errors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01112427A (ja) * 1987-10-27 1989-05-01 Nec Corp パッチ自動適用システム
JP2003044305A (ja) * 2001-07-26 2003-02-14 Sony Corp 電子装置および修正方法

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155847A (en) * 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
CA2101716A1 (en) 1992-10-29 1994-04-30 Philip S. Kasten Debugging/modifying of software systems
JPH06242990A (ja) * 1993-02-12 1994-09-02 Fujitsu Ltd メモリパッチ装置
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
US5675803A (en) * 1994-01-28 1997-10-07 Sun Microsystems, Inc. Method and apparatus for a fast debugger fix and continue operation
US6438621B1 (en) * 1994-11-14 2002-08-20 Microsoft Corporation In-memory modification of computer programs
US5764992A (en) 1995-06-06 1998-06-09 Apple Computer, Inc. Method and apparatus for automatic software replacement
RU2103727C1 (ru) 1995-10-24 1998-01-27 Владимир Олегович Сафонов Способ преобразования входного кода транслятора в объектный код и устройство для его осуществления
US6161218A (en) * 1996-01-16 2000-12-12 Sun Microsystems Inc. Software patch architecture
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6006034A (en) * 1996-09-05 1999-12-21 Open Software Associates, Ltd. Systems and methods for automatic application version upgrading and maintenance
EP1015966A2 (en) 1996-12-13 2000-07-05 Maves International Software, Inc. Method, system and data structures for computer software application development and execution
US6065046A (en) 1997-07-29 2000-05-16 Catharon Productions, Inc. Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
US6151708A (en) * 1997-12-19 2000-11-21 Microsoft Corporation Determining program update availability via set intersection over a sub-optical pathway
GB2333864B (en) * 1998-01-28 2003-05-07 Ibm Distribution of software updates via a computer network
US6202207B1 (en) * 1998-01-28 2001-03-13 International Business Machines Corporation Method and a mechanism for synchronized updating of interoperating software
DE19810814B4 (de) * 1998-03-12 2004-10-28 Telefonaktiebolaget Lm Ericsson (Publ) Rechnersystem und Zustandskopierverfahren zur skalierbaren Software-Aktualisierung
US6952823B2 (en) 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
US6378127B1 (en) * 1998-09-21 2002-04-23 Microsoft Corporation Software installation and validation using custom actions
US7073172B2 (en) * 1998-09-21 2006-07-04 Microsoft Corporation On demand patching of applications via software implementation installer mechanism
US6370686B1 (en) * 1998-09-21 2002-04-09 Microsoft Corporation Method for categorizing and installing selected software components
US6237144B1 (en) * 1998-09-21 2001-05-22 Microsoft Corporation Use of relational databases for software installation
US6202208B1 (en) * 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6317880B1 (en) 1999-03-03 2001-11-13 Microsoft Corporation Patch source list management
US6427227B1 (en) * 1999-03-03 2002-07-30 Microsoft Corporation System, method, and computer-readable medium for repairing an application program that has been patched
US6434744B1 (en) * 1999-03-03 2002-08-13 Microsoft Corporation System and method for patching an installed application program
US6735766B1 (en) * 1999-03-03 2004-05-11 Microsoft Corporation Method and computer-readable medium for installing an upgrade to an application program
US6137880A (en) * 1999-08-27 2000-10-24 Westell Technologies, Inc. Passive splitter filter for digital subscriber line voice communication for complex impedance terminations
US6363524B1 (en) * 1999-09-10 2002-03-26 Hewlett-Packard Company System and method for assessing the need for installing software patches in a computer system
US6490723B1 (en) * 1999-11-30 2002-12-03 Dell Products L.P. Method and system for installing files in a computing system
JP2001202342A (ja) * 2000-01-24 2001-07-27 Nec Corp プログラム交換制御装置及び業務システム並びにプログラム交換用のプログラム又はデータを記憶した記憶媒体
US6789215B1 (en) * 2000-04-21 2004-09-07 Sprint Communications Company, L.P. System and method for remediating a computer
EP1327191B1 (en) * 2000-09-22 2013-10-23 Lumension Security, Inc. Non-invasive automatic offsite patch fingerprinting and updating system and method
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US20020174422A1 (en) * 2000-09-28 2002-11-21 The Regents Of The University Of California Software distribution system
US6738932B1 (en) * 2000-12-22 2004-05-18 Sun Microsystems, Inc. Method and system for identifying software revisions from memory images
US7082603B2 (en) * 2001-01-03 2006-07-25 Intel Corporation Upgrading peripheral devices
US20020116665A1 (en) * 2001-02-16 2002-08-22 Pickover Clifford A. Method and apparatus for supporting software
US6944856B2 (en) * 2001-05-09 2005-09-13 Sun Microsystems, Inc. Method, system, program, and data structures for applying a patch to a computer system
US6859923B2 (en) * 2001-05-09 2005-02-22 Sun Microsystems, Inc. Method, system, program, and data structures for using a database to apply patches to a computer system
CN1529847A (zh) 2001-07-16 2004-09-15 任宇清 内嵌软件更新系统
US7111285B2 (en) * 2001-07-17 2006-09-19 Liquid Machines, Inc. Method and system for protecting software applications against static and dynamic software piracy techniques
US6954928B2 (en) * 2001-08-08 2005-10-11 Hewlett-Packard Development Company, L.P. Method for selecting a set of patches to update a system of programs
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
GB2391645A (en) 2002-08-06 2004-02-11 Aardwork Software Ltd Updating of software
US7216343B2 (en) 2002-09-20 2007-05-08 International Business Machines Corporation Method and apparatus for automatic updating and testing of software
JP3779665B2 (ja) * 2002-09-25 2006-05-31 富士通株式会社 テスト支援プログラム
US7784044B2 (en) 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
JP2005107803A (ja) * 2003-09-30 2005-04-21 Hitachi Ltd システム更新方法、および、それを実行するための計算機システム
US7461374B1 (en) 2003-12-01 2008-12-02 Cisco Technology, Inc. Dynamic installation and activation of software packages in a distributed networking device
US7559058B2 (en) 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching
US8539469B2 (en) 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
US7890946B2 (en) 2004-05-11 2011-02-15 Microsoft Corporation Efficient patching
US7895592B2 (en) * 2004-11-30 2011-02-22 Oracle International Corporation Patch impact analyzer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01112427A (ja) * 1987-10-27 1989-05-01 Nec Corp パッチ自動適用システム
JP2003044305A (ja) * 2001-07-26 2003-02-14 Sony Corp 電子装置および修正方法

Also Published As

Publication number Publication date
US7559058B2 (en) 2009-07-07
KR101150091B1 (ko) 2012-06-01
KR101176752B1 (ko) 2012-08-23
KR20110111341A (ko) 2011-10-11
KR20060045810A (ko) 2006-05-17
US20050256664A1 (en) 2005-11-17
JP5058450B2 (ja) 2012-10-24
US8156487B2 (en) 2012-04-10
US20100070964A1 (en) 2010-03-18
EP1596289A1 (en) 2005-11-16

Similar Documents

Publication Publication Date Title
JP5058450B2 (ja) 効率的なパッチ当て
JP2005327276A (ja) 効率的なパッチ当て
JP2005327274A (ja) 効率的なパッチ当て
JP4652736B2 (ja) 脆弱性のあるファイルの自動的な検出およびパッチ
US8495615B2 (en) Method, system and computer program for distributing software patches
ZA200503110B (en) Efficient patching
US20060236108A1 (en) Instant process termination tool to recover control of an information handling system
US20050262500A1 (en) System and method for updating information handling system applications at manufacture
US8881291B2 (en) System and method for inhibiting the processing of new code modules by an outdated runtime environment
CA2505280A1 (en) Efficient patching
BRPI0501650B1 (pt) Method for applying a software patch to multiple instances of an executable module and computer readable storage memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120727

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120801

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5058450

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees