JP5579934B2 - フック再進入防止装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体 - Google Patents

フック再進入防止装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体 Download PDF

Info

Publication number
JP5579934B2
JP5579934B2 JP2013524794A JP2013524794A JP5579934B2 JP 5579934 B2 JP5579934 B2 JP 5579934B2 JP 2013524794 A JP2013524794 A JP 2013524794A JP 2013524794 A JP2013524794 A JP 2013524794A JP 5579934 B2 JP5579934 B2 JP 5579934B2
Authority
JP
Japan
Prior art keywords
hook
function
thread
called
state information
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
Application number
JP2013524794A
Other languages
English (en)
Other versions
JP2013534346A (ja
Inventor
リ,ヒョン−ジュ
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.)
Fasoo com Co Ltd
Original Assignee
Fasoo com 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 Fasoo com Co Ltd filed Critical Fasoo com Co Ltd
Publication of JP2013534346A publication Critical patent/JP2013534346A/ja
Application granted granted Critical
Publication of JP5579934B2 publication Critical patent/JP5579934B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Description

本発明は、フック再進入防止装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体に係り、さらに詳細には、APIフッキング時に関数の呼び出し過程におけるフックの再帰的な進入を防止するための装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体に関する。
APIフックは、一般的なAPI呼び出し過程について、特定の操作により他の位置に関数の呼び出しフローを迂回させる技法を総称する。図1及び図2には、基本的な呼び出し構造及びフックによるAPIフィルタリング過程がそれぞれ示されている。図2に示したように、フック関数Bは、原本関数Aによる目標関数Cの呼び出し過程に介入する。このようなフック技法を完成するために導入されるフックレイヤーは、フックの影響を受けてはならない。
図3に示したようなフックレイヤーの理想的な構造は、複数の関数についてフック及び代替/フィルタリング処理を行えるように支援せねばならず、フックレイヤー自体はフックの影響を受けてはならない。このような構造を支援するために、フックレイヤーは、フック対象APIを使わないか、または、フック対象API原本関数を呼び出せるアドレスを明確に分かっていて、必要なときにフックAPIまたは原本APIを選択的に呼び出さねばならない。フックレイヤーがフック対象APIを使わない場合に、フックレイヤーの内部の動作はAPIフックと関係なくなる。しかし、フックレイヤーがフック対象APIを使わないようにすることは容易ではない。すなわち、フックレイヤーがフック対象APIを使わないためには、現実的にフック対象APIと下位原本関数に対するランタイムバイナリーとの直接的な連関のない場合にのみ可能である。したがって、この機種OSプラットホームにおけるプログラム動作を支援するエミュレータの具現、またはフックAPIをエミュレーションする形態への具現が必要であるため、このような方式はフックレイヤーの具現に適していない。
前述した理由によって、既存にはフックレイヤーがフック対象API原本関数を呼び出せるアドレスを管理するように具現しており、これに加えて補助的な方法をさらに使ってフックレイヤーがフックの影響を受けないようにしている。この時、フック対象API原本関数を呼び出せるアドレスを管理する形態でフックレイヤーを具現するプログラミング方式は、APIフックの技法によって差がある。先ず、IATフックなどのAPI呼び出し者が呼び出す関数アドレスを修正する場合に、フックレイヤーに属する*.exe、*.dllなどのランタイムモジュール単位でフック例外を行い、フックレイヤー及び下位レイヤーに属するモジュールについてはフックを行わない方式がある。このような方式において要求される条件は、いかほど正確にフックレイヤーに属するランタイムモジュールを識別できるかどうかである。次いで、フックレイヤーに属するあらゆるランタイムモジュールがフック対象APIの原本関数を呼び出せるアドレスを知り、プログラム段階で適宜なアドレスを呼び出すようにしてフックレイヤーを構成する方式がある。この方式では、フックレイヤーに属するあらゆるランタイムモジュールでフックが行われているAPIの正確なリスト及びアドレスを分かっていなければならない。
しかし、現実的に理想的なフックレイヤーを構成するために必要な条件を満たす管理/プログラミングの作成が容易ではないという問題がある。一例として、モジュール別例外処理を行う場合に機能拡張によってフックレイヤーに属するランタイムモジュールが固定的ではない可能性が高い。このような理由で、フックレイヤーの形象管理及びアップデート管理の問題が目立つしかない。またOSの形態、主要及び下位バージョン構成による例外モジュールの情報の追加される余地があるので、OSのパッチに対する検証が非常に重要になる。一方、原本APIのアドレスを直接呼び出す方式の場合に、フックレイヤー内の第3者モジュールなどのソースの修正の不可能なモジュールに対する支援が困難であるという問題があり、特に、フック対象APIの数が多くなるほどプログラムが難解になるという問題がある。
以上のような問題点を解決するために、既存には、開発者の判断によってファイルイメージの経路、ファイルイメージのパターン、電子署名の発給者のパターンなどを用いて例外処理を行っている。この場合、正確なリスト管理についての負担は低減するが、新規モジュールの追加及び第3者モジュール、フックレイヤーの下部レイヤーモジュールに対するリスト管理についての負担は依然として残っている。
本発明が解決しようとする技術的課題は、動的APIフッキング時に下位関数の原本関数の再呼び出しによるフック再進入を防止できる装置を提供するところにある。
本発明が解決しようとする他の技術的課題は、動的APIフッキング時に下位関数の原本関数の再呼び出しによるフック再進入を防止するための方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。
前記技術的課題を解決するための、本発明によるフック再進入防止装置に関する望ましい実施形態は、動的APIフッキング時にフッキングを行うためのコードであるフックの再帰的な実行と定義されるフックの再進入を防止するための装置において、前記動的APIフッキングの開始時点に呼び出されるフック関数の呼び出し如何を示す状態情報フラグを設定または解除する状態情報管理モジュール;前記フック関数の呼び出し時に前記状態情報フラグが設定されていれば、前記フック関数の呼び出しが前記フックの実行過程で行われたと判断し、元々実行の要請されたプログラムを行わせる再進入防止モジュール;を備える。
前記他の技術的課題を解決するための、本発明による記録媒体は、動的APIフッキング時にフッキングを行うためのコードであるフックの再帰的な実行と定義されるフックの再進入を防止するための方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体において、(a)原本関数または前記フックの実行過程で行われる下位関数によって、前記動的APIフッキングの開始時点に呼び出されるフック関数が呼び出されれば、前記フック関数に対応する関数情報に設定されている状態情報フラグの値を確認する段階;(b)前記状態情報フラグ値が設定されていなければ、前記フック関数の呼び出しが前記原本関数により行われると判断して前記状態情報フラグ値を設定し、前記状態情報フラグ値が設定されていれば、前記フック関数の呼び出しが前記フックの実行過程で行われたと判断し、元々実行の要請されたプログラムを行わせる段階;を含むフック再進入防止方法をコンピュータで実行させるためのプログラムを持つ。
本発明によるフック再進入防止装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体によれば、フックレイヤーとは独立的な進入/離脱レイヤーとして機能することで、フックレイヤーをフックから安全に隔離させるようになって、動的APIフッキング時にフックレイヤー内のフックルチンの実行過程で、下位関数の原本関数の再呼び出しによるフック再進入を防止できる。また応用プログラムからフックレイヤーに進入する開始点でフックの再進入如何を判断する構造を採用することで、プログラム作成時にフック再進入防止のための別途のコードを作成する負担を低減させる。
基本的な呼び出し構造及びフックによるAPIフィルタリング過程を示す図面である。 基本的な呼び出し構造及びフックによるAPIフィルタリング過程を示す図面である。 フックレイヤーの理想的な構造を示す図面である。 本発明によるフック再進入防止装置に関する望ましい実施形態の構成を示す図面である。 状態情報フラグの値による再進入防止モジュール420によるAPI呼び出し分岐過程を示す図面である。 再進入防止モジュール420によるフック再進入防止過程を示す図面である。 フック再進入を考慮しないAPIフッキング技法におけるコールスタックを示す図面である。 本発明によるコールスタックを示す図面である。 本発明によるフック再進入防止方法に関する望ましい実施形態の実行過程を示すフローチャートである。 本発明によるフック再進入防止装置及び方法で、フックレイヤーの内部で生成されるスレッドが存在しない場合の実行過程を示す図面である。 本発明によるフック再進入防止装置及び方法で、フックレイヤーの内部で生成されるスレッドが存在する場合の実行過程を示す図面である。 本発明によるフック再進入防止装置及び方法の他の実施形態によるフック再進入防止過程を示す図面である。
以下、添付した図面を参照して、本発明によるフック再進入防止装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体の望ましい実施形態について詳細に説明する。
図4は、本発明によるフック再進入防止装置に関する望ましい実施形態の構成を示す図面である。図4を参照すれば、本発明によるフック再進入防止装置に関する望ましい実施例400は、状態情報管理モジュール410及び再進入防止モジュール420を備える。
状態情報管理モジュール410は、アプリケーションの原本関数の呼び出しによって駆動されるフック関数の呼び出し時点に、状態情報フラグの値に基づいてフック関数の呼び出し地点を判断する。この時、原本関数の呼び出しがフックレイヤーの内部から行われたか、またはフックレイヤーの外部から行われたかを識別できる最小単位を設定する必要がある。本発明では、識別単位としてスレッド(thread)を使い、その理由は次の通りである。あらゆる関数は動作時点に一つのスレッドに属し、任意時点のスレッド上の関数は、フックレイヤーの内部と外部のうち一つに存在し、同時に2つの状態を持つか、または2つの状態にいずれも該当しない場合は発生しない。またフックレイヤーの内部で生成されるスレッドを除外すれば、フックレイヤーに進入した後で行われるあらゆる関数は、スレッド単位でフックレイヤーに進入した関数の下位関数である。このような状態情報フラグの値は、フック関数に対応する関数情報と設定され、メモリ430に保存される。この時、状態情報フラグの値はスレッド別に識別可能な全域データ変数、スレッド別に情報管理可能なスレッド地域保存所(Thread Local Storage:TLS)、スレッド別に情報管理可能な静的データ変数、スレッド別に情報管理可能なその他のデータ客体(例えば、Worker thread、Singleton obectなど)などに設定される。そして、状態情報管理モジュール410は、該当値が保存されているメモリ430に状態情報フラグ値を設定または解除し、再進入防止モジュール420は、該当値の保存されているメモリ430から状態情報フラグ値を読み出す。このために状態情報フラグは、進入/退出情報を識別するために少なくともブーリアン(Boolean)の形態を持たねばならない。
もし、フック関数に対応する関数情報に状態情報フラグの値が設定されていなければ、状態情報管理モジュール410は、フック関数がフックレイヤーの外部から呼び出されたと判断し、状態情報フラグの値を設定する。これとは異なってフック関数に対応する関数情報に状態情報フラグの値が設定されていれば、状態情報管理モジュール410は、フック関数がフックレイヤーの内部から呼び出されたと判断する。さらに状態情報管理モジュール410は、フックルチン上の最後の下位関数の実行による結果値がシステムレイヤーに返還されれば、フック関数に対応する関数情報に設定されている状態情報フラグの値を解除する。
再進入防止モジュール420は、フック関数の再呼び出し時にメモリ430に記録されているフック関数に対応する状態情報フラグの値に基づいて、フックルチンの実行及びフックレイヤーの離脱を選択的に行う。図5には、状態情報フラグの値による再進入防止モジュール420によるAPI呼び出し分岐過程が図示されている。図5を参照すれば、再進入防止モジュール420は、アプリケーション510からフックレイヤー520に進入する開始点であるフック関数が進入点であり、フックレイヤー520で下位レイヤーの原本APIを呼び出してシステムレイヤー530に出かける位置が離脱点になる。この時、フックレイヤー520に対する進入点はフック関数に対する呼び出し点と一致する。離脱点の具現のためにプログラミング段階で明示的に原本関数を呼び出す構造は、前述したようにあらゆるモジュールに対して具現されねばならない問題のため、本発明では進入点で共に処理する。
以上で述べた本発明によるフック再進入防止装置に関する望ましい実施例400は、実行単位に対応する複数の構成要素を備える。しかし、具現形態によって状態情報管理モジュール410及び再進入防止モジュール420は一つのモジュールに統合される。この時、本発明によるフック再進入防止装置は、システムレイヤーとフックレイヤーとの間に位置し、状態情報フラグの設定如何によってフックレイヤー上のフックルチンを行わせるか、またはシステムレイヤーに値を返還するフィルタの形態をとる。
図6には、再進入防止モジュール420によるフック再進入防止過程が示されている。図6を参照すれば、呼び出し者であるアプリケーション610がシステムレイヤー620上の原本関数Hを呼び出せば、動的APIフッキングによってフックレイヤー630自体のフックルチン(すなわち、下位関数であるH0、H1、H2、VCなど)が行われる。この過程で、もし下位関数VCが原本関数Hを再び呼び出せば、フック再進入を考慮しないAPIフッキング技法では、図7に示したようなコールスタックから分かるように、H0、H1、H2、VCなどが再び行われるという問題が生じる。これに対して本発明では、状態情報管理モジュール410がフッキング関数であるH0に対応する関数情報の状態情報フラグ値を設定し、次いで、下位関数VCが原本関数Hを再び呼び出すことでフッキング関数H0が呼び出されれば、再進入防止モジュール420は、フッキング関数H0の状態情報フラグ値を確認した後でシステムレイヤー620に値を返還する。そして、システムレイヤー620は下位関数VCに値を返還し、したがって、VCが呼び出された以後に計画されているフックルチンによって、次の下位関数であるH3が行われる。図8には、このような本発明によるフック再進入防止手続きを行う時のコールスタックが示されている。
図9は、本発明によるフック再進入防止方法に関する望ましい実施形態の実行過程を示すフローチャートである。図9を参照すれば、アプリケーション610が原本関数を呼び出すことで駆動されるか、または下位関数による呼び出しによってフック関数が呼び出されれば(S900)、フック再進入防止装置400は、フック関数に対応する関数情報に設定されている状態情報フラグの値を確認する(S910)。もし状態情報フラグ値が設定されていなければ、フック再進入防止装置400は、フック関数がフックレイヤーの外部から呼び出されたと判断し、状態情報フラグの値を設定する(S920)。この場合には、フックルチンによる下位関数が順次に行われる(S930)。これに対して状態情報フラグ値が設定されていれば、フック再進入防止装置400は、フック関数がフックレイヤーの内部から呼び出されたと判断し、システムレイヤー620に値を返還する(S940)。したがって、この場合にはシステムレイヤー620が下位関数VCに値を返還し、次いで、フックルチンによって次下位関数が行われる(S930)。次いで、フック再進入防止装置400は、フックルチン上の最後の下位関数の実行による結果値が入力されれば(S950)、システムレイヤー620に結果値を返還する(S960)。
一方、前述したような本発明によるフック再進入防止装置及び方法についての実施形態は、外部からのフックレイヤーへの最初進入時にフック関数に対応する関数情報の状態情報フラグ値を設定することで、フックルチンの実行によってフックレイヤーの外部からフック関数が再び呼び出される場合に、フック関数に対応する関数情報の状態情報フラグ値に基づいて再進入を防止できる。しかし、前述したような本発明によるフック再進入防止装置及び方法についての実施形態は、フックレイヤーの内部で生成されたスレッドによってフック関数が再び呼び出されれば、再進入防止機能が行われないという問題がある。したがって、フックレイヤーの内部で生成されるスレッドにも再進入防止機能を提供するためには、スレッドの生成を監視し、生成されたスレッドについての識別フラグを設定する構成をさらに備えねばならない。
図10は、本発明によるフック再進入防止装置及び方法で、フックレイヤーの内部で生成されるスレッドが存在しない場合の実行過程を示す図面である。図10に示された実施形態は、ファイル入出力を監視して生成されるファイルデータを暗号化するフック関数の実行過程で、フック関数の動作状況をファイルに記録するための付加的なログ関数を含む。
図10を参照すれば、アプリケーション1010がデータ書き込み関数を呼び出すことでフック関数が呼び出されれば(S1000)、フック再進入防止装置1020は、原本関数であるデータ書き込み関数に対応する状態情報フラグの値(または、フック関数に対応する状態情報フラグの値)を設定する(S1005)。次いで、フックレイヤー1030内に設定されたフックルチンによってデータの暗号化関数が呼び出され(S1010)、暗号化関数によってデータが暗号化される(S1015)。そして、フック再進入防止装置1020は、フックレイヤー1030から暗号化されたデータを受信し(S1020)、暗号化されたデータをシステムレイヤー1040に伝達する(S1025)。次いで、システムレイヤー1040は、メモリにデータを記録する(S1030)。一方、フックレイヤー1030内に設定されたフックルチンによって、ログ関数によってデータの書き込み動作についてのログデータが生成され(S1035)、生成されたログデータをメモリに書き込むためのデータ書き込み関数が再び呼び出される(S1040)。このようなデータ書き込み関数の再呼び出しによってフック関数も再び呼び出され、フック再進入防止装置1020は、データ書き込み関数に対応する状態情報フラグの値(または、フック関数に対応する状態情報フラグの値)を確認する(S1045)。前記のS1005段階で、データ書き込み関数に対応する状態情報フラグの値(または、フック関数に対応する状態情報フラグの値)が設定されたところ、フック再進入防止装置1020は、フックルチンへの進入を遮断してシステムレイヤー1040にログデータを伝達する(S1050)。次いで、システムレイヤー1040は、メモリにログデータを記録する(S1055)。以上の動作によってログ関数による再進入が防止されることで、ログデータが暗号化されずに平文に保存される。
図11は、本発明によるフック再進入防止装置及び方法で、フックレイヤーの内部で生成されるスレッドが存在する場合の実行過程を示す図面である。図11に示された実施形態は、ファイル入出力を監視して生成されるファイルデータを暗号化するフック関数の実行過程で、フック関数の動作状況をファイルに記録するための付加的なログ関数を含み、ログ関数は、内部的にWorker thread Log Threadにログデータを伝送する。この時Worker thread Log Threadは、フックレイヤーの内部における入出力を引き起こす。
図11を参照すれば、先ず、フックレイヤー1130の内部でWorker thread Log Threadが生成される(S1100)。次いで、アプリケーション1110がデータ書き込み関数を呼び出すことでフック関数が呼び出されれば(S1105)、フック再進入防止装置1120は、原本関数であるデータ書き込み関数に対応する状態情報フラグの値(または、フック関数に対応する状態情報フラグの値)を設定する(S1110)。次いで、フックレイヤー1130内に設定されたフックルチンによってデータの暗号化関数が呼び出され(S1115)、暗号化関数によってデータが暗号化される(S1120)。そして、フックレイヤー1130から暗号化されたデータが受信されれば(S1125)、フック再進入防止装置1120は、暗号化されたデータをシステムレイヤー1140に伝達する(S1130)。次いで、システムレイヤー1140はメモリにデータを記録する(S1135)。
一方、フックレイヤー1130内に設定されたフックルチンによって呼び出されたログ関数が、データの書き込み動作についてのログデータを生成する(S1140)。そして、ログ関数は、フックレイヤー1130内でWorker thread Log Threadにログデータを伝送する(S1145)。次いで、Worker thread Log Threadは、フックレイヤー1130内で生成されたログデータをメモリに書き込むためにデータ書き込み関数を呼び出す(S1150)。このようなデータ書き込み関数の再呼び出しによってフック関数も再び呼び出されるが、フック再進入防止装置1120は、データ書き込み関数(または、フック関数)の再呼び出しがフックレイヤー1130の外部からの進入ではないため、再進入と認識できなくなる。したがって、フック再進入防止装置1120は暗号化関数を呼び出し(S1155)、呼び出された暗号化関数は、ログデータについての暗号化を行う(S1160)。そして、フックレイヤー1130から暗号化されたログデータを受信すれば(S1165)、フック再進入防止装置1120は、受信された暗号化されたログデータをシステムレイヤー1140に伝達する(S1170)。次いで、システムレイヤー1140はメモリにデータを記録する(S1175)。
図10及び図11を参照して説明したように、本発明によるフック再進入防止装置及び方法についての実施形態は、フックレイヤーの内部で生成されたスレッドによって原本関数(またはフック関数)が再び呼び出される場合にフック再進入を防止できないという問題がある。このような問題を解決するためには、スレッドの生成を感知する構成要素がさらに必要である。
図12は、本発明によるフック再進入防止装置及び方法の他の実施形態によるフック再進入防止過程を示す図面である。図12に示されたフック再進入防止過程を行う装置は、図4に示された実施形態の構成要素に加えてスレッド生成感知モジュールを備える。
図12を参照すれば、先ずフック再進入防止装置1220は、フックレイヤーの状態を初期化し(S1200)、フックレイヤー1230の内部でWorker threadが生成される(S1205)。そして、フック再進入防止装置1220は、Worker threadを生成するParent Threadを監視し、Parent Threadの状態がフックレイヤー1230の内部かまたは外部かを把握する(S1210)。そして、フック再進入防止装置1220は、Parent Threadの状態がフックレイヤー1230の内部である場合に生成されるChild Threadのフックレイヤー設定情報に、Parent Threadの設定情報を相続する(S1215)。このような動作は、スレッド生成感知モジュールによって行われる。この時、スレッド生成感知モジュールは、フックレイヤー1230の内部でスレッドが生成される時点にParent Threadの状態情報を“進入”と設定するか、またはスレッドの生成時点にParent Threadのスタック情報を追跡して、特定のスレッドがフックレイヤー1230の内部で生成されたか、または外部で生成されたかを感知する。またスレッド生成感知モジュールは、スレッドの生成を把握するためにスレッド生成API(例えば、Win32システムではCreateThread、_beginthread、_beginthreadexなど)を監視せねばならず、さらにはあらゆるスレッドの生成如何を監視せねばならない。
次いで、アプリケーション1210がデータ書き込み関数を呼び出すことでフック関数が呼び出されれば(S1220)、フック再進入防止装置1220は、原本関数であるデータ書き込み関数に対応する状態情報フラグの値(または、フック関数に対応する状態情報フラグの値)を設定する(S1225)。次いで、フックレイヤー1230内に設定されたフックルチンによってデータの暗号化関数が呼び出され(S1230)、暗号化関数によってデータが暗号化される(S1235)。そしてフック再進入防止装置1220は、フックレイヤー1230から暗号化されたデータを受信し(S1240)、暗号化されたデータをシステムレイヤー1240に伝達する(S1245)。次いで、システ4ムレイヤー1240はメモリにデータを記録する(S1250)。
一方、フックレイヤー1230内に設定されたフックルチンによって呼び出されたログ関数が、データの書き込み動作についてのログデータを生成する(S1255)。そして、ログ関数は、フックレイヤー1230内でWorker thread Log Threadにログデータを伝送する(S1260)。次いで、Worker thread Log Thread関数は、フックレイヤー1230内で生成されたログデータをメモリに書き込むためにデータ書き込み関数を呼び出す(S1265)。この時、データ書き込み関数の再呼び出しによってフック関数も再び呼び出され、フック再進入防止装置1220は、Worker thread Log Thread関数のフックレイヤー設定情報を確認する(S1270)。前記のS1115段階で、Worker thread Log Thread関数の設定情報が“進入”と設定されたところ、フック再進入防止装置1220は、フックルチンへの進入を遮断してシステムレイヤー1240にログデータを伝達する(S1275)。次いで、システムレイヤー1240はメモリにログデータを記録する(S1280)。以上の動作によってログ関数による再進入が防止されることで、ログデータが暗号化されずに平文に保存される。
本発明はまた、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現できる。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取られるデータが保存されるあらゆる記録装置を含む。コンピュータで読み取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ保存装置などがあり、またキャリアウエーブ(例えば、インターネットを通じる伝送)の形態で具現されるものも含む。またコンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散され、分散方式でコンピュータで読み取り可能なコードが保存されて行われる。
以上、本発明の望ましい実施形態について図示して説明したが、本発明は前述した特定の望ましい実施形態に限定されず、特許請求の範囲で請求する本発明の趣旨を逸脱せずに、当業者ならば多様な変形実施が可能であるということはいうまでもなく、かかる変更は、特許請求の範囲に記載の範囲内にある。

Claims (6)

  1. 動的APIフッキング時にフッキングを行うためのコードであるフックの再帰的な実行と定義されるフックの再進入を防止するための装置において、
    前記動的APIフッキングの開始時点に呼び出されるフック関数の呼び出し如何を示す状態情報フラグを設定または解除する状態情報管理モジュールと、
    前記フック関数の呼び出し時に前記状態情報フラグが設定されていれば、前記フック関数の呼び出しが前記フックの実行過程で行われたと判断し、前記フック関数への再進入を防止して値を返還する再進入防止モジュールと、を備えることを特徴とするフック再進入防止装置。
  2. 前記状態情報フラグは、前記フック関数に対応してスレッド別に識別可能な全域データ変数、スレッド地域保存所、静的データ変数またはデータ客体に記録されることを特徴とする請求項1に記載のフック再進入防止装置。
  3. 前記フックの実行過程でスレッドが生成される時点に生成されたスレッドの状態情報を設定するスレッド生成感知モジュールをさらに備え、
    前記再進入防止モジュールは、前記スレッド生成感知モジュールによって状態情報が設定されているスレッドによって前記フック関数が呼び出されれば、前記フック関数の呼び出しが前記フックの実行過程で行われると判断することを特徴とする請求項1または2に記載のフック再進入防止装置。
  4. 動的APIフッキング時にフッキングを行うためのコードであるフックの再帰的な実行と定義されるフックの再進入を防止するための方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体において、
    (a)原本関数または前記フックの実行過程で行われる下位関数によって、前記動的APIフッキングの開始時点に呼び出されるフック関数が呼び出されれば、前記フック関数に対応する関数情報に設定されている状態情報フラグの値を確認する段階と、
    (b)前記状態情報フラグ値が設定されていなければ、前記フック関数の呼び出しが前記原本関数により行われると判断して前記状態情報フラグ値を設定し、前記状態情報フラグ値が設定されていれば、前記フック関数の呼び出しが前記フックの実行過程で行われたと判断し、前記フック関数への再進入を防止して値を返還する段階と、をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
  5. 前記状態情報フラグは、前記フック関数に対応してスレッド別に識別可能な全域データ変数、スレッド地域保存所、静的データ変数またはデータ客体に記録されることを特徴とする請求項4に記載の記録媒体。
  6. 前記フックの実行過程でスレッドの状態情報を設定する段階をさらに含み、
    前記(b)段階で、前記状態情報が設定されているスレッドによって前記フック関数が呼び出されれば、前記フック関数の呼び出しが前記フックの実行過程で行われると判断することを特徴とする請求項4または5に記載の記録媒体。
JP2013524794A 2010-08-20 2011-08-18 フック再進入防止装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体 Active JP5579934B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2010-0080926 2010-08-20
KR20100080926A KR101052586B1 (ko) 2010-08-20 2010-08-20 훅 재진입 방지 장치 및 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
PCT/KR2011/006062 WO2012023809A2 (ko) 2010-08-20 2011-08-18 훅 재진입 방지 장치 및 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체

Publications (2)

Publication Number Publication Date
JP2013534346A JP2013534346A (ja) 2013-09-02
JP5579934B2 true JP5579934B2 (ja) 2014-08-27

Family

ID=44924192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013524794A Active JP5579934B2 (ja) 2010-08-20 2011-08-18 フック再進入防止装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体

Country Status (5)

Country Link
US (1) US9098356B2 (ja)
EP (1) EP2608021A4 (ja)
JP (1) JP5579934B2 (ja)
KR (1) KR101052586B1 (ja)
WO (1) WO2012023809A2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220363277A1 (en) * 2021-05-13 2022-11-17 Dana Belgium N.V. Driveline component control and fault diagnostics

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9048A (en) * 1852-06-22 Heat-radiator
JPH06332720A (ja) * 1993-05-20 1994-12-02 Hitachi Ltd シグナル制御方法
US6148325A (en) * 1994-06-30 2000-11-14 Microsoft Corporation Method and system for protecting shared code and data in a multitasking operating system
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
IL132916A (en) * 1999-11-14 2004-02-08 Mcafee Inc Method and system for intercepting an application program interface
GB0011020D0 (en) 2000-05-09 2000-06-28 Ibm Intercepting system API calls
US6874149B1 (en) * 2000-06-28 2005-03-29 Microsoft Corporation Hooking of replacement and augmented API functions
US7426737B2 (en) * 2004-01-26 2008-09-16 Lucent Technologies Inc. Method and apparatus for operating an open API network having a proxy
US7607173B1 (en) * 2005-10-31 2009-10-20 Symantec Corporation Method and apparatus for preventing rootkit installation
US20070261044A1 (en) 2006-05-04 2007-11-08 Jonathan Clark Chained Hook Function Serving Multiple Versions Of Identically Named Dynamically Loaded Libraries
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US20080059676A1 (en) * 2006-08-31 2008-03-06 Charles Jens Archer Efficient deferred interrupt handling in a parallel computing environment
KR100843701B1 (ko) * 2006-11-07 2008-07-04 소프트캠프(주) 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법
US8793662B2 (en) 2008-03-25 2014-07-29 Microsoft Corporation Runtime code hooking for print driver and functionality testing
US8307246B2 (en) 2008-10-29 2012-11-06 Aternity Information Systems Ltd. Real time monitoring of computer for determining speed of various processes
JP5404030B2 (ja) * 2008-12-26 2014-01-29 デジタルア−ツ株式会社 電子ファイル送信方法
WO2011131561A1 (en) 2010-04-21 2011-10-27 Nestec S.A. Coffee extract comprising a multivalent ion

Also Published As

Publication number Publication date
US9098356B2 (en) 2015-08-04
EP2608021A4 (en) 2014-03-19
US20130160033A1 (en) 2013-06-20
KR101052586B1 (ko) 2011-07-29
JP2013534346A (ja) 2013-09-02
WO2012023809A3 (ko) 2012-05-10
WO2012023809A2 (ko) 2012-02-23
EP2608021A2 (en) 2013-06-26

Similar Documents

Publication Publication Date Title
US10089460B2 (en) Behavior-based malicious code detecting apparatus and method using multiple feature vectors
JP5861228B2 (ja) 仮想パーティションを監視するためのシステム、装置、プログラムおよび方法
US8875165B2 (en) Computing device having a DLL injection function, and DLL injection method
JP2006031109A (ja) 管理システム及び管理方法
US10691659B2 (en) Integrating copy data tokens with source code repositories
JP2018028907A (ja) 要求オリジネータを識別するためのリモートプロシージャリンケージにわたるシステム動作のトレーシング
US20190286820A1 (en) Apparatus and method for detecting container rootkit
CN109814946A (zh) 一种在XenServer中实现分布式存储的方法和装置
JP2017033552A (ja) ユーザモードコンポーネントインジェクションとアトミックなフック
US10621063B2 (en) System and method for dynamic domain-specific sequence diagram visualization
JP5579934B2 (ja) フック再進入防止装置及びその方法をコンピュータで実行させるためのプログラムを記録した記録媒体
KR20140134987A (ko) 데이터 프로세싱 시스템 보안 장치와 보안방법
US11586459B2 (en) Generating and preserving default configurations of a system
JP5712243B2 (ja) 監視処理方法、監視処理装置及び監視処理システム
CN107958414B (zh) 一种清除cics系统长交易的方法及系统
US11921874B2 (en) Method and system for protecting file using class distribution and sequential memory loading
JP2017174426A (ja) ユーザモードコンポーネント注入技法
US20210311755A1 (en) Schema-based classification of data on a system
JP2021005375A (ja) 難読化解除方法および装置
JP6307956B2 (ja) 情報処理装置及び情報処理方法
CN110888717A (zh) Hdfs的目录操作的事务控制方法及装置
JP6497278B2 (ja) ログ管理プログラム、ログ管理方法およびログ管理装置
JP7076014B2 (ja) プログラム保護のためのJavaデバッガ遮断方法およびシステム
EP3070610B1 (en) Information processing device, control method thereof, and recording medium
WO2018068202A1 (en) Virtualized network function security wrapping orchestration in the cloud environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130401

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140508

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140709

R150 Certificate of patent or registration of utility model

Ref document number: 5579934

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250