(57)【要約】  実行中のプロセス内でコード実行パスをリダイレクトする機構を提供する。１バイトの割り込み命令（例えば、ＩＮＴ３）がコードパスに挿入される。割り込み命令は制御をカーネル・ハンドラに渡し、カーネル・ハンドラは、置換機能を実行した後に戻ってプロセスを続行する。置換機能はカーネル・ハンドラによりアクセス可能なメモリ空間に存在する。リダイレクション機構は、実行中のプロセスが実行されているコンピュータ機器の再起動を必要とすることなく適用することができる。さらに、リダイレクション機構は元のコード内の２バイト以上を上書きすることなく適用することができる。
2009501369.tif 000002
【特許請求の範囲】
【請求項１】
実行中のプロセスにおいてコード実行パスをリダイレクトする方法であって、
前記コード実行パスに命令を挿入するステップと、
カーネル・ハンドラに制御を渡すステップと、
前記カーネル・ハンドラによって呼び出された置換機能を実行するステップと、
前記コード実行パスに戻るステップとを具備する方法。
【請求項２】
前記命令が割り込みである請求項１に記載の方法。
【請求項３】
前記割り込みがＩＮＴ３割り込み命令であり、前記割り込み命令の長さが１バイトである請求項２に記載の方法。
【請求項４】
前記カーネル・ハンドラが、前記割り込み命令からの復帰を前記置換命令へと継続させるための機構を含む請求項２に記載の方法。
【請求項５】
前記コードパス中の元のコードのうち１バイトしか上書きされないように前記命令を挿入するステップをさらに具備する請求項１に記載の方法。
【請求項６】
前記カーネル機能によりアクセス可能なメモリ空間に前記置換機能をロードするステップをさらに具備する請求項１に記載の方法。
【請求項７】
前記実行中のプロセスが実行されているコンピュータ機器の再起動を必要とすることなく前記方法を実行するステップをさらに具備する請求項１に記載の方法。
【請求項８】
割り込みを使用することによりコード実行パスを変更して既存の機能を置き換える方法であって、
前記既存の機能に前記割り込みを挿入するステップと、
カーネル・ハンドラに制御を渡すステップと、
前記カーネル・ハンドラによって呼び出された置換機能を実行するステップと、
前記コード実行パスに戻るステップとを具備する方法。
【請求項９】
前記割り込みがＩＮＴ３割り込み命令であり、前記割り込み命令の長さが１バイトである請求項８に記載の方法。
【請求項１０】
前記カーネル・ハンドラが、前記割り込み命令からの復帰を前記置換機能へと継続させるための機構を含む請求項９に記載の方法。
【請求項１１】
前記コードパス中の元のコードのうち１バイトしか上書きされないように前記割り込みを挿入するステップをさらに具備する請求項８に記載の方法。
【請求項１２】
前記カーネル機能によりアクセス可能なメモリ空間に前記置換機能をロードするステップをさらに具備する請求項８に記載の方法。
【請求項１３】
前記既存の機能を実行しているプロセスが実行されているコンピュータ機器の再起動を必要とすることなく前記方法を実行するステップをさらに具備する請求項８に記載の方法。
【請求項１４】
実行中のプロセスにおいてコード実行パスをリダイレクトするためのコンピュータにより実行可能な命令を有するコンピュータ読み出し可能な媒体であって、前記コンピュータにより実行可能な命令は、
前記コード実行パスに命令を挿入するステップと、
カーネル・ハンドラに制御を渡すステップと、
前記カーネル・ハンドラによって呼び出された置換機能を実行するステップと、
前記コード実行パスに戻るステップとを具備する方法を実行する、コンピュータ読み出し可能な媒体。
【請求項１５】
前記命令が割り込みである請求項１４に記載のコンピュータ読み出し可能な媒体。
【請求項１６】
前記割り込みがＩＮＴ３割り込み命令であり、前記割り込み命令の長さが１バイトである請求項１５に記載のコンピュータ読み出し可能な媒体。
【請求項１７】
前記カーネル・ハンドラが、前記割り込み命令からの復帰を前記置換機能へと継続させるための機構を含む請求項１５に記載のコンピュータ読み出し可能な媒体。
【請求項１８】
前記コードパス中の元のコードのうち１バイトしか上書きされないように前記命令を挿入する命令をさらに具備する請求項１４に記載のコンピュータ読み出し可能な媒体。
【請求項１９】
前記カーネル機能によりアクセス可能なメモリ空間に前記置換機能をロードする命令をさらに具備する請求項１４に記載のコンピュータ読み出し可能な媒体。
【請求項２０】
前記実行中のプロセスが実行されているコンピュータ機器の再起動を必要とすることなく前記方法を実行する命令をさらに具備する請求項１４に記載のコンピュータ読み出し可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータ・ソフトウェアの分野に関する。より詳細には、本発明はメモリ内で実行しているプロセスの更新の方法に関する。
【背景技術】
【０００２】
実行中のモジュールの元のディスク上イメージを変更することなく、又はコンピュータの再起動を要することなく、実行中のプロセスにおいてコード実行パスを変更することが望ましいことがある。これを達成する一つの方法は、「ホットパッチング（Ｈｏｔｐａｔｃｈｉｎｇ）」機構を介することである。ホットパッチングとは、ソフトウェア更新からのコードを実行中のプロセスに自動的に挿入することにより、ユーザがコンピュータを再起動する必要なしにソフトウェア更新のインストールを可能にする、インメモリ（ｉｎ−ｍｅｍｏｒｙ）のパッチング機構である。これは使用中にシステム・ファイルを更新できることを意味する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
例えば、ホットパッチングによれば、脆弱な機能の先頭にＪＭＰ命令を挿入することにより、実行中のプロセスにおいて当該脆弱な機能を迂回することができる。当該機能が呼び出されると、ホットパッチング機構により、プロセス・スペースにロードされている別の新しい機能へジャンプする。このような手法に伴う問題は、挿入されたＪＭＰ命令が、予期しない動作につながるような方法で複数の命令を上書きし得るということである。ホットパッチングの場合においては、脆弱な機能の先頭において、最初の５バイト中に３つのアセンブリ・オペレーション・コード（１バイトのオペレーション・コード、２バイトのオペレーション・コード、２バイトのオペレーション・コード）を含んでいる場合、ＪＭＰ命令の挿入により、その５バイトすべてが置き換えられる。プロセッサが最初のバイトのオペレーション・コードを実行しており、当該挿入が次の２つのオペレーション・コードを変更してしまうと、結果として予期しないプロセッサ動作が生じる。
【課題を解決するための手段】
【０００４】
本発明によれば、実行中のプロセスにおいてコード実行パスをリダイレクトする機構が提供される。１バイトの割り込み命令（例えば、ＩＮＴ３）がコードパスに挿入される。割り込み命令は制御をカーネル・ハンドラに渡し、カーネル・ハンドラは、置換機能の実行後、プロセスの続行に戻る。このリダイレクション機構は、実行中のプロセスが実行されているコンピュータ機器の再起動を必要とすることなく適用可能である。さらに、このリダイレクション機構は、元のコード中の２バイト以上を上書きすることなく適用することができる。
【０００５】
本発明のさらなる特徴及び利点は、添付の図面と共に挙げられた以下の実施形態の詳細な説明から明らかとなろう。
【０００６】
以上の本発明の概要及び以下の好ましい実施形態の詳細な説明は、添付の図面と共に読むことによってよりよく理解される。本発明の内容を説明する目的で、図面においては本発明の例示的な構成が示されている。しかし、本発明はここに開示される具体的な方法及び手段に限定されるものではない。
【発明を実施するための最良の形態】
【０００７】
例示的なコンピュータ環境
図１は、本発明が実施される適切なコンピュータ・システム環境１００の例を示す。コンピュータ・システム環境１００は適切なコンピュータ環境の一例に過ぎず、本発明の使用又は機能の範囲に関して如何なる限定を提案することも意図していない。コンピュータ環境１００は、例示的な動作環境１００に示されている如何なる構成要素の１つ又は組み合わせに関しても従属関係又は必要条件を有するものとして解釈すべきではない。
【０００８】
本発明は、数多くの他の汎用又は特殊用途のコンピュータ・システム環境又はコンピュータ・システム設定において使用することができる。本発明とともに使用するのに適した周知のコンピュータ・システム、コンピュータ環境及び／又はコンピュータ設定の例は、パーソナル・コンピュータ、サーバ・コンピュータ、携帯又はラップトップ機器、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステム又は機器のいずれかを含む分散コンピューティング環境などを含むが、これらに限定されるものではない。
【０００９】
本発明は、コンピュータにより実行されるプログラム・モジュールなど、コンピュータにより実行可能な命令についての一般的な状況において説明される。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造など、特定のタスクを実行したり特定の抽象データ型を実行したりするものを含む。本発明は、通信ネットワーク又はその他のデータ伝送媒体を介してリンクされたリモート処理デバイスによりタスクが実行されるような分散コンピューティング環境においても実施することができる。分散コンピューティング環境において、プログラム・モジュール及びその他のデータは、記憶装置デバイスを含むローカルのコンピュータ記憶媒体及びリモート・コンピュータ記憶媒体の両方に配置することができる。
【００１０】
図１を参照すると、本発明を実施する例示的なシステムは、コンピュータ１１０の形式の汎用コンピュータ・デバイスを含む。コンピュータ１１０の構成要素は、プロセッシング・ユニット１２０、システム・メモリ１３０、及びシステム・メモリを含む様々なシステム構成要素をプロセッシング・ユニット１２０に接続するシステム・バス１２１を含むが、これらに限定されるものではない。システム・バス１２１は、様々なバス構成のいずれかを使用する、メモリ・バス又はメモリ・コントローラ、周辺機器用バス及びローカル・バスを含む幾つかの種類のバスのいずれかであってもよい。限定ではなく例示の目的で、このような構成は、業界標準アーキテクチャ（ＩＳＡ）・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）・バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクス規格制定委員会（ＶＥＳＡ）ローカル・バス、周辺装置相互接続（ＰＣＩ）バス（メザニン・バスとしても知られる）、ＰＣＩエクスプレス及びシステム管理バス（Ｓｙｓｔｅｍｓ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ、ＳＭＢｕｓ）を含む。
【００１１】
コンピュータ１１０は、通常、様々なコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０によりアクセスできる如何なる入手可能な媒体であってもよく、揮発性、不揮発性の両方の媒体、取り外し可能、取り外し不可能の両方の媒体を含む。限定ではなく例示の目的で、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体及び通信媒体を具備する。コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール又はその他のデータなどの情報の記憶のための方法や技術において実装される、揮発性、不揮発性の媒体、取り外し可能、取り外し不可能な媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又はその他の記憶技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又はその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又はその他の磁気記憶装置、又は所望の情報を格納するために使用できコンピュータ１１０によりアクセス可能な他の媒体を含むが、これらに限定されるものではない。通信媒体は、通常、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール又はキャリア波又はその他の伝送機構などの変調されたデータ信号中のその他のデータを統合し、如何なる情報伝達媒体をも含む。「変調されたデータ信号」なる語は、１つ又は複数の特性の組を有するか、又は当該信号中の情報を符号化するような方法で変更された信号を意味する。限定ではなく例示の目的で、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体、及び、音響、ＲＦ、赤外及びその他の無線媒体などの無線媒体を含む。上記のもののいずれかの組み合わせがコンピュータ読み取り可能媒体の範囲に含まれるべきである。
【００１２】
システム・メモリ１３０は、ＲＯＭ１３１及びＲＡＭ１３２などの揮発性及び／又は不揮発性メモリの形式のコンピュータ記憶媒体を含む。基本入出力システム（ＢＩＯＳ）１３３は、起動中などにコンピュータ１１０内の要素間で情報の転送をするための基本ルーチンを含み、通常はＲＯＭ１３１内に格納される。ＲＡＭ１３２は、通常、プロセッシング・ユニット１２０に即座にアクセス可能な及び／又はプロセッシング・ユニット１２０により現在動作されているデータ及び／又はプログラム・モジュールを含む。限定ではなく例示の目的で、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６及びプログラム・データ１３７を図示している。
【００１３】
コンピュータ１１０は、その他の取り外し可能／取り外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体を含んでもよい。例示のみの目的で、図１において、取り外し不可能な不揮発性の磁気媒体からの読み出し及び当該磁気媒体への書き込みを行うハードディスク・ドライブ１４１、取り外し可能な不揮発性の磁気ディスク１５２からの読み出し及び当該磁気ディスクへの書き込みを行う磁気ディスク・ドライブ１５１、ＣＤ−ＲＯＭ又は他の光媒体などの取り外し可能な不揮発性の光ディスク１５６からの読み出し及び当該光ディスクへの書き込みを行う光ディスク・ドライブ１５５を図示している。例示的な動作環境において使用可能なその他の取り外し可能／取り外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体は、磁気テープカセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭなどを含むが、これらに限定されるものではない。ハードディスク・ドライブ１４１は、通常、インターフェース１４０などの取り外し不可能なメモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライブ１５１は及び光ディスク・ドライブ１５５は、通常、インターフェース１５０などの取り外し可能なインターフェースによりシステム・バス１２１に接続される。
【００１４】
上述した、図１に図示されるドライブ及び関連するコンピュータ記憶媒体により、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール及びその他のコンピュータ１１０のためのデータが記憶される。例えば、図１において、ハードディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６及びプログラム・データ１４７を格納するように図示されている。これらコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６及びプログラム・データ１３７と同一であってもよいし、異なっていてもよいことに留意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６及びプログラム・データ１４７は、ここでは、少なくともこれらが異なるコピーであることを示すために異なる番号を与えられている。ユーザは、キーボード１６２及び一般にマウス、トラックボールもしくはタッチパッドと呼ばれるポインティング・デバイス１６１を介して、コマンド及び情報をコンピュータ１１０に入力することができる。その他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナなどが含まれる。これら及びその他の入力デバイスは、大抵の場合、システム・バスに接続されたユーザ入力インターフェース１６０を介してプロセッシング・ユニット１２０に接続される。しかし、パラレル・ポート、ゲーム・ポート又はユニバーサル・シリアル・バス（ＵＳＢ）などのその他のインターフェース及びバス構造によって接続してもよい。モニタ１９１又はその他の種類の表示装置もまた、ビデオ・インターフェース１９０などのインターフェースを介してシステム・バス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１９７及びプリンタ１９６などのその他の周辺出力装置を含んでもよく、これらは周辺出力インターフェース１９５を介して接続してもよい。
【００１５】
コンピュータ１１０は、リモート・コンピュータ１８０などの１つ又は複数のリモート・コンピュータへの論理接続を使用したネットワーク化された環境において動作してもよい。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス（ｐｅｅｒ  ｄｅｖｉｃｅ）又はその他の一般的なネットワーク・ノードであってもよく、図１においてはメモリ記憶装置１８１のみが図示されているが、リモート・コンピュータ１８０は、通常、コンピュータ１１０に関連して上述した構成要素の多く又はすべてを含む。図示される論理接続はローカルエリア・ネットワーク（ＬＡＮ）１７１及び広域ネットワーク（ＷＡＮ）を含むが、その他のネットワークを含んでもよい。このようなネットワーク環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラネット及びインターネットにおいて一般的なものである。
【００１６】
ＬＡＮネットワーク環境において使用される場合、コンピュータ１１０はネットワーク・インターフェース又はアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境において使用される場合、コンピュータ１１０は、通常、インターネットなどのＷＡＮ１７３を介した通信を確立するためのモデム１７２又はその他の手段を含む。モデム１７２は内蔵型であっても外付け型であってもよく、ユーザ入力インターフェース１６０又はその他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク化された環境において、コンピュータ１１０又はその一部に関連して図示されるプログラム・モジュールは、リモートメモリ記憶装置に格納されてもよい。限定ではなく例示の目的で、図１においては、リモート・アプリケーション・プログラム１８５を記憶装置１８１に存在するものとして図示している。当然のことながら、図示されるネットワーク接続は例示的なものであり、コンピュータ間にリンクを確立するためのその他の手段を使用することもできる。
【００１７】
例示的な実施形態
本発明は、メモリ内で実行中のプロセスにおいてコード実行パスをリダイレクトする機構に関するものであり、コードパスに挿入される１バイトの割り込み命令（例えば、ＩＮＴ３）を有利に使用することによって、予期しない動作につながらないようにするものである。割り込み命令は制御をカーネル・ハンドラに渡し、カーネル・ハンドラは置換機能の実行後にプロセスの続行に戻る。
【００１８】
図２を参照すると、メモリ内で実行中の例示的なプロセス２００が図示されている。本発明によれば、メモリ内で実行中のプロセス２００の実行パス２０１（例えば、置き換えるべき脆弱な機能の先頭）は、１バイトの割り込み命令（例えば、ＩＮＴ３）により既存の命令２０２を上書きすることによって変更することができる。元のコード２０３の残りの部分は変更されずに残り、ＩＮＴ３は、通常、他のコードが実行されるようにするためにデバッガを実行から抜け出させるトラップとして使用される。
【００１９】
割り込み命令はカーネル・ハンドラ２０４を呼び出させる。その割り込みのためのカーネル・ハンドラ２０４は、元の機能に戻る代わりに割り込みからの復帰を新たな命令２０６（例えば、置換機能）へと継続する機構を含む。新たな命令２０６は、カーネル・ハンドラ２０４に知られているメモリ空間に配置される。割り込み命令は１バイトの命令であるので、本発明は、元のコード２０３において２バイト以上を上書きすることなくコードの迂回を行う機構を提供できるという利点を有する。
【００２０】
本発明は図面に示す好ましい実施形態に関連付けて説明されたが、本発明から逸脱することなく本発明と同じ機能を実行するために、他の類似する実施形態を使用することもでき、また、本明細書に記載の実施形態に修正及び追加を行うこともできることを理解されたい。例えば、当業者であれば、本願明細書に記載の発明は、有線であろうと無線であろうと如何なるコンピュータ機器又はコンピュータ環境にも適用でき、通信ネットワークを介して接続されて当該ネットワークを介して相互に作用する如何なる数のコンピュータ機器にも適用できることを認識するであろう。さらに、特に無線ネットワーク化された機器の数が増加し続けていることから、携帯機器のオペレーティング・システム及びその他のアプリケーション用途のオペレーティング・システムを含む様々なコンピュータ・プラットフォームが考慮されていることは強調されるべきである。さらにまた、本発明は複数の処理チップ又は処理デバイスにおいて又は複数の処理チップ又は処理デバイスにわたって実施することができ、記憶機能も同様に複数のデバイスを介して達成することができる。したがって、本発明は如何なる単一の実施形態にも限定すべきでなく、添付の特許請求の範囲に従った広さ及び範囲において解釈されるべきである。
【図面の簡単な説明】
【００２１】
【図１】本発明の態様を実施し得る例示的なコンピュータ環境を示すブロック図である。
【図２】本発明により実行される例示的なプロセスを示す図である。
【図１】
2009501369.tif 000003
【図２】
2009501369.tif 000004