JP2019160270A - 欠陥関数を検査する方法、装置、サーバ及びプログラム - Google Patents

欠陥関数を検査する方法、装置、サーバ及びプログラム Download PDF

Info

Publication number
JP2019160270A
JP2019160270A JP2018115227A JP2018115227A JP2019160270A JP 2019160270 A JP2019160270 A JP 2019160270A JP 2018115227 A JP2018115227 A JP 2018115227A JP 2018115227 A JP2018115227 A JP 2018115227A JP 2019160270 A JP2019160270 A JP 2019160270A
Authority
JP
Japan
Prior art keywords
function
preset
preset defect
abnormality
defect
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
JP2018115227A
Other languages
English (en)
Other versions
JP6643407B2 (ja
Inventor
シア,リャンツァオ
Liangzhao Xia
ジェン,ロングリ
Longri Zheng
フー,ミン
Ming Hoo
バオ,シェンフ
Chenfu Bao
ウェイ,タオ
Tao Wei
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.)
Baidu Online Network Technology Beijing Co Ltd
Original Assignee
Baidu Online Network Technology Beijing Co Ltd
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 Baidu Online Network Technology Beijing Co Ltd filed Critical Baidu Online Network Technology Beijing Co Ltd
Publication of JP2019160270A publication Critical patent/JP2019160270A/ja
Application granted granted Critical
Publication of JP6643407B2 publication Critical patent/JP6643407B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

【課題】関数の複数のバージョンに適用される当該関数のソースコードに依存せずに欠陥関数を検査する。【解決手段】プリセットされた欠陥関数を特定することと、プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することと、異常が存在すると、プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、異常が存在しないと、プリセットされた欠陥関数を実行することとを含む。パラメータに異常が存在するプリセットされた欠陥関数をフィルタリングしてから、プリセットされた欠陥関数のパラメータの異常状況に応じて、プリセットされた欠陥関数を実行するか否かを選択するため、欠陥関数のソースコードを取得せずに欠陥関数を修復可能である。【選択図】図1

Description

本発明はコンピュータ技術分野に関し、具体的には、欠陥関数を検査する方法、装置及びサーバに関する。
カーネルはオペレーティングシステムのコアであり、システムのプロセス、メモリ、デバイスドライバ、ファイル及びネットワークシステム等の管理を担い、システムの性能と安定性を決定する。カーネルを交換して且つシステムを再起動するカーネルバグ修復コード方法を採用すると、高い信頼性の要求を満たすことができないため、カーネルの動作過程において、修復対象とするカーネル機能を直ちにバージョンアップ可能なことをサポートするバグ修復コード技術が求められる。また、アプリケーションプログラムは、1つ又は複数の特定のタスクを完成させるためにオペレーションシステム上に開発されて実行されるコンピュータプログラムである。しかし、アプリケーションプログラムは応用過程において、欠陥がある程度存在する可能性があり、後続のメンテナンスの時に、当該欠陥を修復するプログラムを作成してバグ修復コード又は検査関数とする必要がある。
上記問題について、従来のバグ修復コード技術では、メモリバグ修復コードの形式でカーネル又はアプリケーションプログラムの実行過程においてカーネル又はアプリケーションプログラムの機能を修復し、カーネル全体又はアプリケーションプログラムを交換する必要がなく、システムの信頼性の向上に寄与する。
しかし、このようなホットバグ修復コード技術は基本的にいずれも欠陥関数のソースコードを必要とし、欠陥関数のソースコードを直接修正してから、欠陥関数を改めてコンパイルした後にローディングして、元の欠陥関数を交換する。このような方法では、ソースコードがない場合に、修復することができなくなる。
本発明の実施例は、背景技術における一項又は複数項以上の技術的問題を解決又は緩和するために、関数のソースコードに依存せずに欠陥関数を検査する方法、装置及びサーバを提供し、少なくとも一種の有益な選択を提供する。
第1の態様で、本発明の実施例は関数の複数のバージョンに適用される欠陥関数を検査する方法を提供し、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、
異常が存在しないと、前記プリセットされた欠陥関数を実行することとを含む。
第1の態様と結び付けて、本発明は第1の態様の第1の実施形態では、異常が存在しないと、前記プリセットされた欠陥関数を実行した後に、前記方法は更に、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含む。
第1の態様と結び付けて、本発明は第1の態様の第2の実施形態では、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
第1の態様と結び付けて、本発明は第1の態様の第3の実施形態では、プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
第1の態様と結び付けて、本発明は第1の態様の第4の実施形態では、前記欠陥関数を修復する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
第1の態様と結び付けて、本発明は第1の態様の第5の実施形態では、前記方法は更に、
検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
第2の態様で、本発明の実施例は関数の複数のバージョンに適用される当該欠陥関数を検査する方法を提供し、前記方法は
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数を実行することと、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含む。
第2の態様で、本発明は第2の態様の第1の実施形態では、前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、前記方法は更に、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数的のパラメータ及び/又は戻り値を検査するために用いられる。
第2の態様で、本発明は第2の態様の第2の実施形態では、プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
第2の態様で、本発明は第2の態様の第3の実施形態では、前記欠陥関数を修復する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
第2の態様で、本発明は第2の態様の第4の実施形態では、前記欠陥関数を修復した後に、前記方法は更に、
前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
第3の態様で、本発明の実施例は欠陥関数を検査する装置を提供し、前記装置は、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第1の検査モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第1の異常返信モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュールとを含む。
第3の態様と結び付けて、本発明は第3の態様の第1の実施形態では、前記装置は更に、
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュールとを含む。
第3の態様と結び付けて、本発明は第3の態様の第2の実施形態では、前記第1の検査モジュールは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられ、
前記第2の検査モジュールは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置される第2のジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
第3の態様と結び付けて、本発明は第3の態様の第3の実施形態では、前記装置は更に、
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールを含む。
第3の態様と結び付けて、本発明は第3の態様の第4の実施形態では、前記装置は更に、
前記欠陥関数を修復する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含む。
第3の態様と結び付けて、本発明は第3の態様の第5の実施形態では、前記装置は更に、
前記欠陥関数を修復した後に、検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールを含む。
第4の態様で、本発明の実施例は欠陥関数を検査する装置を提供し、前記装置は、
第プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュールとを含む。
第4の態様と結び付けて、本発明の第4の態様の第1の実施形態では、前記検査モジュールは、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
第4の態様と結び付けて、本発明の第4の態様の第2の実施形態では、前記装置は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数が親関数における位置を特定するように配置される第2の位置特定モジュールを含む。
第4の態様と結び付けて、本発明の第4の態様的第3の実施形態では、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含む。
第4の態様と結び付けて、本発明の第4の態様の第4の実施形態では、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールを含む。
第5の態様で、本発明の実施例はサーバを提供し、以下を含む:
前記機能はハードウェアにより実現してもよく、ハードウェアで対応するソフトウェアを実行することにより実現してもよい。前記ハードウェア又はソフトウェアは一つ以上の上記機能に対応するモジュールを含む。
一つの可能な設計において、サーバの構造ではプロセッサとメモリを含み、前記メモリはサーバが上記第1の態様における欠陥関数を検査する方法を実行することをサポートするプログラムを記憶するために用いられ、前記プロセッサは前記メモリに記憶されたプログラムを実行するために用いられるように配置される。前記サーバは更に通信インターフェースを含んでもよく、サーバと他の装置又は通信ネットワークとの通信のために用いられる。
第6の態様で、本発明の実施例はコンピュータの読み取り可能な記憶媒体を提供し、欠陥関数を検査する装置に用いられるコンピュータソフトウェアコマンドを記憶するために用いられ、上記第1の態様における欠陥関数を検査する方法を実行するための欠陥関数を検査する装置に係るプログラムを含む。
上記技術案における一つの技術案は、本発明の実施例の技術案はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、プリセットされた欠陥関数のパラメータの異常状況に応じて、プリセットされた欠陥関数を実行するか否かを選択する。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できるという利点又は有益な効果を有する。
上記技術案における別の技術案は、本発明の実施例の技術案は戻り値及び/又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、まずプリセットされた欠陥関数を実行し、次にプリセットされた欠陥関数の戻り値及び/又はパラメータの異常状況を検査し、戻り値及び/又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングする。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できるという利点又は有益な効果を有する。
上記技術案における別の技術案は、本発明の実施例の技術案はプリセットされた欠陥関数のソースコードを取得する必要がなく、且つプリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、そして安定性と互換性が良好であるという利点又は有益な効果を有する。
上記説明は明細書の目的のためのものに過ぎず、いかなる方式で制限されるものではない。上述した模式的な態様、実施形態及び特徴に加えて、図面の参照と以下の詳細な記述により、本発明の更なる態様、実施形態及び特徴は分かりやすくなる。
図面では、特に断りがない限り、複数の図面において同一の符号は同一又は類似する部品又は要素を表す。これらの図面は必ずしも比率に従って描画されるものではない。これらの図面は本発明により開示するいくつかの実施形態を説明するものに過ぎず、本発明の範囲を制限するものではないと理解すべきである。
本発明の実施例1の欠陥関数を検査する方法のフローチャートである。 本発明の実施例2の欠陥関数を検査する方法のフローチャートである。 本発明の実施例3の欠陥関数を検査する方法のフローチャートである。 本発明の実施例5の欠陥関数を検査する装置の模式図である。 本発明の実施例6の欠陥関数を検査する装置の模式図である。 本発明の実施例7の欠陥関数を検査する装置の模式図である。 本発明の実施例8の欠陥関数を検査する装置の模式図である。 本発明の実施例9のサーバの模式図である。
後述では、単にいくつかの例示的な実施例について簡単に説明する。当業者であれば理解できるように、本発明の思想又は範囲から逸脱しない場合、様々な方式により記述される実施例を修正することが可能である。従って、図面と記述は、本質的に例示的であり、制限的ではないと考えられる。
実施例1
本発明の実施例は欠陥関数を検査する方法を提供する。図1に示すように、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む:
S101、プリセットされた欠陥関数を特定する。
プログラマは通常の検出技術によりどれらの関数に欠陥が存在するかを特定することができるため、本発明の実施例は具体的に実施する時に、直接プリセットされた欠陥関数のアドレスを探すことによって、プリセットされた欠陥関数を特定することができる。
S102、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査し、前記プリセットされた欠陥関数に異常が存在する場合、工程S103を実行し、一方、前記プリセットされた欠陥関数に異常が存在しない場合、工程S104を実行する。
ここで、工程S102は、インラインフック(inlinehook)方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
以下に、inlinehook方法について簡単に説明する。当該inlinehook方法の原理は、欠陥関数の先頭のいくつかのコマンドを解析し、このいくつかのコマンドを配列にコピー(copy)して記憶し、続いて一つの検査関数を呼び出すためのいくつかのコマンドで交換する。元の欠陥関数を実行しようとすれば、検査関数の処理が完了した後に、この前に記憶された先頭のいくつかのコマンドを再び実行し、そして先頭のいくつかのコマンドの後のアドレスにジャンプして実行し続ける。本発明の実施例と結び付けて、本発明の実施例における検査関数をローディングする方法はinlinehook方法を採用して実現することができる。
ここで、本発明の実施例はプリセットされた欠陥関数を初めて修復する時に、プリセットされた欠陥関数のプリセットされた行のコード、例えば、第1行のコードを検査関数にジャンプするコマンドに修正する。これにより、検査関数とプリセットされた欠陥関数とをバインディングさせる。そして、これからプリセットされた欠陥関数を実行するたびに、いずれもまず検査関数を実行し、検査関数にプリセットされた欠陥関数のパラメータが異常であるか否かを検査させる。
あるプリセットされた欠陥関数に対して、欠陥関数を直接実行すれば、システムのクラッシュ等の危険が発生する恐れがあり、従って、欠陥関数を実行する前に、欠陥関数に異常のパラメータが存在するか否かを先に検査し、そして異常のパラメータが存在する欠陥関数をフィルタリングする必要がある。
S103、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
例えば、プリセットされた欠陥関数Aの第1行のコードを実行する時に、第1行のコードがすでに検査関数Bにジャンプするコマンドに修正されたため、この場合に検査関数Bにジャンプし、そして検査関数Bによりプリセットされた欠陥関数Aのパラメータを検査する。関数Aのパラメータが異常であると発見すると、例えば関数Aの正常のパラメータ値が1000よりも小さいはずであるが、異常が発生した場合に、関数Aのパラメータ値が1000よりも大きくなり、この場合に検査関数はプリセットされた欠陥関数に戻らず、上位層呼び出し関数へエラーコードを返信し、例えば−2を返信する。それにより上位層呼び出し関数はプリセットされた他のロジックに基づいてプリセットされた欠陥関数Aを修復し、例えばプリセットされた欠陥関数Aを交換する。当業者であれば分かるように、検査関数を実行する時に、それが欠陥関数と同一の環境にあるため、異常が発生せずに欠陥関数から退出することは実現できる。
S104、前記プリセットされた欠陥関数を実行する。
プリセットされた欠陥関数のパラメータに異常が存在しないと、プリセットされた欠陥関数を実行することができることを意味し、この場合、検査関数を実行し終えた後に、プリセットされた欠陥関数に戻り、続いて修正されたプリセットされた行のコードの次の行のコードを実行する。例えば、プリセットされた行のコードが第1行のコードであると、検査関数を実行し終えた後に、プリセットされた欠陥関数に戻り、プリセットされた欠陥関数の第2行のコードを実行しはじめる。
それに対して、検査関数が欠陥関数のパラメータを検査する時にパラメータの異常が発見しないと、当該欠陥関数を実行し続ける。
なお、本発明の実施例はプリセットされた欠陥関数のプリセットされた行のコードを修正する時に、プリセットされた行のコードの基に直接修正することではなく、まずプリセットされた行のコードをバッファ領域に記憶し、次に検査関数にジャンプしたコマンドをプリセットされた行の位置に挿入することであるが、本明細書では、理解の便宜上、上記表記方式を採用するといことに注意すべきであり、検査関数がプリセットされた関数のパラメータを検査し終わった時に、パラメータに異常がないと、この場合にバッファ領域に記憶されたプリセットされた行のコードを実行し、その後プリセットされた欠陥関数に戻ってプリセットされた行の次の行のコードを実行する。例えば、プリセットされた行のコードが第1行のコードであると、欠陥関数を初めて修復する時に、第1行のコードをバッファ領域に記憶し、そして第1行に検査関数にジャンプするコマンドを挿入し、プリセットされた欠陥関数を実行しようとする時に、まず検査関数にジャンプするコマンドを実行し、次に検査関数にジャンプし、検査関数により異常のパラメータが存在するか否かを検査し、パラメータに異常が存在すると、上位層呼び出し関数にエラーを示す情報を返信し、パラメータに異常が存在しないと、バッファ領域に記憶された第1行のコードを実行し、その後プリセットされた欠陥関数に戻って第2行のコードを実行する。
実際には、本発明の実施例はフィルタリングのメカニズムを採用し、カーネル又はアプリケーションプログラムを修復する時に、その中のプリセットされた欠陥関数をフィルタリングすることにより修復の目的を達成する。プリセットされた欠陥関数を修復する時に、プリセットされた欠陥関数がどのような欠陥タイプであるかを問わずに直接プリセットされた欠陥関数に対して全体交換を行うと、全体交換を行う時にプリセットされた欠陥関数のソースコードを取得する必要があるだけでなく、さらにプリセットされた欠陥関数のソースコードに応じて別の一セットのコードを改めて作成してプリセットされた欠陥関数を交換する必要があり、これにより修復の効率に影響を与えることは言うまでもない。従って、本発明の実施例はプリセットされた欠陥関数を保留する前提で、プリセット関数を修復することができる。
一般的には、保留してもプログラム全体に厳しい結果をもたらさない又は関数の欠陥が比較的に容易に特定できるプリセットされた欠陥関数等は、保留できる欠陥関数であり、例えば、加算、減算を計算する欠陥関数であり、また、例えば、コードが短くて十行のコードのみを有するような欠陥関数である。
本発明の実施例に係る修復は欠陥関数の実行を停止し、そして上位層呼び出し関数にジャンプし、且つ上位層呼び出し関数にエラーコードをフィードバックすることである。
本発明の実施例に係る検査関数は即ちバグ修復コードを指し、通称ではパッチである。
本発明の実施例の技術案は、パラメータに異常が存在するプリセットされた欠陥関数をフィルタリングし、そしてプリセットされた欠陥関数のパラメータの異常状況に応じてプリセットされた欠陥関数を実行するか否かを選択し、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できる。
また、本発明の実施例の技術案は、プリセットされた欠陥関数のソースコードを取得する必要がなく、且つプリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、安定性と互換性が良好である。
実施例2
実施例1の基に、本発明の実施例は欠陥関数を検査する方法を提供する。図2に示すように、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む:
S201、プリセットされた欠陥関数を特定する。
上記工程S201は実施例1の工程S101に対応する。
S202、前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査する。
上記工程S202は実施例1の工程S102に対応する。
S203、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
上記工程S203は実施例1の工程S103に対応する。
S204、異常が存在しないと、前記プリセットされた欠陥関数を実行する。
上記工程S204は実施例1の工程S104に対応する。
S205、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査する。
ここで、工程S205は、インラインフック(inlinehook)方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
Inlinehook方法は実施例1を参照し、ここでは説明を省略する。
S206、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
欠陥関数を実行する時にもたらす不良結果をできる限りに回避するために、プリセットされた欠陥関数を実行する前にプリセットされた欠陥関数のパラメータを検査することができる場合があり、パラメータに異常が存在しないと、プリセットされた欠陥関数を実行し終えた時に、プリセットされた欠陥関数の戻り値及び/又はパラメータを検査する。例を挙げると、プリセットされた欠陥関数を初めて修復する時に、プリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするコマンドに修正する。例えば、プリセットされた欠陥関数の第1行のコードを検査関数にジャンプするコマンドに修正し、前記検査関数にジャンプするコマンドは、このように欠陥関数の第1行のコードを実行する時に、検査関数にジャンプし、検査関数によりプリセットされた欠陥関数におけるパラメータに異常が存在するか否かを検査し、異常が存在すると、その上位層呼び出し関数に戻り、この場合に戻り値及び/又はパラメータを再び検査する必要がないことは明らかであり、パラメータに異常が存在しないと、プリセットされた欠陥関数を呼び出してプリセットされた欠陥関数を実行し、そしてプリセットされた欠陥関数の戻り値及び/又はパラメータを受信し、戻り値及び/又はパラメータに異常が存在するか否かを検査し、戻り値及び/又はパラメータに異常が存在しないと、プリセットされた欠陥関数に戻り、そして他の関数を順に実行し、その戻り値及び/又はパラメータが異常であれば、戻り値及び/又はパラメータの状況により前記欠陥関数の戻り値及び/又はパラメータに対して他の処理を行い、例えば戻り値及び/又はパラメータを修正する。
一つの実施形態によれば、工程S204において、当該プリセットされた欠陥関数を呼び出す方式で当該関数を実行してもよく、それは呼び出した後に、結果は検査関数に戻るため、当該2回目のジャンプ工程を省略することができるからである。
また、前記プリセットされた欠陥関数のタイプは一般関数とサブ関数を含む。
前記プリセットされた欠陥関数のタイプが一般関数であると、直接以上の実施例に記載の工程に従って修復を行い、一方、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、プリセットされた欠陥関数を特定した後に、更に前記親関数のインデックスindexに基づいて前記サブ関数の親関数における位置を特定することができる。
サブ関数の親関数にける位置を特定した後に、他の実行工程は本発明の実施例1と実施例2に対応する。例えば、実施例1に対応して、サブ関数のパラメータに異常が存在するか否かを検査するために、サブ関数を実行する前に検査関数にジャンプしてもよく、且つ異常が存在する場合、親関数に異常を示す情報を返信し、一方、異常が存在しない場合、サブ関数を実行する。また、例えば、実施例2に対応して、サブ関数のパラメータに異常が存在するか否かを検査するために、サブ関数を実行する前に検査関数にジャンプしてもよく、且つ異常が存在する場合、親関数に異常を示す情報を返信し、一方、異常が存在しない場合、サブ関数を実行し、そしてサブ関数の戻り値及び/又はパラメータを受信し、それによりサブ関数の戻り値及び/又はパラメータに異常が存在するか否かを検査し、異常が存在しないと、他の関数を実行し続け、一方、異常が存在すると、親関数にエラーを示す情報を返信する。
そのうちの一つの実施例において、プリセットされた欠陥関数を特定する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
具体的には、プリセットされた欠陥関数を特定する前に、検査関数を初期化する必要がある。これにより、メモリで検査関数のために余分の記憶空間を申請することができるとともに、検査関数の実行時の要求に応じて、ターゲットのデータを修正することができ、例えば、プリセットされた欠陥関数のパラメータ等を修正することができる。
別の実施例において、プリセットされた欠陥関数を修復した後に、必要な場合に更に検査関数をアンロードしてもよく、従って、本発明の実施例は更に、
検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放する検査関数をアンロードする工程を含む。
例えば、検査関数のバージョンの更新又は他の理由で検査関数をアンロードする必要がある場合、この前に検査関数のために申請された余分の記憶空間を解放する必要があり、それとともに、ターゲットのデータを修正すれば、更に修正されたターゲットのデータを回復する必要があり、例えば、プリセットされた欠陥関数のパラメータ等を回復する。
また、本発明の実施例はパッチの状態をリアルタイムに出力することができ、例えば、パッチのバージョン情報、パッチの使用状態(イネーブル状態と禁止状態を含む)、及びパッチの名称の情報等である。それにより、パッチがイネーブル状態にあるか否かを特定し、更にパッチのバージョン情報に基づいてパッチを更新する必要があるか否かを特定する。
ここで、パッチのイネーブル状態は、欠陥関数におけるジャンプコマンドを実行することで検査関数が実行できることにより表示された状態を指し、パッチの禁止状態は、欠陥関数におけるジャンプコマンドを実行しないことで検査関数が実行できないことにより表示された状態を指し、言い換えれば、欠陥関数とパッチとの間のバインディングを解除する。
また、本発明の実施例は具体的に実施する時に、更にプリセットされた欠陥関数の記述情報を特定する必要があり、主に(1)欠陥関数の名称func、アドレスaddr及びそれが属するモジュールの名称modをプリセットすることと、(2)プリセットされた欠陥関数がサブ関数である場合、親関数の名称pfunc、アドレスpaddr及びそれが属するモジュールの名称pmodであることと、(3)プリセットされた欠陥関数がサブ関数である場合、更にサブ関数が親関数に出現した位置インデックスindexを含むこととを含む。
同様に、本発明の実施例に係るフィルタリングメカニズムを基として、欠陥関数を検査する方法は更に関数全体交換方法(func--_replace)を用いてカーネル又はアプリケーションプログラムにおけるプリセットされた欠陥関数を修復することを含む。具体的に実施する時に、まずプリセットされた欠陥関数のコードを取得し、次にそのコードに基づいて欠陥関数の機能を実現することができる検査関数を改めて作成し、そしてinlinehook方法によりプリセットされた欠陥関数のプリセットされた行、例えば第2行のコードを検査関数にジャンプするジャンプコマンドに修正し、その後検査関数を実行する必要があり、且つ、検査関数を実行し終え後にも、元のプリセット欠陥関数に戻らない。実際には、これは検査関数でプリセットされた欠陥関数を交換する。
本発明の実施例の技術案は一般関数とサブ関数への修復を実現することができ、且つ、プリセットされた欠陥関数がサブ関数である場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することができる。
実施例3
本発明の実施例は欠陥関数を検査する方法を提供する。図3は、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む。
S301、プリセットされた欠陥関数を特定する。
プログラマは通常の検出技術によりどれらの関数に欠陥が存在するかを特定することができるため、本発明の実施例は具体的に実施する時に、直接プリセットされた欠陥関数のアドレスを探すことによって、プリセットされた欠陥関数を特定することができる。
S302、前記プリセットされた欠陥関数を実行する。
本発明の実施例において、プリセットされた欠陥関数を実行する時に、その戻り値及び/又はパラメータは正常の可能性もあり、異常の可能性もある。このような場合、まずプリセットされた欠陥関数を実行してみて、次に戻り値及び/又はパラメータの異常状況に応じて対応する処理を行うことができる。
S303、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査する。
ここで、工程S303の前に、前記方法は更に、
インラインフック(inlinehook)方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含む。ここで、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
inlinehook方法は実施例1を参照し、ここでは説明を省略する。
本発明の実施例において、まずプリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするジャンプコマンドに修正することができ、プリセットされた欠陥関数のプリセットされた行のコードを実行する時に、検査関数にジャンプし、そして検査関数によりプリセットされた欠陥関数の戻り値及び/又はパラメータが正常であるか否かを検査する。戻り値及び/又はパラメータが正常であれば、プリセットされた欠陥関数に戻り、そして他の関数を順に実行し、その戻り値及び/又はパラメータが異常であれば、戻り値の状況によりプリセットされた欠陥関数の戻り値及び/又はパラメータに対して対応する処理を行うことができる。例えば、戻り値が存在する場合、戻り値又はパラメータを修正してもよく、個別の場合にも戻り値を廃棄してもよい。また、例えば、戻り値が存在しない場合、他の修復動作を行っても良い。
S304、異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信する。
本発明の実施例は戻り値及び/又はパラメータが異常である場合、修復処理を行う必要がある。ここで、戻り値の異常状況は戻り値が存在する場合と戻り値が存在しない場合を含む。戻り値が存在する場合は更に修正できる戻り値が存在する場合と修正できない戻り値が存在する場合を含む。以下、この三種類の場合ついて例を挙げて説明する。
プリセットされた欠陥関数に戻り値が存在する場合、且つ戻り値は修正でき、例えばポインタタイプである。例えば、プリセットされた欠陥関数Aに対して、そのオブジェクト参照の基礎を変更し、この際、プリセットされた欠陥関数Aの戻り値に異常が発生するか否かを検索する必要があり、具体的には、実行する時に、プリセットされた欠陥関数Aの戻り値が65535以下であれば正常であり、65535よりも大きければオーバーフローが発生し、そのため、プリセットを修正することができ、欠陥関数Aの戻り値を、例えば65500に修正し、欠陥関数Aの戻り値を65536よりも小さくする。
プリセットされた欠陥関数に戻り値が存在する場合、且つ、戻り値がネイティブ例えば整数変数であり、戻り値を変更できない。この場合、戻り値を廃棄してプリセットされた欠陥関数を修復することができる。例えば、プリセットされた欠陥関数Aを実行した後に、検査関数Bはプリセットされた欠陥関数Aの戻り値を検査し、プリセットされた欠陥関数Aの戻り値がデータの集合であれば、当該データの集合において、あるメンバーがオーバーフローを発生する可能性がある。この場合、検査関数は当該データの集合を廃棄し、そしてプリセットされた欠陥関数Aの上位層呼び出し関数に戻る。
プリセットされた欠陥関数に戻り値が存在しない場合、例えば文字列のプリントを実行する関数に戻り値が存在しない場合、上位層呼び出し関数はプログラムの実行ロジックにより、プリセットされた欠陥関数が成功して実行しないと判断できる。プリセットされた欠陥関数の実行結果はパラメータの設置に依存するため、この際に検査関数を呼び出して検査関数により上位層から関数を呼び出しても結果が変更できない。このような場合には、プリセットされた欠陥関数の戻り値を関心する必要がなく、プログラム変数を回復することで修復すればよい。例えば、プログラム変数は実行する前の値が0であり、実行した後の値が3であり、プリセットされた欠陥関数を修復する時に、プログラム変数の値を3から0に変更する。
本発明の実施例に挙げられた上記状況において、具体的に実施する時に、プログラムの複数種類のロジックにより実現することができるため、本発明の実施例は上記例を挙げる時に挙げられた修復方法を含むが、これらに限定されるものではない。
本発明の実施例はあくまでもプリセットされた欠陥関数の戻り値及び/又はパラメータを処理し、例えばプログラム変数を修正し、他の関数を実行してプリセットされた欠陥関数のロジックを変更する等、その目的は、プリセットされた欠陥関数を実行する時に発生する効果がその呼び出し関数にフィードバックすることを防止し、言い換えれば、これらの不良な効果を修復又は隠蔽することである。本発明の実施例の以上の工程において、プリセットされた欠陥関数のコードを取得する必要がなく、プリセットされた欠陥関数のプリセットされた行のコードを検査関数にジャンプするジャンプコマンドに変更すれば修復を実現することができるため、開発過程は実現しやすく、開発周期は短い。
本発明の実施例の技術案は戻り値及び/又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングすることができ、まずプリセットされた欠陥関数を実行し、次にプリセットされた欠陥関数の戻り値及び/又はパラメータの異常状況を検査し、戻り値及び/又はパラメータに異常が存在するプリセットされた欠陥関数をフィルタリングする。このように、プリセットされた欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することが実現できる。
また、本発明の実施例の技術案は、プリセットされた欠陥関数のソースコードを取得する必要がなく、且つ、プリセットされた欠陥関数を交換するための検査関数を作成する必要がないため、開発周期が短く、安定性と互換性が良好である。
実施例4
実施例3を基に、本発明の実施例は欠陥関数を検査する方法を提供する。続けて図3と結び付けて、本発明の実施例は実施例3の方法の基に、更にプリセットされた欠陥関数がサブ関数である場合の修復過程を説明する。
関数は一般関数とサブ関数を含み、本発明の実施例の提供する欠陥関数を検査する方法は一般関数に用いられることもでき、サブ関数に用いられることもできる。しかし、親関数に複数のサブ関数が含まれる可能性があるため、更にサブ関数の位置を特定する必要がある。
具体的には、プリセットされた欠陥関数を特定した後に、本発明の実施例は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
更に、前記欠陥関数を修復する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
更に、前記欠陥関数を修復した後に、前記方法は更に、
前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
また、本発明の実施例はパッチ(検査関数)の状態をリアルタイムに出力することができ、例えば、パッチのバージョン情報、パッチの使用状態(イネーブル状態と禁止状態を含む)、及びパッチの名称の情報等である。それにより、パッチがイネーブル状態にあるか否かを特定し、更にパッチのバージョン情報に基づいてパッチを更新する必要があるか否かを特定する。具体的には、実施例2の説明を参照し、ここでは説明を省略する。
また、本発明の実施例は具体的に実施する時に、更にプリセットされた欠陥関数の記述情報を特定する必要があり、主に(1)欠陥関数の名称func、アドレスaddr及びそれが属するモジュールの名称modをプリセットすることと、(2)プリセットされた欠陥関数がサブ関数である場合、親関数の名称pfunc、アドレスpaddr及びそれが属するモジュールの名称pmodであることと、(3)プリセットされた欠陥関数がサブ関数である場合、更にサブ関数が親関数に出現した位置インデックスindexを含むこととを含む。実施例2を参照されたい。
本発明の実施例の技術案は一般関数とサブ関数への修復を実現することができ、且つ、プリセットされた欠陥関数がサブ関数である場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することができる。
実施例5
本発明の実施例は欠陥関数を検査する装置を提供する。図4に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュール41と、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第1の検査モジュール42と、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第1の異常返信モジュール43と
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュール44とを含む。
本発明の実施例は、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することができることを実現可能であり、この有益な効果は実施例1の有益な効果と同じで、ここでは説明を省略する。
実施例6
実施例5を基に、本発明の実施例は欠陥関数を検査する装置を提供する。図5に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュール51と、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュール52とを含む。
更に、前記第1の検査モジュール42は、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール421を含む。
更に、前記装置は更に、
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュール53を含む。
更に、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュール54を含む。
更に、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュール55を含む。
本発明の実施例は、プリセットされた欠陥関数がサブ関数である場合、サブ関数を位置決めすることが実現でき、当該有益な効果は実施例2と同じで、ここでは説明を省略する。
実施例7
本発明の実施例は欠陥関数を検査する装置を提供する。図6に示すように、それは、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュール61と、
前記プリセットされた欠陥関数を実行するように配置される実行モジュール62と、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される検査モジュール63と、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュール64とを含む。
本発明の実施例は、欠陥関数のソースコードを取得する必要がなく欠陥関数を修復することができることを実現可能であり、この有益な効果は実施例3の有益な効果と同じで、ここでは説明を省略する。
実施例8
実施例7を基に、本発明の実施例欠陥関数を検査する装置を提供する。図7に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は検査モジュールを含む。
前記検査モジュールは、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール71を含む。ここで、前記検査関数は前記プリセットされた欠陥関数的のパラメータ及び/又は戻り値を検査するために用いられる。
更に、前記装置は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュール72を含む。
更に、前記装置は更に、
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュール73を含む。
更に、前記装置は更に、
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュール74を含む。
本発明の実施例は、開発周期が短く、安定性と互換性が良好であることを実現することができ、その有益な効果は実施例2の有益な効果と同じであるため、ここでは説明を省略する。
本発明の実施例は、プリセットされた欠陥関数がサブ関数である場合、サブ関数を位置決めすることを実現することができ、当該有益な効果は実施例4と同じであるため、ここでは説明を省略する。
実施例9
本発明の実施例はサーバを提供し、図8に示すように、当該サーバはメモリ81とプロセッサ82を含み、メモリ81内にプロセッサ82で動作可能なコンピュータプログラムが記憶される。プロセッサ82が前記コンピュータプログラムを実行する時に、上記実施例における情報分類方法を実現する。メモリ81とプロセッサ82の数は一つ以上であってもよい。
当該デバイスは更に、
メモリ81及びプロセッサ82と外部デバイスとの間の通信のための通信インターフェース83を含む。
メモリ81は、高速RAMメモリを含む可能性があり、更に不揮発性メモリ(non−volatile memory)を含む可能性もあり、例えば少なくとも一つの磁気ディスクメモリである。
メモリ81、プロセッサ82と通信インターフェース83が独立して実現すれば、メモリ81、プロセッサ82と通信インターフェース83はバスにより互いに接続して且つ相互間の通信を完成することができる。前記バスは業界標準アーキテクチャ(ISA、InduStry Standard Architecture)バス、周辺機器相互接続(PCI、Peripheral Component Interconnect)バス又は拡張業界標準アーキテクチャ(EISA、Extended InduStry Standard Component)バス等であってもよい。前記バスはアドレスバス、データバス、制御バス等に分けられることができる。表現の便宜上、図8では一本の太線のみで表すが、バスが一本のみ又は一タイプのみを有することを意味しない。
選択可能に、具体的な実現では、メモリ81、プロセッサ82及び通信インターフェース83が一枚のチップに集積されると、メモリ81、プロセッサ82及び通信インターフェース83は内部インターフェースにより相互間の通信を完成することができる。
実施例10
本発明の実施例はコンピュータプログラムが記憶されたコンピュータの読み取り可能な記憶媒体を提供し、当該プログラムはプロセッサにより実行される時に、図1〜4のいずれかの実施例に記載の方法を実現する。
本明細書の記述で、参照用語である「一つの実施例」、「いくつかの実施例」、「例」、「具体的な例」、又は「いくつかの例」等の記述は、当該実施例又は例と結び付けて記述する具体的な特徴、構造、材料又は特点が本発明の少なくとも一つの実施例又は例に含まれることを意味する。そして、記述する具体的な特徴、構造、材料又は特点はいずれか又は複数の実施例又は例において適切な方式で結び付けられることができる。なお、相互に矛盾しない場合、当業者は本明細書に記述する異なる実施例又は例と異なる実施例又は例の特徴とを結び付けて組み合わせることができる。
なお、用語である「第1」、「第2」は記述するためのものであり、相対重要性を示し又は暗示すると理解してはいけなく、或いは示された技術特徴の数の特定を示唆すると理解してはいけない。これにより、「第1」、「第2」が限定された特徴は、少なくとも一つの当該特徴を明示的に又は暗示的に含むことができる。本発明の記述では、特に断りがない限り、「複数」は二つ又は二つ以上を意味する。
フローチャートで又はここで他の方式で記述するいかなる過程又は方法の記述は、一つ又はより多くの特定のロジック機能又は過程の工程を実現するための実行可能なコマンドのコードのモジュール、クリップ又は一部を含むことを示し、且つ、本発明の好適な実施形態の範囲は別の実現を含み、そこで示された又は検討された順序に従わなくてもよく、係る機能によりほぼ同時の方式で又は逆の順序で機能を実行することを含むと理解してもよい。これについて、本発明の実施例に属する技術分野の当業者は理解できるべきである。
フローチャートで表す又はここで他の方式で記述するロジック及び/又は工程は、例えば、ロジック機能を実現するための実行可能なコマンドの順序固定リストと考えられ、いかなるコンピュータの読み取り可能な媒体に具体的に実現することができ、コマンド実行システム、装置又はデバイス(例えばコンピュータに基づくシステム、プロセッサを含むシステム、又は他のコマンド実行システム、装置又はデバイスからコマンドを得てコマンドを実行可能なシステム)の使用に供され、又はこれらのコマンド実行システム、装置又はデバイスと結び付けて使用する。本明細書では、「コンピュータの読み取り可能な媒体」はプログラムを含む、記憶、通信、伝播又は転送することができるコマンド実行システム、装置又はデバイスに供される、又はこれらのコマンド実行システム、装置又はデバイスと結び付け使用するいかなる装置であってもよい。
本発明の実施例に記載のコンピュータ読み取り可能な媒体はコンピュータの読み取り可能な信号媒体又はコンピュータの読み取り可能な記憶媒体又は上記両者の任意の組み合わせであってもよい。コンピュータの読み取り可能な記憶媒体の更に具体的な例は少なくとも(非網羅的なリスト)、一つ以上の配線を有する電気的接続部(電子装置)、携帯型コンピュータディスクカートリッジ(磁気装置)、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能で編集可能な読み出し専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ装置、及び携帯型読み出し専用メモリ(CDROM)を含む。また、コンピュータの読み取り可能な記憶媒体は更にその上に前記プログラムをプリント可能な紙又は他の適切な媒体であってもよい。それは例えば紙又は他の媒体に対して光走査を行うことで、続けて編集、解釈を行い、又は必要の時に他の適切な方式で処理を行い、それにより電子方式で前記プログラムを取得し、そしてそれをコンピュータメモリに記憶することができるからである。
本発明の実施例において、コンピュータの読み取り可能な信号媒体は、ベースバンドに含まれる又はキャリアの一部の伝播するデータ信号とすることができ、その中にコンピュータの読み取り可能なプログラムコードが積載される。このような伝播するデータ信号は複数種の形式を採用することができ、電磁信号、光信号又は上記任意の適切な組み合わせを含むがこれらに限定されるものではない。コンピュータの読み取り可能な信号媒体は更にコンピュータの読み取り可能な記憶媒体以外のいかなるコンピュータの読み取り可能な媒体であってもよく、当該コンピュータの読み取り可能な媒体はコマンド実行システム、入力方法又はデバイス使用に用いられる或いはそれと結び付けて使用するプログラムを送信、伝播又は転送することができる。コンピュータの読み取り可能な媒体に含まれるプログラムコードはいかなる適切な媒体で転送してもよく、無線、電線、光ケーブル、ラジオ高周波(Radio Frequency、RF)等、又は上記任意の適切な組み合わせを含むがそれらに限定されるものではない。
本発明の各部がハードウェア、ソフトウェア、ファームウェア又はそれらの組み合わせにより実現可能であることは言うまでもない。上記実施形態では、複数の工程又は方法はメモリに記憶され且つ適切なコマンド実行システム実行で実行するソフトウェア又はファームウェアにより実現することができる。例えば、ハードウェアで実現すれば、別の実施形態と同じなように、データ信号に対してロジック機能を実現するためのロジックゲート回路を有する離散的なロジック回路、適切な組み合わせロジックゲート回路を有する専用集積回路、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)等の本分野の公知の技術におけるいずれか又はそれらの組み合わせで実現することができる。
当業者であれば、上記実施例の方法の有する全部又は一部の工程を実現することは、プログラムで関連するハードウェアを命令することにより完成でき、前記プログラムはコンピュータの読み取り可能な記憶媒体に記憶されることができ、当該プログラムは実行する時に、方法の実施例の工程の一つ又はその組み合わせを含むことを理解することができる。
なお、本発明の各実施例における各機能ユニットが一つの処理モジュールに集積されてもよく、各ユニットが単独して物理的に存在してもよく、二つ又は二つ以上のユニットが一つのモジュールに集積されてもよい。上記集積されたモジュールはハードウェアの形式で実現してもよく、ソフトウェア機能モジュールの形式で実現してもよい。前記集積されたモジュールはソフトウェア機能モジュールの形式で実現して独立する製品として販売又は使用する時に、一つのコンピュータの読み取り可能な記憶媒体に記憶してもよい。前記記憶媒体は読み出し専用メモリ、磁気ディスク又は光ディスク等であってもよい。
上記は本発明の具体的な実施形態に過ぎないが、本発明の特許請求の範囲はこれに限定されるものではない。当業者であれば、本発明の開示する技術的範囲内に、各種の変化又は交換を容易に想到することができ、これらは全て本発明の特許請求の範囲内に含まれるべきである。従って、本発明の特許請求の範囲は前記特許請求の範囲を基準とすべきである。
本発明はコンピュータ技術分野に関し、具体的には、欠陥関数を検査する方法、装置サーバ及びプログラムに関する。
第2の態様で、本発明は第2の態様の第1の実施形態では、前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、前記方法は更に、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
前記検査モジュールは、 前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール71を含む。ここで、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。

Claims (24)

  1. 欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する方法において、
    プリセットされた欠陥関数を特定することと、
    前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することと、
    異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、
    異常が存在しないと、前記プリセットされた欠陥関数を実行することとを含むことを特徴とする欠陥関数を検査する方法。
  2. 異常が存在しないと、前記プリセットされた欠陥関数を実行した後に、前記方法は更に、
    前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
    異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含むことを特徴とする請求項1に記載の方法。
  3. 前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することは、
    インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられることを特徴とする請求項2に記載の方法。
  4. プリセットされた欠陥関数を特定した後に、前記方法は更に、
    前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含むことを特徴とする請求項1に記載の方法。
  5. 前記プリセットされた欠陥関数を特定する前に、前記方法は更に、
    検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含むことを特徴とする請求項3に記載の方法。
  6. 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、前記方法は更に、
    検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放することを含むことを特徴とする請求項5に記載の方法。
  7. 関数の複数のバージョンに適用される当該欠陥関数を検査する方法において、
    プリセットされた欠陥関数を特定することと、
    前記プリセットされた欠陥関数を実行することと、
    前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
    異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含むことを特徴とする欠陥関数を検査する方法。
  8. 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査する前に、前記方法は更に、
    インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加することを含み、前記検査関数は前記プリセットされた欠陥関数的のパラメータ及び/又は戻り値を検査するために用いられることを特徴とする請求項7に記載の方法。
  9. プリセットされた欠陥関数を特定した後に、前記方法は更に、
    前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含むことを特徴とする請求項7に記載の方法。
  10. 前記プリセットされた欠陥関数を特定する前に、前記方法は更に、
    前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含むことを特徴とする請求項8に記載の方法。
  11. 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、前記方法は更に、
    前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放することを含むことを特徴とする請求項10に記載の方法。
  12. 欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する装置において、
    プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
    前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第1の検査モジュールと、
    前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第1の異常返信モジュールと、
    前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュールとを含むことを特徴とする欠陥関数を検査する装置。
  13. 前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュールと、
    前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュールとをさらに含むことを特徴とする請求項12に記載の装置。
  14. 前記第1の検査モジュールは、
    インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられることを特徴とする請求項13に記載の装置。
  15. プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールをさらに含むことを特徴とする請求項12に記載の装置。
  16. 前記プリセットされた欠陥関数を特定する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含むことを特徴とする請求項14に記載の装置。
  17. 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項16に記載の装置。
  18. 関数の複数のバージョンに適用される当該欠陥関数を検査する装置において、
    プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
    前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、
    前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される検査モジュールと、
    前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュールとを含むことを特徴とする欠陥関数を検査する装置。
  19. 前記検査モジュールは、
    前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられることを特徴とする請求項18に記載の装置。
  20. 前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールをさらに含むことを特徴とする請求項18に記載の装置。
  21. 前記プリセットされた欠陥関数を特定する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールをさらに含むことを特徴とする請求項18に記載の装置。
  22. 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項21に記載の装置。
  23. サーバにおいて、
    一つ以上のプロセッサと、
    一つ以上のプログラムを記憶するための記憶装置とを含み、
    前記一つ以上のプログラムが前記一つ以上のプロセッサにより実行された場合、前記一つ以上のプロセッサに請求項1〜11のいずれか一項に記載の方法を実施させることを特徴とするサーバ。
  24. コンピュータプログラムが記憶されたコンピュータの読み取り可能な記憶媒体において、当該プログラムがプロセッサにより実行された場合、請求項1〜11のいずれか一項に記載の方法を実施することを特徴とするコンピュータの読み取り可能な記憶媒体。
JP2018115227A 2018-03-14 2018-06-18 欠陥関数を検査する方法、装置、サーバ及びプログラム Active JP6643407B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810210229.6 2018-03-14
CN201810210229.6A CN108415840A (zh) 2018-03-14 2018-03-14 修复函数缺陷的方法、装置及服务器

Publications (2)

Publication Number Publication Date
JP2019160270A true JP2019160270A (ja) 2019-09-19
JP6643407B2 JP6643407B2 (ja) 2020-02-12

Family

ID=62816295

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018115227A Active JP6643407B2 (ja) 2018-03-14 2018-06-18 欠陥関数を検査する方法、装置、サーバ及びプログラム

Country Status (5)

Country Link
US (1) US20190286544A1 (ja)
EP (1) EP3540598A1 (ja)
JP (1) JP6643407B2 (ja)
KR (1) KR102106449B1 (ja)
CN (1) CN108415840A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110457151B (zh) * 2019-07-10 2022-01-28 五八有限公司 热修复方法、装置及可读存储介质
CN110362330B (zh) * 2019-07-18 2023-09-01 腾讯科技(深圳)有限公司 应用程序更新方法、装置、终端及存储介质
CN114969765B (zh) * 2022-07-27 2022-11-01 杭州海康威视数字技术股份有限公司 一种物联网设备无感安全漏洞修复方法、装置及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249208A (ja) * 1995-03-15 1996-09-27 Fujitsu Ltd プログラム検査方法
JP2004295533A (ja) * 2003-03-27 2004-10-21 Nec Corp アプリケーション障害回避システム、監視用コンピュータ、サーバコンピュータ及びプログラム
JP2006018765A (ja) * 2004-07-05 2006-01-19 Infocom Corp ソフトウエアの一時的な修正方法およびプログラム
JP2008052688A (ja) * 2006-08-26 2008-03-06 Takeshi Kamimukai プログラムのパッチデータ生成装置
WO2009102006A1 (ja) * 2008-02-14 2009-08-20 Nec Corporation アクセス制御装置、その方法及び情報記録媒体
JP2012248166A (ja) * 2011-05-31 2012-12-13 Fuji Electric Co Ltd プログラム開発支援装置およびそのプログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108797A (en) * 1997-12-11 2000-08-22 Winbond Electronics Corp. Method and system for loading microprograms in partially defective memory
KR100435783B1 (ko) * 2000-07-31 2004-06-12 엘지전자 주식회사 운영 체계에서 사용자 메모리 유효성 검증 방법
US20050132031A1 (en) * 2003-12-12 2005-06-16 Reiner Sailer Method and system for measuring status and state of remotely executing programs
US8935789B2 (en) * 2008-07-21 2015-01-13 Jayant Shukla Fixing computer files infected by virus and other malware
CN101539883B (zh) * 2009-05-05 2011-11-16 北京和利时系统工程有限公司 嵌入式系统的错误追踪方法和装置
US20140214812A1 (en) * 2012-10-04 2014-07-31 Goole Inc. Source code priority ranking for faster searching
US9727635B2 (en) * 2013-02-06 2017-08-08 Abb Research Ltd. Combined code searching and automatic code navigation
US9454676B2 (en) * 2014-06-27 2016-09-27 Intel Corporation Technologies for preventing hook-skipping attacks using processor virtualization features
US10120776B2 (en) * 2014-09-04 2018-11-06 Home Box Office, Inc. Documents for human readable documentation and runtime validation
US9904614B2 (en) * 2015-04-03 2018-02-27 NodeSource, Inc. Source code inspection and verification
CN104915209A (zh) * 2015-06-15 2015-09-16 上海斐讯数据通信技术有限公司 一种linux内核跟踪调试与修复问题的方法
US10180836B1 (en) * 2015-08-24 2019-01-15 Amazon Technologies, Inc. Generating source code review comments using code analysis tools
US10025689B2 (en) * 2016-01-22 2018-07-17 International Business Machines Corporation Enhanced policy editor with completion support and on demand validation
US10140105B2 (en) * 2016-03-10 2018-11-27 Wowza Media Systems, LLC Converting source code
CN105893850B (zh) * 2016-03-30 2017-12-15 百度在线网络技术(北京)有限公司 漏洞修复方法和装置
CN105868639A (zh) * 2016-03-30 2016-08-17 百度在线网络技术(北京)有限公司 内核漏洞修复方法和装置
CN110110522B (zh) * 2016-05-24 2021-05-07 百度在线网络技术(北京)有限公司 内核修复方法和装置
US10599551B2 (en) * 2016-08-12 2020-03-24 The University Of Chicago Automatically detecting distributed concurrency errors in cloud systems
US10423594B2 (en) * 2016-11-28 2019-09-24 Atlassian Pty Ltd Systems and methods for indexing source code in a search engine
US9842139B1 (en) * 2016-12-28 2017-12-12 Accenture Global Solutions Limited Metadata-driven program code generation for clinical data analysis
US11314870B1 (en) * 2017-03-14 2022-04-26 Melih Abdulhayoglu Auto-containment of potentially vulnerable applications

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249208A (ja) * 1995-03-15 1996-09-27 Fujitsu Ltd プログラム検査方法
JP2004295533A (ja) * 2003-03-27 2004-10-21 Nec Corp アプリケーション障害回避システム、監視用コンピュータ、サーバコンピュータ及びプログラム
JP2006018765A (ja) * 2004-07-05 2006-01-19 Infocom Corp ソフトウエアの一時的な修正方法およびプログラム
JP2008052688A (ja) * 2006-08-26 2008-03-06 Takeshi Kamimukai プログラムのパッチデータ生成装置
WO2009102006A1 (ja) * 2008-02-14 2009-08-20 Nec Corporation アクセス制御装置、その方法及び情報記録媒体
JP2012248166A (ja) * 2011-05-31 2012-12-13 Fuji Electric Co Ltd プログラム開発支援装置およびそのプログラム

Also Published As

Publication number Publication date
JP6643407B2 (ja) 2020-02-12
KR102106449B1 (ko) 2020-05-04
EP3540598A1 (en) 2019-09-18
US20190286544A1 (en) 2019-09-19
KR20190108458A (ko) 2019-09-24
CN108415840A (zh) 2018-08-17

Similar Documents

Publication Publication Date Title
US8935573B2 (en) Reliable unit testing through cached mocking
KR102166753B1 (ko) 자동화된 반도체 디바이스 테스트를 위한 테스트 계획을 컴파일하기 위해 사용되는 개발 환경 내에 편집 및 갱신 기능 구현
CN107766236B (zh) 测试任务自动化管理方法、装置、设备及存储介质
US7962832B2 (en) Method for detecting memory error
US7530056B1 (en) Method and system for detecting runtime defects in a program by comparing correct and incorrect runs
JP6643407B2 (ja) 欠陥関数を検査する方法、装置、サーバ及びプログラム
US20200310779A1 (en) Validating a firmware compliance policy prior to use in a production system
US20140149800A1 (en) Test method and test control apparatus
US20130055217A1 (en) Breakpoint synchronization for modified program source code
JP2015011372A (ja) デバッグ支援システム、方法、プログラム及び記録媒体
US9396097B2 (en) Methods, circuits, devices, systems and associated computer executable code for testing software code
CN111198811A (zh) 一种页面自动化测试的方法、装置、电子设备及存储介质
US9658939B2 (en) Identifying a defect density
US20170109175A1 (en) Selective loading of components within a node to speed up maintenance actions
US7640421B1 (en) Method and system for determining context switch state
CN106326051A (zh) 一种pxe测试环境实现os自动切换的方法
CN113377586A (zh) 一种服务器自动化检测方法、装置及存储介质
US8892499B2 (en) Life cycle management of rule sets
US20080114971A1 (en) Branch history table for debug
US20240095174A1 (en) Method for detecting error of operating system kernel memory in real time
CN116049000A (zh) 环境参数配置方法、装置、设备、存储介质及产品
US8554522B2 (en) Detection of design redundancy
KR20150075867A (ko) 부트로더 실행 방법 및 장치
CN110442370B (zh) 一种测试用例查询方法及装置
CN110471851B (zh) 一种自动化测试方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190703

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: 20191218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200106

R150 Certificate of patent or registration of utility model

Ref document number: 6643407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250