JP6643407B2 - 欠陥関数を検査する方法、装置、サーバ及びプログラム - Google Patents
欠陥関数を検査する方法、装置、サーバ及びプログラム Download PDFInfo
- Publication number
- JP6643407B2 JP6643407B2 JP2018115227A JP2018115227A JP6643407B2 JP 6643407 B2 JP6643407 B2 JP 6643407B2 JP 2018115227 A JP2018115227 A JP 2018115227A JP 2018115227 A JP2018115227 A JP 2018115227A JP 6643407 B2 JP6643407 B2 JP 6643407B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- preset
- preset defect
- defect
- defect function
- 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.)
- Active
Links
- 230000007547 defect Effects 0.000 title claims description 380
- 238000000034 method Methods 0.000 title claims description 103
- 230000006870 function Effects 0.000 claims description 639
- 238000007689 inspection Methods 0.000 claims description 122
- 230000005856 abnormality Effects 0.000 claims description 114
- 230000002950 deficient Effects 0.000 claims description 8
- 238000012360 testing method Methods 0.000 claims 2
- 238000010998 test method Methods 0.000 claims 1
- 230000015654 memory Effects 0.000 description 26
- 230000002159 abnormal effect Effects 0.000 description 15
- 230000008439 repair process Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000008571 general function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000009191 jumping Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Facsimiles In General (AREA)
Description
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、
異常が存在しないと、前記プリセットされた欠陥関数を実行することとを含む。
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含む。
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数を実行することと、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含む。
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第1の検査モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第1の異常返信モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュールとを含む。
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュールとを含む。
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられ、
前記第2の検査モジュールは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置される第2のジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールを含む。
前記欠陥関数を修復する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含む。
前記欠陥関数を修復した後に、検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールを含む。
第プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュールとを含む。
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数が親関数における位置を特定するように配置される第2の位置特定モジュールを含む。
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含む。
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールを含む。
前記機能はハードウェアにより実現してもよく、ハードウェアで対応するソフトウェアを実行することにより実現してもよい。前記ハードウェア又はソフトウェアは一つ以上の上記機能に対応するモジュールを含む。
本発明の実施例は欠陥関数を検査する方法を提供する。図1に示すように、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む:
S101、プリセットされた欠陥関数を特定する。
プログラマは通常の検出技術によりどれらの関数に欠陥が存在するかを特定することができるため、本発明の実施例は具体的に実施する時に、直接プリセットされた欠陥関数のアドレスを探すことによって、プリセットされた欠陥関数を特定することができる。
例えば、プリセットされた欠陥関数Aの第1行のコードを実行する時に、第1行のコードがすでに検査関数Bにジャンプするコマンドに修正されたため、この場合に検査関数Bにジャンプし、そして検査関数Bによりプリセットされた欠陥関数Aのパラメータを検査する。関数Aのパラメータが異常であると発見すると、例えば関数Aの正常のパラメータ値が1000よりも小さいはずであるが、異常が発生した場合に、関数Aのパラメータ値が1000よりも大きくなり、この場合に検査関数はプリセットされた欠陥関数に戻らず、上位層呼び出し関数へエラーコードを返信し、例えば−2を返信する。それにより上位層呼び出し関数はプリセットされた他のロジックに基づいてプリセットされた欠陥関数Aを修復し、例えばプリセットされた欠陥関数Aを交換する。当業者であれば分かるように、検査関数を実行する時に、それが欠陥関数と同一の環境にあるため、異常が発生せずに欠陥関数から退出することは実現できる。
プリセットされた欠陥関数のパラメータに異常が存在しないと、プリセットされた欠陥関数を実行することができることを意味し、この場合、検査関数を実行し終えた後に、プリセットされた欠陥関数に戻り、続いて修正されたプリセットされた行のコードの次の行のコードを実行する。例えば、プリセットされた行のコードが第1行のコードであると、検査関数を実行し終えた後に、プリセットされた欠陥関数に戻り、プリセットされた欠陥関数の第2行のコードを実行しはじめる。
それに対して、検査関数が欠陥関数のパラメータを検査する時にパラメータの異常が発見しないと、当該欠陥関数を実行し続ける。
本発明の実施例に係る検査関数は即ちバグ修復コードを指し、通称ではパッチである。
実施例1の基に、本発明の実施例は欠陥関数を検査する方法を提供する。図2に示すように、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む:
S201、プリセットされた欠陥関数を特定する。
上記工程S201は実施例1の工程S101に対応する。
上記工程S202は実施例1の工程S102に対応する。
上記工程S203は実施例1の工程S103に対応する。
上記工程S204は実施例1の工程S104に対応する。
ここで、工程S205は、インラインフック(inlinehook)方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる。
Inlinehook方法は実施例1を参照し、ここでは説明を省略する。
前記プリセットされた欠陥関数のタイプが一般関数であると、直接以上の実施例に記載の工程に従って修復を行い、一方、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、プリセットされた欠陥関数を特定した後に、更に前記親関数のインデックスindexに基づいて前記サブ関数の親関数における位置を特定することができる。
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放する検査関数をアンロードする工程を含む。
本発明の実施例は欠陥関数を検査する方法を提供する。図3は、本発明の実施例の欠陥関数を検査する方法のフローチャートである。本発明の実施例の欠陥関数を検査する方法は以下の工程を含む。
プログラマは通常の検出技術によりどれらの関数に欠陥が存在するかを特定することができるため、本発明の実施例は具体的に実施する時に、直接プリセットされた欠陥関数のアドレスを探すことによって、プリセットされた欠陥関数を特定することができる。
本発明の実施例において、プリセットされた欠陥関数を実行する時に、その戻り値及び/又はパラメータは正常の可能性もあり、異常の可能性もある。このような場合、まずプリセットされた欠陥関数を実行してみて、次に戻り値及び/又はパラメータの異常状況に応じて対応する処理を行うことができる。
ここで、工程S303の前に、前記方法は更に、
インラインフック(inlinehook)方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正することを含む。ここで、前記検査関数は前記プリセットされた欠陥関数のパラメータ及び/又は戻り値を検査するために用いられる。
inlinehook方法は実施例1を参照し、ここでは説明を省略する。
実施例3を基に、本発明の実施例は欠陥関数を検査する方法を提供する。続けて図3と結び付けて、本発明の実施例は実施例3の方法の基に、更にプリセットされた欠陥関数がサブ関数である場合の修復過程を説明する。
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含む。
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含む。
前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放することを含む。
本発明の実施例は欠陥関数を検査する装置を提供する。図4に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュール41と、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第1の検査モジュール42と、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第1の異常返信モジュール43と
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュール44とを含む。
実施例5を基に、本発明の実施例は欠陥関数を検査する装置を提供する。図5に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュール51と、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュール52とを含む。
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを検査関数を呼び出すコマンドにジャンプするように修正するように配置されるジャンプモジュール421を含む。
プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュール53を含む。
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュール54を含む。
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュール55を含む。
本発明の実施例は欠陥関数を検査する装置を提供する。図6に示すように、それは、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュール61と、
前記プリセットされた欠陥関数を実行するように配置される実行モジュール62と、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される検査モジュール63と、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュール64とを含む。
実施例7を基に、本発明の実施例欠陥関数を検査する装置を提供する。図7に示すように、本発明の実施例の欠陥関数を検査する装置である。本発明の実施例の欠陥関数を検査する装置は検査モジュールを含む。
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュール72を含む。
前記欠陥関数を修復する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュール73を含む。
前記欠陥関数を修復した後に、前記検査関数をアンロードする場合、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュール74を含む。
本発明の実施例は、プリセットされた欠陥関数がサブ関数である場合、サブ関数を位置決めすることを実現することができ、当該有益な効果は実施例4と同じであるため、ここでは説明を省略する。
本発明の実施例はサーバを提供し、図8に示すように、当該サーバはメモリ81とプロセッサ82を含み、メモリ81内にプロセッサ82で動作可能なコンピュータプログラムが記憶される。プロセッサ82が前記コンピュータプログラムを実行する時に、上記実施例における情報分類方法を実現する。メモリ81とプロセッサ82の数は一つ以上であってもよい。
メモリ81及びプロセッサ82と外部デバイスとの間の通信のための通信インターフェース83を含む。
本発明の実施例はコンピュータプログラムが記憶されたコンピュータの読み取り可能な記憶媒体を提供し、当該プログラムはプロセッサにより実行される時に、図1〜4のいずれかの実施例に記載の方法を実現する。
Claims (26)
- 欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する方法において、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査することであって、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数のパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正することを含む、検査することと、
異常が存在すると、前記検査関数は、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することと、
異常が存在しないと、前記プリセットされた欠陥関数を実行することとを含むことを特徴とする欠陥関数を検査する方法。 - 前記欠陥関数を初めて検査する時に、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記検査関数にジャンプするコマンドに修正する前に、前記方法は更に、
前記プリセットされた行のコードをバッファ領域に記憶し、
異常が存在しないと、前記プリセットされた欠陥関数を実行しようとする時に、前記バッファ領域に記憶されたプリセットされた行のコードを実行した後に、前記プリセットされた欠陥関数に戻って前記プリセットされた行の次の行のコードを実行することを特徴とする請求項1に記載の方法。 - 異常が存在しないと、前記プリセットされた欠陥関数を実行した後に、前記方法は更に、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することと、
異常が存在すると、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含むことを特徴とする請求項1に記載の方法。 - 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することは、
インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正することを含むことを特徴とする請求項3に記載の方法。 - プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含むことを特徴とする請求項1に記載の方法。 - 前記プリセットされた欠陥関数を特定する前に、前記方法は更に、
検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含むことを特徴とする請求項4に記載の方法。 - 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、前記方法は更に、
検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放することを含むことを特徴とする請求項6に記載の方法。 - 欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する方法において、
プリセットされた欠陥関数を特定することと、
前記プリセットされた欠陥関数を実行することと、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査することであって、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正することを含む、検査することと、
異常が存在すると、前記検査関数は、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信することとを含むことを特徴とする欠陥関数を検査する方法。 - 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後に、異常が存在しないと、前記方法は更に、前記プリセットされた欠陥関数に戻って他の関数を順に実行することを特徴とする請求項8に記載の方法。
- プリセットされた欠陥関数を特定した後に、前記方法は更に、
前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出されると、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定することを含むことを特徴とする請求項8に記載の方法。 - 前記プリセットされた欠陥関数を特定する前に、前記方法は更に、
前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化することを含むことを特徴とする請求項8に記載の方法。 - 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、前記方法は更に、
前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放することを含むことを特徴とする請求項11に記載の方法。 - 欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する装置において、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在するか否かを検査するように配置される第1の検査モジュールであって、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数のパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正する第1の検査モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在する場合、前記検査関数は、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第1の異常返信モジュールと、
前記プリセットされた欠陥関数のパラメータに異常が存在しない場合、前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、を含むことを特徴とする欠陥関数を検査する装置。 - 前記欠陥関数を初めて検査する時に、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記検査関数にジャンプするコマンドに修正する前に、前記プリセットされた行のコードをバッファ領域に記憶し、
前記実行モジュールは、異常が存在しないと、前記プリセットされた欠陥関数を実行しようとする時に、前記バッファ領域に記憶されたプリセットされた行のコードを実行した後に、前記プリセットされた欠陥関数に戻って前記プリセットされた行の次の行のコードを実行することを特徴とする請求項13に記載の装置。 - 前記プリセットされた欠陥関数を実行した後に、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される第2の検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在する場合、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される第2の異常返信モジュールとをさらに含むことを特徴とする請求項13に記載の装置。 - 前記第1の検査モジュールは、
インラインフック方法に基づいて、検査関数を呼び出すためのジャンプコマンドを前記プリセットされた欠陥関数のプリセットされた行に追加するように配置されるジャンプモジュールを含み、前記検査関数は前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられることを特徴とする請求項15に記載の装置。 - プリセットされた欠陥関数を特定した後に、前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合に、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールをさらに含むことを特徴とする請求項13に記載の装置。
- 前記プリセットされた欠陥関数を特定する前に、検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールを含むことを特徴とする請求項16に記載の装置。
- 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項18に記載の装置。
- 欠陥関数の複数のバージョンに適用される当該欠陥関数を検査する装置において、
プリセットされた欠陥関数を特定するように配置される第1の位置特定モジュールと、
前記プリセットされた欠陥関数を実行するように配置される実行モジュールと、
前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査するように配置される検査モジュールであって、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査する前に、インラインフック方法に基づいて、前記プリセットされた欠陥関数のプリセットされた行のコードを、前記プリセットされた欠陥関数の戻り値及び/又はパラメータを検査するために用いられる検査関数にジャンプするコマンドに修正する検査モジュールと、
前記プリセットされた欠陥関数の戻り値とパラメータに異常が存在すると、前記検査関数は、前記プリセットされた欠陥関数の上位層呼び出し関数へ異常を示す情報を返信するように配置される異常返信モジュールとを含むことを特徴とする欠陥関数を検査する装置。 - 前記検査モジュールは、前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、
異常が存在しないと、前記実行モジュールは、前記プリセットされた欠陥関数に戻って他の関数を順に実行することを特徴とする請求項20に記載の装置。 - 前記プリセットされた欠陥関数のタイプがサブ関数であり、且つ前記サブ関数が対応する親関数で複数回呼び出される場合、前記親関数のインデックスに基づいて前記サブ関数の親関数における位置を特定するように配置される第2の位置特定モジュールをさらに含むことを特徴とする請求項20に記載の装置。
- 前記プリセットされた欠陥関数を特定する前に、前記検査関数を記憶するための記憶空間を取得するように、前記検査関数を初期化するように配置される初期化モジュールをさらに含むことを特徴とする請求項20に記載の装置。
- 前記プリセットされた欠陥関数の戻り値及び/又はパラメータに異常が存在するか否かを検査した後、前記検査関数をアンロードすることにより、前記検査関数を記憶するための記憶空間を解放するように配置される解放モジュールをさらに含むことを特徴とする請求項23に記載の装置。
- サーバにおいて、
一つ以上のプロセッサと、
一つ以上のプログラムを記憶するための記憶装置と、を含み、
前記一つ以上のプログラムが前記一つ以上のプロセッサにより実行された場合、前記一つ以上のプロセッサに請求項1〜12のいずれか一項に記載の方法を実施させることを特徴とするサーバ。 - コンピュータにおいて、プロセッサにより実行された場合、請求項1〜12のいずれか一項に記載の方法を実施することを特徴とするプログラム。
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 JP2019160270A (ja) | 2019-09-19 |
JP6643407B2 true 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)
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 | 杭州海康威视数字技术股份有限公司 | 一种物联网设备无感安全漏洞修复方法、装置及设备 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3372387B2 (ja) * | 1995-03-15 | 2003-02-04 | 富士通株式会社 | プログラム検査方法 |
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 | 엘지전자 주식회사 | 운영 체계에서 사용자 메모리 유효성 검증 방법 |
JP2004295533A (ja) * | 2003-03-27 | 2004-10-21 | Nec Corp | アプリケーション障害回避システム、監視用コンピュータ、サーバコンピュータ及びプログラム |
US20050132031A1 (en) * | 2003-12-12 | 2005-06-16 | Reiner Sailer | Method and system for measuring status and state of remotely executing programs |
JP2006018765A (ja) * | 2004-07-05 | 2006-01-19 | Infocom Corp | ソフトウエアの一時的な修正方法およびプログラム |
JP2008052688A (ja) * | 2006-08-26 | 2008-03-06 | Takeshi Kamimukai | プログラムのパッチデータ生成装置 |
JP5382450B2 (ja) * | 2008-02-14 | 2014-01-08 | 日本電気株式会社 | アクセス制御装置、その方法及び情報記録媒体 |
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 | 北京和利时系统工程有限公司 | 嵌入式系统的错误追踪方法和装置 |
JP5703968B2 (ja) * | 2011-05-31 | 2015-04-22 | 富士電機株式会社 | プログラム開発支援装置およびそのプログラム |
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 | 百度在线网络技术(北京)有限公司 | 内核漏洞修复方法和装置 |
CN106055979B (zh) * | 2016-05-24 | 2019-04-09 | 百度在线网络技术(北京)有限公司 | 内核修复方法和装置 |
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 |
-
2018
- 2018-03-14 CN CN201810210229.6A patent/CN108415840A/zh active Pending
- 2018-06-14 KR KR1020180068261A patent/KR102106449B1/ko active IP Right Grant
- 2018-06-15 US US16/009,511 patent/US20190286544A1/en not_active Abandoned
- 2018-06-15 EP EP18178010.7A patent/EP3540598A1/en not_active Withdrawn
- 2018-06-18 JP JP2018115227A patent/JP6643407B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
KR20190108458A (ko) | 2019-09-24 |
CN108415840A (zh) | 2018-08-17 |
JP2019160270A (ja) | 2019-09-19 |
US20190286544A1 (en) | 2019-09-19 |
KR102106449B1 (ko) | 2020-05-04 |
EP3540598A1 (en) | 2019-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102166753B1 (ko) | 자동화된 반도체 디바이스 테스트를 위한 테스트 계획을 컴파일하기 위해 사용되는 개발 환경 내에 편집 및 갱신 기능 구현 | |
US8499289B2 (en) | Method, device and system for realizing kernel online patching | |
JP6643407B2 (ja) | 欠陥関数を検査する方法、装置、サーバ及びプログラム | |
US20140149800A1 (en) | Test method and test control apparatus | |
CN106598637B (zh) | 节点内的部件的选择性加载方法 | |
CN108897576A (zh) | 一种基于arm芯片的快速启动boot的方法 | |
US8762781B2 (en) | Method and apparatus useful in manufacturing test case operations | |
US8438000B2 (en) | Dynamic generation of tests | |
US7640421B1 (en) | Method and system for determining context switch state | |
US20140344785A1 (en) | Automatic generation of a resource reconfiguring test | |
US20240045787A1 (en) | Code inspection method under weak memory ordering architecture and corresponding device | |
US20130167138A1 (en) | Method and apparatus for simulating installations | |
US8892952B2 (en) | Preserve status parameter for testing in computing system | |
CN111666102A (zh) | 文件格式转换方法、芯片验证方法、相关装置及网络芯片 | |
CN110196730B (zh) | 应用程序的热补丁管理方法、装置和存储介质 | |
KR101844095B1 (ko) | 부트로더 실행 방법 및 장치 | |
US11972240B2 (en) | Systems and methods for automapping source code to machine code | |
US10831626B2 (en) | Method to sort partially good cores for specific operating system usage | |
KR102057724B1 (ko) | 메모리 해제 오류를 자동으로 수정하는 장치 및 방법 | |
TW201316340A (zh) | 快閃記憶體測試方法 | |
CN114968753A (zh) | 设备升级测试方法、介质、电子设备及测试系统 | |
JP2009238176A (ja) | 情報処理装置およびプログラムの検証方法 | |
CN106021089B (zh) | 一种补丁接口的测试方法及装置 | |
US20130227343A1 (en) | Circuits and Methods for Replacing Defective Instructions | |
CN111459570B (zh) | Pdf插件加载方法、电子设备和计算机存储介质 |
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 |