(58)【調査した分野】(Int.Cl.,DB名)
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュールとをさらに含むことを特徴とする請求項13に記載の装置。
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールをさらに含むことを特徴とする請求項13に記載の装置。
前記プリセットされた欠陥関数を特定する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含むことを特徴とする請求項16に記載の装置。
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項18に記載の装置。
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールをさらに含むことを特徴とする請求項20に記載の装置。
前記プリセットされた欠陥関数を特定する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールをさらに含むことを特徴とする請求項20に記載の装置。
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項23に記載の装置。
【発明の概要】
【0004】
しかし、このようなホットバグ修復コード技術は基本的にいずれも欠陥関数のソースコードを必要とし、欠陥関数のソースコードを直接修正してから、欠陥関数を改めてコンパイルした後にローディングして、元の欠陥関数を交換する。このような方法では、ソースコードがない場合に、修復することができなくなる。
【0005】
本発明の実施例は、背景技術における一項又は複数項以上の技術的問題を解決又は緩和するために、関数のソースコードに依存せずに欠陥関数を検査する方法、装置及びサーバを提供し、少なくとも一種の有益な選択を提供する。
【0006】
第1の態様で、本発明の実施例は関数の複数のバージョンに適用される欠陥関数を検査する方法を提供し、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、
異常が存在しないと、前記プリセットされた欠陥関数を実行することとを含む。
【0007】
第1の態様と結び付けて、本発明は第1の態様の第1の実施形態では、異常が存在しないと、前記プリセットされた欠陥関数を実行した後に、前記方法は更に、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含む。
【0008】
第1の態様と結び付けて、本発明は第1の態様の第2の実施形態では、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
【0009】
第1の態様と結び付けて、本発明は第1の態様の第3の実施形態では、プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
【0010】
第1の態様と結び付けて、本発明は第1の態様の第4の実施形態では、前記欠陥関数を修復する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
【0011】
第1の態様と結び付けて、本発明は第1の態様の第5の実施形態では、前記方法は更に、
検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
【0012】
第2の態様で、本発明の実施例は関数の複数のバージョンに適用される当該欠陥関数を検査する方法を提供し、前記方法は
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数を実行することと、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含む。
【0013】
第2の態様で、本発明は第2の態様の第1の実施形態では、前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、前記方法は更に、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた
欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
【0014】
第2の態様で、本発明は第2の態様の第2の実施形態では、プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
【0015】
第2の態様で、本発明は第2の態様の第3の実施形態では、前記欠陥関数を修復する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
【0016】
第2の態様で、本発明は第2の態様の第4の実施形態では、前記欠陥関数を修復した後に、前記方法は更に、
前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
【0017】
第3の態様で、本発明の実施例は欠陥関数を検査する装置を提供し、前記装置は、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第1の検査モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第1の異常返信モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュールとを含む。
【0018】
第3の態様と結び付けて、本発明は第3の態様の第1の実施形態では、前記装置は更に、
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュールとを含む。
【0019】
第3の態様と結び付けて、本発明は第3の態様の第2の実施形態では、前記第1の検査モジュールは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられ、
前記第2の検査モジュールは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置される第2のジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
【0020】
第3の態様と結び付けて、本発明は第3の態様の第3の実施形態では、前記装置は更に、
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールを含む。
【0021】
第3の態様と結び付けて、本発明は第3の態様の第4の実施形態では、前記装置は更に、
前記欠陥関数を修復する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含む。
【0022】
第3の態様と結び付けて、本発明は第3の態様の第5の実施形態では、前記装置は更に、
前記欠陥関数を修復した後に、検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールを含む。
【0023】
第4の態様で、本発明の実施例は欠陥関数を検査する装置を提供し、前記装置は、
第プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュールとを含む。
【0024】
第4の態様と結び付けて、本発明の第4の態様の第1の実施形態では、前記検査モジュールは、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
【0025】
第4の態様と結び付けて、本発明の第4の態様の第2の実施形態では、前記装置は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数が親関数における位置を特定するように配置される第2の位置特定モジュールを含む。
【0026】
第4の態様と結び付けて、本発明の第4の態様的第3の実施形態では、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含む。
【0027】
第4の態様と結び付けて、本発明の第4の態様の第4の実施形態では、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールを含む。
【0028】
第5の態様で、本発明の実施例はサーバを提供し、以下を含む:
前記機能はハードウェアにより実現してもよく、ハードウェアで対応するソフトウェアを実行することにより実現してもよい。前記ハードウェア又はソフトウェアは一つ以上の上記機能に対応するモジュールを含む。
【0029】
一つの可能な設計において、サーバの構造ではプロセッサとメモリを含み、前記メモリはサーバが上記第1の態様における欠陥関数を検査する方法を実行することをサポートするプログラムを記憶するために用いられ、前記プロセッサは前記メモリに記憶されたプログラムを実行するために用いられるように配置される。前記サーバは更に通信インターフェースを含んでもよく、サーバと他の装置又は通信ネットワークとの通信のために用いられる。
【0030】
第6の態様で、本発明の実施例はコンピュータの読み取り可能な記憶媒体を提供し、欠陥関数を検査する装置に用いられるコンピュータソフトウェアコマンドを記憶するために用いられ、上記第1の態様における欠陥関数を検査する方法を実行するための欠陥関数を検査する装置に係るプログラムを含む。
【0031】
上記技術案における一つの技術案は、本発明の実施例の技術案はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、プリセットされた欠陥関数のパラメータの異常状況に応じて、プリセットされた欠陥関数を実行するか否かを選択する。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できるという利点又は有益な効果を有する。
【0032】
上記技術案における別の技術案は、本発明の実施例の技術案は戻り値及び/又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、まずプリセットされた欠陥関数を実行し、次にプリセットされた欠陥関数の戻り値及び/又はパラメータの異常状況を検査し、戻り値及び/又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングする。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できるという利点又は有益な効果を有する。
【0033】
上記技術案における別の技術案は、本発明の実施例の技術案はプリセットされた欠陥関数のソースコードを取得する必要がなく、且つプリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、そして安定性と互換性が良好であるという利点又は有益な効果を有する。
【0034】
上記説明は明細書の目的のためのものに過ぎず、いかなる方式で制限されるものではない。上述した模式的な態様、実施形態及び特徴に加えて、図面の参照と以下の詳細な記述により、本発明の更なる態様、実施形態及び特徴は分かりやすくなる。
【発明を実施するための形態】
【0036】
後述では、単にいくつかの例示的な実施例について簡単に説明する。当業者であれば理解できるように、本発明の思想又は範囲から逸脱しない場合、様々な方式により記述される実施例を修正することが可能である。従って、図面と記述は、本質的に例示的であり、制限的ではないと考えられる。
【0037】
実施例1
本発明の実施例は欠陥関数を検査する方法を提供する。
図1に示すように、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む:
S101、プリセットされた欠陥関数を特定する。
プログラマは通常の検出技術によりどれらの関数に欠陥が存在するかを特定することができるため、本発明の実施例は具体的に実施する時に、直接プリセットされた欠陥関数のアドレスを探すことによって、プリセットされた欠陥関数を特定することができる。
【0038】
S102、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査し、前記プリセットされた欠陥関数に異常が存在する場合、工程S103を実行し、一方、前記プリセットされた欠陥関数に異常が存在しない場合、工程S104を実行する。
【0039】
ここで、工程S102は、インラインフック(inlinehook)方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
【0040】
以下に、inlinehook方法について簡単に説明する。当該inlinehook方法の原理は、欠陥関数の先頭のいくつかのコマンドを解析し、このいくつかのコマンドを配列にコピー(copy)して記憶し、続いて一つの検査関数を呼び出すためのいくつかのコマンドで交換する。元の欠陥関数を実行しようとすれば、検査関数の処理が完了した後に、この前に記憶された先頭のいくつかのコマンドを再び実行し、そして先頭のいくつかのコマンドの後のアドレスにジャンプして実行し続ける。本発明の実施例と結び付けて、本発明の実施例における検査関数をローディングする方法はinlinehook方法を採用して実現することができる。
【0041】
ここで、本発明の実施例はプリセットされた欠陥関数を初めて修復する時に、プリセットされた欠陥関数のプリセットされた行のコード、例えば、第1行のコードを検査関数にジャンプするコマンドに修正する。これにより、検査関数とプリセットされた欠陥関数とをバインディングさせる。そして、これからプリセットされた欠陥関数を実行するたびに、いずれもまず検査関数を実行し、検査関数にプリセットされた欠陥関数のパラメータが異常であるか否かを検査させる。
【0042】
あるプリセットされた欠陥関数に対して、欠陥関数を直接実行すれば、システムのクラッシュ等の危険が発生する恐れがあり、従って、欠陥関数を実行する前に、欠陥関数に異常のパラメータが存在するか否かを先に検査し、そして異常のパラメータが存在する欠陥関数をフィルタリングする必要がある。
【0043】
S103、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
例えば、プリセットされた欠陥関数Aの第1行のコードを実行する時に、第1行のコードがすでに検査関数Bにジャンプするコマンドに修正されたため、この場合に検査関数Bにジャンプし、そして検査関数Bによりプリセットされた欠陥関数Aのパラメータを検査する。関数Aのパラメータが異常であると発見すると、例えば関数Aの正常のパラメータ値が1000よりも小さいはずであるが、異常が発生した場合に、関数Aのパラメータ値が1000よりも大きくなり、この場合に検査関数はプリセットされた欠陥関数に戻らず、上位層呼び出し関数へエラーコードを返信し、例えば−2を返信する。それにより上位層呼び出し関数はプリセットされた他のロジックに基づいてプリセットされた欠陥関数Aを修復し、例えばプリセットされた欠陥関数Aを交換する。当業者であれば分かるように、検査関数を実行する時に、それが欠陥関数と同一の環境にあるため、異常が発生せずに欠陥関数から退出することは実現できる。
【0044】
S104、前記プリセットされた欠陥関数を実行する。
プリセットされた欠陥関数のパラメータに異常が存在しないと、プリセットされた欠陥関数を実行することができることを意味し、この場合、検査関数を実行し終えた後に、プリセットされた欠陥関数に戻り、続いて修正されたプリセットされた行のコードの次の行のコードを実行する。例えば、プリセットされた行のコードが第1行のコードであると、検査関数を実行し終えた後に、プリセットされた欠陥関数に戻り、プリセットされた欠陥関数の第2行のコードを実行しはじめる。
それに対して、検査関数が欠陥関数のパラメータを検査する時にパラメータの異常が発見しないと、当該欠陥関数を実行し続ける。
【0045】
なお、本発明の実施例はプリセットされた欠陥関数のプリセットされた行のコードを修正する時に、プリセットされた行のコードの基に直接修正することではなく、まずプリセットされた行のコードをバッファ領域に記憶し、次に検査関数にジャンプしたコマンドをプリセットされた行の位置に挿入することであるが、本明細書では、理解の便宜上、上記表記方式を採用するといことに注意すべきであり、検査関数がプリセットされた関数のパラメータを検査し終わった時に、パラメータに異常がないと、この場合にバッファ領域に記憶されたプリセットされた行のコードを実行し、その後プリセットされた欠陥関数に戻ってプリセットされた行の次の行のコードを実行する。例えば、プリセットされた行のコードが第1行のコードであると、欠陥関数を初めて修復する時に、第1行のコードをバッファ領域に記憶し、そして第1行に検査関数にジャンプするコマンドを挿入し、プリセットされた欠陥関数を実行しようとする時に、まず検査関数にジャンプするコマンドを実行し、次に検査関数にジャンプし、検査関数により異常のパラメータが存在するか否かを検査し、パラメータに異常が存在すると、上位層呼び出し関数にエラーを示す情報を返信し、パラメータに異常が存在しないと、バッファ領域に記憶された第1行のコードを実行し、その後プリセットされた欠陥関数に戻って第2行のコードを実行する。
【0046】
実際には、本発明の実施例はフィルタリングのメカニズムを採用し、カーネル又はアプリケーションプログラムを修復する時に、その中のプリセットされた欠陥関数をフィルタリングすることにより修復の目的を達成する。プリセットされた欠陥関数を修復する時に、プリセットされた欠陥関数がどのような欠陥タイプであるかを問わずに直接プリセットされた欠陥関数に対して全体交換を行うと、全体交換を行う時にプリセットされた欠陥関数のソースコードを取得する必要があるだけでなく、さらにプリセットされた欠陥関数のソースコードに応じて別の一セットのコードを改めて作成してプリセットされた欠陥関数を交換する必要があり、これにより修復の効率に影響を与えることは言うまでもない。従って、本発明の実施例はプリセットされた欠陥関数を保留する前提で、プリセット関数を修復することができる。
【0047】
一般的には、保留してもプログラム全体に厳しい結果をもたらさない又は関数の欠陥が比較的に容易に特定できるプリセットされた欠陥関数等は、保留できる欠陥関数であり、例えば、加算、減算を計算する欠陥関数であり、また、例えば、コードが短くて十行のコードのみを有するような欠陥関数である。
【0048】
本発明の実施例に係る修復は欠陥関数の実行を停止し、そして上位層呼び出し関数にジャンプし、且つ上位層呼び出し関数にエラーコードをフィードバックすることである。
本発明の実施例に係る検査関数は即ちバグ修復コードを指し、通称ではパッチである。
【0049】
本発明の実施例の技術案は、パラメータに異常が存在するプリセットされた欠陥関数をフィルタリングし、そしてプリセットされた欠陥関数のパラメータの異常状況に応じてプリセットされた欠陥関数を実行するか否かを選択し、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できる。
【0050】
また、本発明の実施例の技術案は、プリセットされた欠陥関数のソースコードを取得する必要がなく、且つプリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、安定性と互換性が良好である。
【0051】
実施例2
実施例1の基に、本発明の実施例は欠陥関数を検査する方法を提供する。
図2に示すように、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む:
S201、プリセットされた欠陥関数を特定する。
上記工程S201は実施例1の工程S101に対応する。
【0052】
S202、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査する。
上記工程S202は実施例1の工程S102に対応する。
【0053】
S203、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
上記工程S203は実施例1の工程S103に対応する。
【0054】
S204、異常が存在しないと、前記プリセットされた欠陥関数を実行する。
上記工程S204は実施例1の工程S104に対応する。
【0055】
S205、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査する。
ここで、工程S205は、インラインフック(inlinehook)方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
Inlinehook方法は実施例1を参照し、ここでは説明を省略する。
【0056】
S206、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
【0057】
欠陥関数を実行する時にもたらす不良結果をできる限りに回避するために、プリセットされた欠陥関数を実行する前にプリセットされた欠陥関数のパラメータを検査することができる場合があり、パラメータに異常が存在しないと、プリセットされた欠陥関数を実行し終えた時に、プリセットされた欠陥関数の戻り値及び/又はパラメータを検査する。例を挙げると、プリセットされた欠陥関数を初めて修復する時に、プリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするコマンドに修正する。例えば、プリセットされた欠陥関数の第1行のコードを検査関数にジャンプするコマンドに修正し、前記検査関数にジャンプするコマンドは、このように欠陥関数の第1行のコードを実行する時に、検査関数にジャンプし、検査関数によりプリセットされた欠陥関数におけるパラメータに異常が存在するか否かを検査し、異常が存在すると、その上位層呼び出し関数に戻り、この場合に戻り値及び/又はパラメータを再び検査する必要がないことは明らかであり、パラメータに異常が存在しないと、プリセットされた欠陥関数を呼び出してプリセットされた欠陥関数を実行し、そしてプリセットされた欠陥関数の戻り値及び/又はパラメータを受信し、戻り値及び/又はパラメータに異常が存在するか否かを検査し、戻り値及び/又はパラメータに異常が存在しないと、プリセットされた欠陥関数に戻り、そして他の関数を順に実行し、その戻り値及び/又はパラメータが異常であれば、戻り値及び/又はパラメータの状況により前記欠陥関数の戻り値及び/又はパラメータに対して他の処理を行い、例えば戻り値及び/又はパラメータを修正する。
【0058】
一つの実施形態によれば、工程S204において、当該プリセットされた欠陥関数を呼び出す方式で当該関数を実行してもよく、それは呼び出した後に、結果は検査関数に戻るため、当該2回目のジャンプ工程を省略することができるからである。
【0059】
また、前記プリセットされた欠陥関数のタイプは一般関数とサブ関数を含む。
前記プリセットされた欠陥関数のタイプが一般関数であると、直接以上の実施例に記載の工程に従って修復を行い、一方、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、プリセットされた欠陥関数を特定した後に、更に前記親関数のインデックスindexに基づいて前記サブ関数の親関数における位置を特定することができる。
【0060】
サブ関数の親関数にける位置を特定した後に、他の実行工程は本発明の実施例1と実施例2に対応する。例えば、実施例1に対応して、サブ関数のパラメータに異常が存在するか否かを検査するために、サブ関数を実行する前に検査関数にジャンプしてもよく、且つ異常が存在する場合、親関数に異常を示す情報を返信し、一方、異常が存在しない場合、サブ関数を実行する。また、例えば、実施例2に対応して、サブ関数のパラメータに異常が存在するか否かを検査するために、サブ関数を実行する前に検査関数にジャンプしてもよく、且つ異常が存在する場合、親関数に異常を示す情報を返信し、一方、異常が存在しない場合、サブ関数を実行し、そしてサブ関数の戻り値及び/又はパラメータを受信し、それによりサブ関数の戻り値及び/又はパラメータに異常が存在するか否かを検査し、異常が存在しないと、他の関数を実行し続け、一方、異常が存在すると、親関数にエラーを示す情報を返信する。
【0061】
そのうちの一つの実施例において、プリセットされた欠陥関数を特定する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
【0062】
具体的には、プリセットされた欠陥関数を特定する前に、検査関数を初期化する必要がある。これにより、メモリで検査関数のために余分の記憶空間を申請することができるとともに、検査関数の実行時の要求に応じて、ターゲットのデータを修正することができ、例えば、プリセットされた欠陥関数のパラメータ等を修正することができる。
【0063】
別の実施例において、プリセットされた欠陥関数を修復した後に、必要な場合に更に検査関数をアンロードしてもよく、従って、本発明の実施例は更に、
検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放する検査関数をアンロードする工程を含む。
【0064】
例えば、検査関数のバージョンの更新又は他の理由で検査関数をアンロードする必要がある場合、この前に検査関数のために申請された余分の記憶空間を解放する必要があり、それとともに、ターゲットのデータを修正すれば、更に修正されたターゲットのデータを回復する必要があり、例えば、プリセットされた欠陥関数のパラメータ等を回復する。
【0065】
また、本発明の実施例はパッチの状態をリアルタイムに出力することができ、例えば、パッチのバージョン情報、パッチの使用状態(イネーブル状態と禁止状態を含む)、及びパッチの名称の情報等である。それにより、パッチがイネーブル状態にあるか否かを特定し、更にパッチのバージョン情報に基づいてパッチを更新する必要があるか否かを特定する。
【0066】
ここで、パッチのイネーブル状態は、欠陥関数におけるジャンプコマンドを実行することで検査関数が実行できることにより表示された状態を指し、パッチの禁止状態は、欠陥関数におけるジャンプコマンドを実行しないことで検査関数が実行できないことにより表示された状態を指し、言い換えれば、欠陥関数とパッチとの間のバインディングを解除する。
【0067】
また、本発明の実施例は具体的に実施する時に、更にプリセットされた欠陥関数の記述情報を特定する必要があり、主に(1)欠陥関数の名称func、アドレスaddr及びそれが属するモジュールの名称modをプリセットすることと、(2)プリセットされた欠陥関数がサブ関数である場合、親関数の名称pfunc、アドレスpaddr及びそれが属するモジュールの名称pmodであることと、(3)プリセットされた欠陥関数がサブ関数である場合、更にサブ関数が親関数に出現した位置インデックスindexを含むこととを含む。
【0068】
同様に、本発明の実施例に係るフィルタリングメカニズムを基として、欠陥関数を検査する方法は更に関数全体交換方法(func--_replace)を用いてカーネル又はアプリケーションプログラムにおけるプリセットされた欠陥関数を修復することを含む。具体的に実施する時に、まずプリセットされた欠陥関数のコードを取得し、次にそのコードに基づいて欠陥関数の機能を実現することができる検査関数を改めて作成し、そしてinlinehook方法によりプリセットされた欠陥関数のプリセットされた行、例えば第2行のコードを検査関数にジャンプするジャンプコマンドに修正し、その後検査関数を実行する必要があり、且つ、検査関数を実行し終え後にも、元のプリセット欠陥関数に戻らない。実際には、これは検査関数でプリセットされた欠陥関数を交換する。
【0069】
本発明の実施例の技術案は一般関数とサブ関数への修復を実現することができ、且つ、プリセットされた欠陥関数がサブ関数である場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することができる。
【0070】
実施例3
本発明の実施例は欠陥関数を検査する方法を提供する。
図3は、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む。
【0071】
S301、プリセットされた欠陥関数を特定する。
プログラマは通常の検出技術によりどれらの関数に欠陥が存在するかを特定することができるため、本発明の実施例は具体的に実施する時に、直接プリセットされた欠陥関数のアドレスを探すことによって、プリセットされた欠陥関数を特定することができる。
【0072】
S302、前記プリセットされた欠陥関数を実行する。
本発明の実施例において、プリセットされた欠陥関数を実行する時に、その戻り値及び/又はパラメータは正常の可能性もあり、異常の可能性もある。このような場合、まずプリセットされた欠陥関数を実行してみて、次に戻り値及び/又はパラメータの異常状況に応じて対応する処理を行うことができる。
【0073】
S303、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査する。
ここで、工程S303の前に、前記方法は更に、
インラインフック(inlinehook)方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含む。ここで、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
inlinehook方法は実施例1を参照し、ここでは説明を省略する。
【0074】
本発明の実施例において、まずプリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするジャンプコマンドに修正することができ、プリセットされた欠陥関数のプリセットされた行のコードを実行する時に、検査関数にジャンプし、そして検査関数によりプリセットされた欠陥関数の戻り値及び/又はパラメータが正常であるか否かを検査する。戻り値及び/又はパラメータが正常であれば、プリセットされた欠陥関数に戻り、そして他の関数を順に実行し、その戻り値及び/又はパラメータが異常であれば、戻り値の状況によりプリセットされた欠陥関数の戻り値及び/又はパラメータに対して対応する処理を行うことができる。例えば、戻り値が存在する場合、戻り値又はパラメータを修正してもよく、個別の場合にも戻り値を廃棄してもよい。また、例えば、戻り値が存在しない場合、他の修復動作を行っても良い。
【0075】
S304、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
【0076】
本発明の実施例は戻り値及び/又はパラメータが異常である場合、修復処理を行う必要がある。ここで、戻り値の異常状況は戻り値が存在する場合と戻り値が存在しない場合を含む。戻り値が存在する場合は更に修正できる戻り値が存在する場合と修正できない戻り値が存在する場合を含む。以下、この三種類の場合ついて例を挙げて説明する。
【0077】
プリセットされた欠陥関数に戻り値が存在する場合、且つ戻り値は修正でき、例えばポインタタイプである。例えば、プリセットされた欠陥関数Aに対して、そのオブジェクト参照の基礎を変更し、この際、プリセットされた欠陥関数Aの戻り値に異常が発生するか否かを検索する必要があり、具体的には、実行する時に、プリセットされた欠陥関数Aの戻り値が65535以下であれば正常であり、65535よりも大きければオーバーフローが発生し、そのため、プリセットを修正することができ、欠陥関数Aの戻り値を、例えば65500に修正し、欠陥関数Aの戻り値を65536よりも小さくする。
【0078】
プリセットされた欠陥関数に戻り値が存在する場合、且つ、戻り値がネイティブ例えば整数変数であり、戻り値を変更できない。この場合、戻り値を廃棄してプリセットされた欠陥関数を修復することができる。例えば、プリセットされた欠陥関数Aを実行した後に、検査関数Bはプリセットされた欠陥関数Aの戻り値を検査し、プリセットされた欠陥関数Aの戻り値がデータの集合であれば、当該データの集合において、あるメンバーがオーバーフローを発生する可能性がある。この場合、検査関数は当該データの集合を廃棄し、そしてプリセットされた欠陥関数Aの上位層呼び出し関数に戻る。
【0079】
プリセットされた欠陥関数に戻り値が存在しない場合、例えば文字列のプリントを実行する関数に戻り値が存在しない場合、上位層呼び出し関数はプログラムの実行ロジックにより、プリセットされた欠陥関数が成功して実行しないと判断できる。プリセットされた欠陥関数の実行結果はパラメータの設置に依存するため、この際に検査関数を呼び出して検査関数により上位層から関数を呼び出しても結果が変更できない。このような場合には、プリセットされた欠陥関数の戻り値を関心する必要がなく、プログラム変数を回復することで修復すればよい。例えば、プログラム変数は実行する前の値が0であり、実行した後の値が3であり、プリセットされた欠陥関数を修復する時に、プログラム変数の値を3から0に変更する。
【0080】
本発明の実施例に挙げられた上記状況において、具体的に実施する時に、プログラムの複数種類のロジックにより実現することができるため、本発明の実施例は上記例を挙げる時に挙げられた修復方法を含むが、これらに限定されるものではない。
【0081】
本発明の実施例はあくまでもプリセットされた欠陥関数の戻り値及び/又はパラメータを処理し、例えばプログラム変数を修正し、他の関数を実行してプリセットされた欠陥関数のロジックを変更する等、その目的は、プリセットされた欠陥関数を実行する時に発生する効果がその呼び出し関数にフィードバックすることを防止し、言い換えれば、これらの不良な効果を修復又は隠蔽することである。本発明の実施例の以上の工程において、プリセットされた欠陥関数のコードを取得する必要がなく、プリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするジャンプコマンドに変更すれば修復を実現することができるため、開発過程は実現しやすく、開発周期は短い。
【0082】
本発明の実施例の技術案は戻り値及び/又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、まずプリセットされた欠陥関数を実行し、次にプリセットされた欠陥関数の戻り値及び/又はパラメータの異常状況を検査し、戻り値及び/又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングする。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できる。
【0083】
また、本発明の実施例の技術案は、プリセットされた欠陥関数のソースコードを取得する必要がなく、且つ、プリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、安定性と互換性が良好である。
【0084】
実施例4
実施例3を基に、本発明の実施例は欠陥関数を検査する方法を提供する。続けて
図3と結び付けて、本発明の実施例は実施例3の方法の基に、更にプリセットされた欠陥関数がサブ関数である場合の修復過程を説明する。
【0085】
関数は一般関数とサブ関数を含み、本発明の実施例の提供する欠陥関数を検査する方法は一般関数に用いられることもでき、サブ関数に用いられることもできる。しかし、親関数に複数のサブ関数が含まれる可能性があるため、更にサブ関数の位置を特定する必要がある。
【0086】
具体的には、プリセットされた欠陥関数を特定した後に、本発明の実施例は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
【0087】
更に、前記欠陥関数を修復する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
【0088】
更に、前記欠陥関数を修復した後に、前記方法は更に、
前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
【0089】
また、本発明の実施例はパッチ(検査関数)の状態をリアルタイムに出力することができ、例えば、パッチのバージョン情報、パッチの使用状態(イネーブル状態と禁止状態を含む)、及びパッチの名称の情報等である。それにより、パッチがイネーブル状態にあるか否かを特定し、更にパッチのバージョン情報に基づいてパッチを更新する必要があるか否かを特定する。具体的には、実施例2の説明を参照し、ここでは説明を省略する。
【0090】
また、本発明の実施例は具体的に実施する時に、更にプリセットされた欠陥関数の記述情報を特定する必要があり、主に(1)欠陥関数の名称func、アドレスaddr及びそれが属するモジュールの名称modをプリセットすることと、(2)プリセットされた欠陥関数がサブ関数である場合、親関数の名称pfunc、アドレスpaddr及びそれが属するモジュールの名称pmodであることと、(3)プリセットされた欠陥関数がサブ関数である場合、更にサブ関数が親関数に出現した位置インデックスindexを含むこととを含む。実施例2を参照されたい。
【0091】
本発明の実施例の技術案は一般関数とサブ関数への修復を実現することができ、且つ、プリセットされた欠陥関数がサブ関数である場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することができる。
【0092】
実施例5
本発明の実施例は欠陥関数を検査する装置を提供する。
図4に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュール41と、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第1の検査モジュール42と、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第1の異常返信モジュール43と
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュール44とを含む。
【0093】
本発明の実施例は、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することができることを実現可能であり、この有益な効果は実施例1の有益な効果と同じで、ここでは説明を省略する。
【0094】
実施例6
実施例5を基に、本発明の実施例は欠陥関数を検査する装置を提供する。
図5に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュール51と、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュール52とを含む。
【0095】
更に、前記第1の検査モジュール42は、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール421を含む。
【0096】
更に、前記装置は更に、
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュール53を含む。
【0097】
更に、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュール54を含む。
【0098】
更に、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュール55を含む。
【0099】
本発明の実施例は、プリセットされた欠陥関数がサブ関数である場合、サブ関数を位置決めすることが実現でき、当該有益な効果は実施例2と同じで、ここでは説明を省略する。
【0100】
実施例7
本発明の実施例は欠陥関数を検査する装置を提供する。
図6に示すように、それは、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュール61と、
前記プリセットされた欠陥関数を実行するように配置される実行モジュール62と、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される検査モジュール63と、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュール64とを含む。
【0101】
本発明の実施例は、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することができることを実現可能であり、この有益な効果は実施例3の有益な効果と同じで、ここでは説明を省略する。
【0102】
実施例8
実施例7を基に、本発明の実施例欠陥関数を検査する装置を提供する。
図7に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は検査モジュールを含む。
【0103】
前記検査モジュールは、 前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール71を含む。ここで、前記検査関数は前記プリセットされた
欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
【0104】
更に、前記装置は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュール72を含む。
【0105】
更に、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュール73を含む。
【0106】
更に、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュール74を含む。
【0107】
本発明の実施例は、開発周期が短く、安定性と互換性が良好であることを実現することができ、その有益な効果は実施例2の有益な効果と同じであるため、ここでは説明を省略する。
本発明の実施例は、プリセットされた欠陥関数がサブ関数である場合、サブ関数を位置決めすることを実現することができ、当該有益な効果は実施例4と同じであるため、ここでは説明を省略する。
【0108】
実施例9
本発明の実施例はサーバを提供し、
図8に示すように、当該サーバはメモリ81とプロセッサ82を含み、メモリ81内にプロセッサ82で動作可能なコンピュータプログラムが記憶される。プロセッサ82が前記コンピュータプログラムを実行する時に、上記実施例における情報分類方法を実現する。メモリ81とプロセッサ82の数は一つ以上であってもよい。
【0109】
当該デバイスは更に、
メモリ81及びプロセッサ82と外部デバイスとの間の通信のための通信インターフェース83を含む。
【0110】
メモリ81は、高速RAMメモリを含む可能性があり、更に不揮発性メモリ(non−volatile memory)を含む可能性もあり、例えば少なくとも一つの磁気ディスクメモリである。
【0111】
メモリ81、プロセッサ82と通信インターフェース83が独立して実現すれば、メモリ81、プロセッサ82と通信インターフェース83はバスにより互いに接続して且つ相互間の通信を完成することができる。前記バスは業界標準アーキテクチャ(ISA、InduStry Standard Architecture)バス、周辺機器相互接続(PCI、Peripheral Component Interconnect)バス又は拡張業界標準アーキテクチャ(EISA、Extended InduStry Standard Component)バス等であってもよい。前記バスはアドレスバス、データバス、制御バス等に分けられることができる。表現の便宜上、
図8では一本の太線のみで表すが、バスが一本のみ又は一タイプのみを有することを意味しない。
【0112】
選択可能に、具体的な実現では、メモリ81、プロセッサ82及び通信インターフェース83が一枚のチップに集積されると、メモリ81、プロセッサ82及び通信インターフェース83は内部インターフェースにより相互間の通信を完成することができる。
【0113】
実施例10
本発明の実施例はコンピュータプログラムが記憶されたコンピュータの読み取り可能な記憶媒体を提供し、当該プログラムはプロセッサにより実行される時に、
図1〜4のいずれかの実施例に記載の方法を実現する。
【0114】
本明細書の記述で、参照用語である「一つの実施例」、「いくつかの実施例」、「例」、「具体的な例」、又は「いくつかの例」等の記述は、当該実施例又は例と結び付けて記述する具体的な特徴、構造、材料又は特点が本発明の少なくとも一つの実施例又は例に含まれることを意味する。そして、記述する具体的な特徴、構造、材料又は特点はいずれか又は複数の実施例又は例において適切な方式で結び付けられることができる。なお、相互に矛盾しない場合、当業者は本明細書に記述する異なる実施例又は例と異なる実施例又は例の特徴とを結び付けて組み合わせることができる。
【0115】
なお、用語である「第1」、「第2」は記述するためのものであり、相対重要性を示し又は暗示すると理解してはいけなく、或いは示された技術特徴の数の特定を示唆すると理解してはいけない。これにより、「第1」、「第2」が限定された特徴は、少なくとも一つの当該特徴を明示的に又は暗示的に含むことができる。本発明の記述では、特に断りがない限り、「複数」は二つ又は二つ以上を意味する。
【0116】
フローチャートで又はここで他の方式で記述するいかなる過程又は方法の記述は、一つ又はより多くの特定のロジック機能又は過程の工程を実現するための実行可能なコマンドのコードのモジュール、クリップ又は一部を含むことを示し、且つ、本発明の好適な実施形態の範囲は別の実現を含み、そこで示された又は検討された順序に従わなくてもよく、係る機能によりほぼ同時の方式で又は逆の順序で機能を実行することを含むと理解してもよい。これについて、本発明の実施例に属する技術分野の当業者は理解できるべきである。
【0117】
フローチャートで表す又はここで他の方式で記述するロジック及び/又は工程は、例えば、ロジック機能を実現するための実行可能なコマンドの順序固定リストと考えられ、いかなるコンピュータの読み取り可能な媒体に具体的に実現することができ、コマンド実行システム、装置又はデバイス(例えばコンピュータに基づくシステム、プロセッサを含むシステム、又は他のコマンド実行システム、装置又はデバイスからコマンドを得てコマンドを実行可能なシステム)の使用に供され、又はこれらのコマンド実行システム、装置又はデバイスと結び付けて使用する。本明細書では、「コンピュータの読み取り可能な媒体」はプログラムを含む、記憶、通信、伝播又は転送することができるコマンド実行システム、装置又はデバイスに供される、又はこれらのコマンド実行システム、装置又はデバイスと結び付け使用するいかなる装置であってもよい。
【0118】
本発明の実施例に記載のコンピュータ読み取り可能な媒体はコンピュータの読み取り可能な信号媒体又はコンピュータの読み取り可能な記憶媒体又は上記両者の任意の組み合わせであってもよい。コンピュータの読み取り可能な記憶媒体の更に具体的な例は少なくとも(非網羅的なリスト)、一つ以上の配線を有する電気的接続部(電子装置)、携帯型コンピュータディスクカートリッジ(磁気装置)、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能で編集可能な読み出し専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ装置、及び携帯型読み出し専用メモリ(CDROM)を含む。また、コンピュータの読み取り可能な記憶媒体は更にその上に前記プログラムをプリント可能な紙又は他の適切な媒体であってもよい。それは例えば紙又は他の媒体に対して光走査を行うことで、続けて編集、解釈を行い、又は必要の時に他の適切な方式で処理を行い、それにより電子方式で前記プログラムを取得し、そしてそれをコンピュータメモリに記憶することができるからである。
【0119】
本発明の実施例において、コンピュータの読み取り可能な信号媒体は、ベースバンドに含まれる又はキャリアの一部の伝播するデータ信号とすることができ、その中にコンピュータの読み取り可能なプログラムコードが積載される。このような伝播するデータ信号は複数種の形式を採用することができ、電磁信号、光信号又は上記任意の適切な組み合わせを含むがこれらに限定されるものではない。コンピュータの読み取り可能な信号媒体は更にコンピュータの読み取り可能な記憶媒体以外のいかなるコンピュータの読み取り可能な媒体であってもよく、当該コンピュータの読み取り可能な媒体はコマンド実行システム、入力方法又はデバイス使用に用いられる或いはそれと結び付けて使用するプログラムを送信、伝播又は転送することができる。コンピュータの読み取り可能な媒体に含まれるプログラムコードはいかなる適切な媒体で転送してもよく、無線、電線、光ケーブル、ラジオ高周波(Radio Frequency、RF)等、又は上記任意の適切な組み合わせを含むがそれらに限定されるものではない。
【0120】
本発明の各部がハードウェア、ソフトウェア、ファームウェア又はそれらの組み合わせにより実現可能であることは言うまでもない。上記実施形態では、複数の工程又は方法はメモリに記憶され且つ適切なコマンド実行システム実行で実行するソフトウェア又はファームウェアにより実現することができる。例えば、ハードウェアで実現すれば、別の実施形態と同じなように、データ信号に対してロジック機能を実現するためのロジックゲート回路を有する離散的なロジック回路、適切な組み合わせロジックゲート回路を有する専用集積回路、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)等の本分野の公知の技術におけるいずれか又はそれらの組み合わせで実現することができる。
【0121】
当業者であれば、上記実施例の方法の有する全部又は一部の工程を実現することは、プログラムで関連するハードウェアを命令することにより完成でき、前記プログラムはコンピュータの読み取り可能な記憶媒体に記憶されることができ、当該プログラムは実行する時に、方法の実施例の工程の一つ又はその組み合わせを含むことを理解することができる。
【0122】
なお、本発明の各実施例における各機能ユニットが一つの処理モジュールに集積されてもよく、各ユニットが単独して物理的に存在してもよく、二つ又は二つ以上のユニットが一つのモジュールに集積されてもよい。上記集積されたモジュールはハードウェアの形式で実現してもよく、ソフトウェア機能モジュールの形式で実現してもよい。前記集積されたモジュールはソフトウェア機能モジュールの形式で実現して独立する製品として販売又は使用する時に、一つのコンピュータの読み取り可能な記憶媒体に記憶してもよい。前記記憶媒体は読み出し専用メモリ、磁気ディスク又は光ディスク等であってもよい。
【0123】
上記は本発明の具体的な実施形態に過ぎないが、本発明の特許請求の範囲はこれに限定されるものではない。当業者であれば、本発明の開示する技術的範囲内に、各種の変化又は交換を容易に想到することができ、これらは全て本発明の特許請求の範囲内に含まれるべきである。従って、本発明の特許請求の範囲は前記特許請求の範囲を基準とすべきである。