(57)【要約】本発明は、コンピュータウイルスの治療方法であって、(Ａ)ウイルスに感染される領域に対する情報を検索するために使用する関数が変更された場合、その関数を正常状態に復元する段階と、(Ｂ)正常の関数を使用して検索したメモリに常住するプロセス及び該当ファイルに対し、感染の可否を診断して治療を行う段階とを含むことを特徴とするウイルスの治療方法を提供する。上記の方法によると、ウイルスに感染される領域に対する情報、特にメモリに常住する全てのプロセス及びスレッドをくまなくかつ正確に検査することができ、メモリを感染させるウイルスを完全に治療することができる。
2006522960.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータウイルスの治療方法において、
(Ａ)ウイルスに感染される領域に対する情報を検索するために使用する関数が変更された場合、その関数を正常状態に復元する段階と、
(Ｂ)正常の関数を使用して検索したメモリに常住するプロセス及び当該ファイルに対し、ウイルス感染可否の診断及び治療を行う段階とを含むコンピュータウイルスの治療方法。
【請求項２】
前記段階(Ｂ)の正常の関数とは、
使用する関数が変更されていないと判断された場合は当該関数であり、または、変更されたと判断された関数である場合は、予め保存した関数を使用して復元した関数であることを特徴とする請求項１に記載のコンピュータウイルスの治療方法。
【請求項３】
前記段階(Ｂ)は、
メモリに常住するプロセスを診断する段階と、
前記感染されたプロセスが治療可能であるかの可否を判断し、前記感染されたプロセスが治療可能であると判断された場合、前記プロセスを治療し、前記感染されたプロセスが治療不可能であると判断された場合、前記プロセスを終了する段階と、
前記感染されたプロセスに該当するファイルを検索し、検索されたファイルを診断及び治療する段階とを含むことを特徴とする請求項１に記載のコンピュータウイルスの治療方法。
【請求項４】
前記段階(Ｂ)のウイルス感染可否の診断及び治療を行う段階は、メモリのスレッド領域でさらに行われることを特徴とする請求項１に記載のコンピュータウイルスの治療方法。
【請求項５】
前記段階(Ｂ)は、
メモリに常住するプロセスを診断する段階と、
前記感染されたプロセスが治療可能であるかの可否を判断し、前記感染されたプロセスが治療可能であると判断された場合、前記プロセスを治療し、前記感染されたプロセスが治療不可能であると判断された場合、前記プロセスを終了する段階と、
前記感染されたプロセスに該当するファイルを検索し、検索されたファイルを診断及び治療する段階と、
メモリのスレッド領域を診断及び治療する段階とをさらに含むことを特徴とする請求項４に記載のコンピュータウイルスの治療方法。
【請求項６】
前記段階(Ｂ)は、
メモリのスレッド領域を診断及び治療する段階と、
メモリに常住するプロセスを診断する段階と、
前記感染されたプロセスが治療可能であるかの可否を判断し、前記感染されたプロセスが治療可能であると判断された場合、前記プロセスを治療し、前記感染されたプロセスが治療不可能であると判断された場合、前記プロセスを終了する段階と、
前記感染されたプロセスに該当するファイルを検索し、検索されたファイルを診断及び治療する段階とを含むことを特徴とする請求項４に記載のコンピュータウイルスの治療方法。
【請求項７】
前記関数は、ＤＯＳ、マッキントッシュ、ウインドウズ、ＯＳ/２、ユニックス、或はリナックスによって提供されることを特徴とする請求項１に記載のコンピュータウイルスの治療方法。
【請求項８】
前記関数は、応用プログラムインターフェース(ＡＰＩ)関数またはシステムコールであることを特徴とする請求項１に記載のコンピュータウイルスの治療方法。
【請求項９】
(Ａ)ウイルスに感染される領域に対する情報を検索するために使用する関数が変更された場合、その関数を正常状態に復元する段階と、
(Ｂ)正常な関数を使用して検索したメモリに常住するプロセス及び当該ファイルに対し、ウイルス感染可否の診断及び治療を行う段階とを実行するためのプログラムを記録したコンピュータ判読可能の記録媒体。
【請求項１０】
前記段階(Ｂ)の正常の関数とは、
使用する関数が変更されていないと判断された場合は当該関数であり、または、変更されたと判断された関数である場合は、予め保存した関数を使用して復元した関数であることを特徴とする請求項９に記載のコンピュータ判読可能の記録媒体。
【請求項１１】
前記段階(Ｂ)は、
メモリに常住するプロセスを診断する段階と、
前記感染されたプロセスが治療可能であるかの可否を判断し、前記感染されたプロセスが治療可能であると判断された場合、前記プロセスを治療し、前記感染されたプロセスが治療不可能であると判断された場合、前記プロセスを終了する段階と、
前記感染されたプロセスに該当するファイルを検索し、検索されたファイルを診断及び治療する段階とを含むことを特徴とする請求項９に記載のコンピュータ判読可能の記録媒体。
【請求項１２】
前記段階(Ｂ)のウイルス感染可否の診断及び治療を行う段階は、メモリのスレッド領域でさらに行われることを特徴とする請求項９に記載のコンピュータ判読可能の記録媒体。
【請求項１３】
前記段階(Ｂ)は、
メモリに常住するプロセスを診断する段階と、
前記感染されたプロセスが治療可能であるかの可否を判断し、前記感染されたプロセスが治療可能であると判断された場合、前記プロセスを治療し、前記感染されたプロセスが治療不可能であると判断された場合、前記プロセスを終了する段階と、
前記感染されたプロセスに該当するファイルを検索し、検索されたファイルを診断及び治療する段階と、
メモリのスレッド領域を診断及び治療する段階とをさらに含むことを特徴とする請求項１２に記載のコンピュータ判読可能の記録媒体。
【請求項１４】
前記段階(Ｂ)は、
メモリのスレッド領域を診断及び治療する段階と、
メモリに常住するプロセスを診断する段階と、
前記感染されたプロセスが治療可能であるかの可否を判断し、前記感染されたプロセスが治療可能であると判断された場合、前記プロセスを治療し、前記感染されたプロセスが治療不可能であると判断された場合、前記プロセスを終了する段階と、
前記感染されたプロセスに該当するファイルを検索し、検索されたファイルを診断及び治療する段階とを含むことを特徴とする請求項１２に記載のコンピュータ判読可能の記録媒体。
【請求項１５】
前記関数は、応用プログラムインターフェース関数またはシステムコールであることを特徴とする請求項９に記載のコンピュータ判読可能の記録媒体。
【請求項１６】
ウイルスに感染される領域に対する情報を検索するために使用する関数が変更された場合、その関数を正常状態に復元するための復元手段と、
正常状態の関数を使用して、メモリに常住するプロセスのリスト及び前記各プロセスのエントリーポイントを検索し、メモリページで前記プロセスのエントリーポイントを検査することによって、前記プロセスがウイルスに感染されたかの可否を診断し、前記プロセスが感染された場合、治療する過程を行うプロセス治療手段と、
前記感染された各プロセスに該当するファイルを検索し、検索されたファイルを診断及び治療するファイル治療手段とを含むコンピュータウイルスの治療装置。
【請求項１７】
前記メモリのスレッド領域を診断及び治療するスレッド治療手段をさらに含むことを特徴とする請求項１６に記載のコンピュータウイルスの治療装置。
【請求項１８】
前記関数は、ＤＯＳ、マッキントッシュ、ウインドウズ、ＯＳ/２、ユニックス、或はリナックスによって提供されることを特徴とする請求項１６に記載のコンピュータウイルスの治療装置。
【請求項１９】
前記関数は、応用プログラムインターフェース(ＡＰＩ)関数またはシステムコールであることを特徴とする請求項１６に記載のコンピュータウイルスの治療装置。
【請求項２０】
前記コンピュータウイルス治療装置は、ＰＣ、ＰＤＡ、携帯電話、半導体製造装備を含む産業用装備に適用されるハードウェア装置であることを特徴とする請求項１６に記載のコンピュータウイルスの治療装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに保存されたファイルまたはコンピュータで実行中のプロセスからウイルスを診断し、ウイルスに感染されたファイルまたはプロセスを治療する方法、ウイルスの治療プログラムを記録したコンピュータ判読可能の記録媒体及びウイルスの治療装置に関する。
【０００２】
より詳しくは、ウイルスに感染される可能性のある領域に対する情報、特にメモリに常住する全てのプロセス及びスレッドをくまなくかつ正確に検査することができ、又、メモリを感染させるウイルスを完全に治療できる方法と、記録媒体及び治療装置に関するものである。
【背景技術】
【０００３】
コンピュータでプログラムが実行されるとき、当該のプログラムのプロセスはコンピュータのメモリに常住する。一般的に、ウイルスの感染対象は、メモリに常住するプロセスやハードディスクなどの記憶装置に保存されたプログラムファイルを目標とし、ウイルスに感染された一つのプロセスが他のプロセスを感染させることによって、コンピュータウイルスは伝播されていく。
【０００４】
以下、従来のメモリを感染させるウイルスの治療方法の１例を説明する。
【０００５】
まず、メモリに常住するプロセスのリストを検索し、それに該当するファイルがウイルスに感染されたかの可否を診断する。診断の結果、感染されたファイルが存在すると判断された場合、メモリに常住する当該のプロセスをキル(kill)する。その後、ハードディスクに保存された感染ファイルを治療した後、そのファイルを再実行することによって、正常的なプロセスをメモリに常住させる方法を使用する。
【０００６】
しかし、最近のコンピュータウイルスはワクチンプログラムによってウイルスに感染される領域を検索するとき、ウイルスが、先に実行されて検索結果からウイルスが検索領域に存在しないように見られるため、検索結果から漏落されることになる。
【０００７】
前記のように、メモリに常住するプロセスリストからウイルスに感染されたプロセスが検索されなくなり、従って、従来の方法によっては、ワクチンプログラムを用いてウイルスを確実に診断することができないという問題があった。
【０００８】
さらに、従来の方法では、ファイルは感染させず、プロセスのみに感染するウイルスは確実に診断することができなく、又、プロセスに従属してメモリ上で実行中のスレッド(Thread)だけ感染した場合も、メモリがウイルスに感染されたかの可否を全然診断できないという問題があった。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、前記従来の問題を解決するためになされた発明であって、本発明の目的は、ウイルスに感染される領域に対する情報、特に、メモリに常住する全てのプロセス及びスレッドをくまなくかつ正確に検査することができ、メモリを感染させるウイルスを完壁に治療することができる方法を提供することにある。
【００１０】
本発明の他の目的は、前記ウイルスの治療方法を実行するためのプログラムを記録したコンピュータ判読可能の記録媒体を提供することにある。
【００１１】
本発明のさらなる他の目的は、ＰＣ、ＰＤＡ、携帯電話、半導体製造装備、その他の産業用装備などに適用されるハードウエア装置を含むコンピュータウイルス治療装置を提供することにある。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために、本発明の第１の側面は、(Ａ)ウイルスに感染される領域に対する情報を検索するために使用する関数が変更された場合、その関数を正常状態に復元する段階と、(Ｂ)正常の関数を使用して検索したメモリに常住するプロセス及び当該ファイルに対し、ウイルス感染可否の診断及び治療を行う段階とを含むコンピュータウイルスの治療方法を提供する。
【００１３】
本発明の第２の側面及び第３の側面は、ウイルス感染可否の診断及び治療を行う段階が、メモリのスレッド領域でさらに行われるコンピュータウイルスの治療方法を提供する。
【００１４】
また、本発明は、(Ａ)ウイルスに感染される領域に対する情報を検索するために使用する関数が変更された場合、その関数を正常状態に復元する段階と、(Ｂ)正常の関数を使用して検索したメモリに常住するプロセス及び当該ファイルに対し、ウイルス感染可否の診断及び治療を行う段階とを実行するためのプログラムを記録したコンピュータ判読可能の記録媒体を提供する。
【００１５】
以下、本発明は、代表的な運営体制であるウインドウズに限定し図面に基づいて説明する。しかし、本発明は、ウインドウズのみに限定されるものではなく、当業者であれば、他の類似した運営体制にも適用されることは容易に理解できるであろう。
（本明細書上の用語の定義）
ウイルス：使用者が認知しない間にコンピュータプログラムや実行可能な部分を変更し、自己または変更されたプログラムの一部を他のコンピュータプログラムに複写する一種のプログラムであり、通常、自己複製、感染、破壊作業などを行う小容量のプログラムを意味する。このような全ての種類のウイルス及び将来発生しうる如何なる形態のウイルスも、本発明の技術的思想が適用されるウイルスの範囲内に含まれる。
【００１６】
ウイルスに感染される領域：通常、ウイルスに感染される可能性のある領域である記憶装置であって、主記憶装置及び補助記憶装置を全て含む。すなわち、ウイルスに感染される領域は、一般的にウイルスに感染される全ての対象を意味しており、メモリ、ファイル、サービス、レジストリ、ＴＣＰ/ＩＰパケットポート、ブートセクタなどを含む。
【００１７】
運営体制：制限されたシステムの資源を効率的に管理及び運営することによって使用者に便宜性を提供する、人間と機械とのインターフェースの役割を行うプログラムを意味する。このような運営体制は、ＤＯＳ、マッキントッシュ、ウインドウズ、ＯＳ/２、ユニックス、リナックスなどを含む。
【００１８】
ウイルスに感染される領域に対する情報を検索するために使用する'関数’:前記運営体制によって提供される関数であり、応用プログラムインターフェース(ＡＰＩ)、システムコールなどを含む。
【００１９】
プロセス：１つの独立的なプログラムの実行単位を意味する。
【００２０】
プロセスキル（Process  kill）：プロセスの終了、すなわち、メモリから該当プロセスを除去することをいう。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面を参照して本発明の好適な実施形態を詳細に説明する。図面において、同一ないし類似の要素は、互いに異なる図に示されていても、同一符号で示す。
【００２２】
図１は、本発明によるウイルスに感染されたプロセスの治療方法を示した模式図である。ここで、図１の図面符号１はメモリ、２はプロセスリスト、３は前記プロセスリスト２とマッピングされるプロセス領域、４は記憶装置をそれぞれ示している。
【００２３】
以下、図１に示した治療方法を例にして本発明を説明する。まず、メモリ１でプロセスＡからＣのプロセスリスト２及びエントリーポイント(EntryPoint;ＥＰ)を検索し、各プロセスがウイルスに感染されたかの可否を診断する（ａ）。もし、プロセスの一つであるプロセスＢが復元不可能の程度に損傷された場合、その損傷されたプロセスをプロセス領域３でキル(kill)する。このとき、損傷されたプロセスをキルする前に、確認ウインドウを通して確認することが好ましい。プロセスをキルした後、記憶装置４でプロセスＢのファイルを検索する(ｂ)。プロセスＢの検索されたファイルに対するウイルスの診断及び治療を行った後、プロセスＢの治療されたファイルを再実行する(ｃ)。上記の過程により、メモリ１には、ウイルスが治療されたプロセスＢが常住することになる(ｄ)。
【００２４】
前述の治療方法のルーチンは、前記(ｃ)段階で、治療されたプロセスのファイルを再実行させずに終了することもできるが、以下、治療されたファイルを再実行する場合を最も好ましい例として説明する。
【００２５】
ほとんどのワクチンプログラムは、ウイルスに感染される領域に対する情報を検索するためにＡＰＩ関数を使用する。
【００２６】
本発明によるウイルスの治療方法は、まず、各ＡＰＩ関数のバイナリコードが正常であるかを確認するために、ウイルスに感染されていないＡＰＩ関数のバイナリコードを予め保存する過程を含む。このとき、ＡＰＩ関数のバイナリコードは、各運営体制別に保存することが好ましい。
【００２７】
以上の過程によって、ワクチンプログラムが、予め保存されたＡＰＩ関数のバイナリコードと、ウイルスに感染される領域に対する情報を検索するために使用する各ＡＰＩ関数のバイナリコードとを比較することによって、バイナリコードが正常であるかの可否を確認することができる。
【００２８】
ウイルスに感染される領域に対する情報を検索するために使用するワクチンプログラムのＡＰＩ関数を列挙すると、次のようなものがある。
NTDLL.DLL::NtQuerySysteminformation
NTDLL.DLL::NtResumeThread
NTDLL.DLL::LdrGetDIIHandle
KERNEL32.DLL::FindFirstFileExW
KERNEL32.DLL::FindNextFileW
ADVAPI32.DLL::EnumServicesStatusA
ADVAPI32.DLL::EnumServicesStatusW
ADVAPI32.DLL::RegEnumKeyExW
ADVAPI32.DLL::RegEnumKeyW
IPHLPAPI.DLL::GetTcpTableFromStack
IPHLPAPI.DLL::GetUdpTableFromStack
例えば、WinXPに用いるNTDLL.DLL::NtQuerySysteminformation関数がウイルスに感染された場合、メモリに常住するコードは、下記のように変更される。次の関数の括弧内にあるコードは、運営体制によって変わることもある。
【００２９】
【表１】
2006522960.tif 000003
前記のようにＡＰＩ関数のコードが変更されると、ＡＰＩ関数が正常に実行される前にウイルスが先行して実行されることになる。ウイルスは、ＡＰＩ関数の結果値に自己が存在する領域に対する情報が出力されないようにする。ＡＰＩ関数が提供する結果のみによってはウイルスの感染を診断することができない。
【００３０】
本発明は、上記の問題を解決するために、正常のＡＰＩ関数のコードを予めワクチンプログラムまたは記憶装置(例えば、ハードディスク)などに保存しておき、この保存されたコードと、ウイルスに感染される領域に対する情報を検索するために使用するＡＰＩ関数のコードとを比較することによって、該当コードが正常であるかの可否を確認することができる。
【００３１】
前述の比較過程において、メモリに常住するウイルスによってワクチンプログラムが感染されるとしても、本出願人によって登録された韓国特許登録第０３７０２２９号に開示された方法によって治療が可能である。
【００３２】
前記コードの比較結果に基づいてＡＰＩ関数にコードの変更がないと判断された場合、メモリに常住するプロセスをＡＰＩ関数に基づいて検索し、メモリのプロセスを診断及び治療する。もし、メモリのスレッド領域を診断及び治療しようとする場合は、プロセスの検索に先立って、スレッド領域をＡＰＩ関数に基づいて検索した後に診断及び治療しても良い。
【００３３】
一方、コードの比較結果に基づいてＡＰＩ関数にコードの変更があると判断された場合、ウイルスに感染されたプロセスを検索することが不可能であるため、この場合、コードの変更されたＡＰＩ関数を予め保存したコードを使用して復元する。その後、復元されたＡＰＩ関数に基づいてプロセスまたはスレッド領域を検索した後に診断及び治療を行うと良い。
【００３４】
前述の過程を通して、ＡＰＩ関数は、無欠性を維持するようになる。前述の過程では、ウイルスに感染される領域に対する情報を検索するために使用する全てのＡＰＩ関数を予め保存したが、メモリに常住するプロセスを検索するために使用するＡＰＩ関数のみを予め保存することもできる。
【００３５】
ウイルスの中には、メモリのプロセス領域のみを感染し、ファイル領域は感染させない種類(例えば、コードレッド(code red)、スラマー(slammer)など)がある。このような種類のウイルスを治療するためには、メモリのプロセス領域を診断する必要がる。
【００３６】
この場合、まず、ＡＰＩ関数を使用して、メモリに常住するプロセスリスト及びプロセスの各エントリーポイント(ＥＰ)を探す。このときに使用するＡＰＩ関数は、NTDLL.DLL::NtQuerySysteminformationやNTDLL.DLL::LdrGetDIIHandleである。
【００３７】
次に、メモリページで、該当プロセスのエントリーポイント(ＥＰ)から該当プロセスがウイルスに感染されたかの可否を診断する。プロセスがワクチンプログラムによって治療可能なウイルスに感染された場合、このウイルスをワクチンプログラムを使用して直に治療を行う。
【００３８】
一方、メモリに常住するプロセスがウイルスによって深刻に損傷された場合は治療が不可能であるため、前記のプロセスをキルする。例えば、メモリにプロセスＡ、Ｂ、Ｃが常住しており、プロセスＢがウイルスに深刻に損傷されて復元不可能である場合、前記プロセスＢをキルする。(図１を参照)
この場合、前記プロセスＢをキルする前に、プロセスＢをキルするという確認メッセージを使用者にディスプレイして、使用者にプロセスＢのキルを確認させることが好ましい。前記メッセージをディスプレイする理由は、現在実行中のプロセスＢがワクチンプログラムによって任意的に終了するので、プロセスＢによって作業中であった内容が消去されることを防止し、かつ、使用者が前記メッセージに対応して作業の内容を保存することができる時間を与えるためである。
【００３９】
使用者がメッセージに対応して確認ボタンをクリックすることによって、プロセスＢがキルされる。
【００４０】
その後、記憶装置(例えば、ハードディスク)で、感染されたプロセスに該当するファイルを検索する。図１を例に挙げると、プロセスＢに該当するファイルを記憶装置で検索する。
【００４１】
ハードディスクに該当ファイルが検索されない場合、ワクチンプログラムを終了する。
【００４２】
一方、ハードディスクに感染されたプロセスに該当するファイルが存在する場合、このファイルがウイルスに感染されたかを診断し、ファイルが感染されたと判断される場合には治療を行う。また、必要に応じては、メモリのスレッド領域の診断及び治療過程をさらに行うことが好ましいが、この過程の説明は、別途に後述する。
【００４３】
記憶装置に保存されたファイルを治療した後に、このファイルを再実行することが好ましい。ファイルが再実行されると、メモリにはウイルスに感染されていないプロセスＢが常住することになるので、ウイルスを完全に治療するようになる。ここで、プロセスＢをメモリに常住させる理由は、プロセスＢが運営体制に用いられる場合、プロセスＢが治療過程でキルされた状態では運営体制が正常に作動する保障がないためである。
【００４４】
プロセスＢが再実行されるとしても、深刻に損傷されたプロセスが既にキルされた状態であるため、記憶装置に保存されたファイルは感染されることはない。
【００４５】
メモリには、プロセス領域とは別途にスレッド領域が存在する。スレッド領域を感染させる各ウイルス(例えば、Elkern)は、各プロセスのスレッド領域に、ウイルスに感染されたスレッドを追加することによってスレッド領域を感染させる。
【００４６】
したがって、追加されたスレッドをキルすると、現在実行中のプロセスには全く影響を及ぼすことなく、ウイルスを治療することができる。
【００４７】
図２は、本発明によるスレッド領域に存在するウイルスの診断/治療方法を示した模式図である。まず、スレッド領域に存在するウイルスを診断/治療するためには、メモリに常住する各プロセスに対するスレッドリスト及び各スレッドのエントリーポイント(ＥＰ)を探すべきである。ここにおいても前述したように、ＡＰＩ関数(例えば、NTDLL.DLL::NtResumeThread)を使用して、スレッドリスト及び各スレッドのエントリーポイントを探すことができる。
【００４８】
その後、メモリページで該当スレッドのエントリーポイントから検査することによって、該当スレッドがウイルスに感染されたかの可否を診断する。診断の結果、ウイルスに感染されたスレッド(図２の黒色付の丸)がある場合、このスレッドをメモリからキルして取り除く。従って、現在実行中のプロセスをキルする必要なしに、ウイルスを治療することができる。
【実施例】
【００４９】
以下、本発明を図３乃至図５の好ましい実施例に基づいてより詳細に説明する。ただ、これら実施例は、本発明の内容を理解するために提示されたものであり、本発明の権利範囲は、これら実施例に限定されるものではない。
【００５０】
まず、図３は、本発明の第１の側面による好ましい実施例を示している。この実施例によると、ウイルスに感染されていない正常的なＡＰＩ関数のバイナリコードは、ワクチンプログラムまたは記憶装置(例えば、ハードディスク)に予め保存されている。ステップ３０１では、前記保存されたコードと、ウイルスに感染される領域に対する情報を検索するために使用するＡＰＩ関数のコードとを比較する。ステップ３０２で、比較されたコードが同一であると判断されてＡＰＩ関数にコード変更がない場合、ステップ３０４に進んでウイルスに感染されたプロセスがあるかを診断する。一方、ステップ３０２で、ＡＰＩ関数にコード変更があると判断された場合、このコード変更されたＡＰＩ関数を予め保存したコードを使用して復元し(ステップ３０３)、ステップ３０４に進む。
【００５１】
ステップ３０４で、メモリに常住するプロセスがウイルスに感染されたかを診断し、ステップ３０５で、感染されたプロセスが存在すると判断された場合、ステップ３０６で、感染されたプロセスが治療可能であるかの可否を判断する。ステップ３０６で、感染されたプロセスが治療可能であると判断された場合、ステップ３１１で感染されたプロセスを治療し、ステップ３０８で、感染されたプロセスに該当するファイルを記憶装置で検索する。一方、感染されたプロセスが治療不可能であると判断された場合、ステップ３０７で該当プロセスをキルした後、ステップ３０８に進んで、感染されたプロセスに該当するファイルを記憶装置で検索する。ステップ３０９で、感染されたプロセスに該当するファイルが記憶装置に存在すると判断された場合、ステップ３１０で該当ファイルを診断及び治療した後、これを再実行させる。一方、ステップ３０９で、感染されたプロセスに該当するファイルが記憶装置に存在しないと判断された場合、その過程は直に終了される。
【００５２】
前記の過程によると、ＡＰＩ関数の無欠性が保証され、メモリを感染させるウイルスを完全に治療することができる。
【００５３】
図４は、本発明の第２の側面による好ましい実施例を示している。この実施例は、図３の第１の側面による実施例とは異なり、スレッド領域を診断及び治療する過程をさらに設けている。前記実施例によるメモリのスレッド領域に対する診断及び治療過程(ステップ４１２)は、ファイルの診断、治療及び再実行過程(ステップ４１０)が終了した後で行われる。
【００５４】
図５は、本発明の第３の側面による好ましい実施例であって、メモリのスレッド領域に対する診断及び治療過程がプロセスの診断過程以前に行われる点で、本発明の第２の側面による実施例と異なる。すなわち、本実施例によると、ステップ５０４でメモリのスレッド領域を先に診断及び治療した後、ステップ５０５でメモリに常住するプロセスが感染されたかの可否を診断し、ステップ５０６で感染されたプロセスが存在すると判断された場合、ステップ５０７で、感染されたプロセスが治療可能であるかを判断する。ステップ５０７で、感染されたプロセスが治療可能であると判断された場合、ステップ５１１で該当プロセスを治療し、ステップ５０９で、感染されたプロセスに該当するファイルを記憶装置で検索する。一方、感染されたプロセスが治療不可能であると判断された場合、ステップ５０８で該当プロセスをキルした後、ステップ５０９で、感染されたプロセスに該当するファイルを記憶装置で検索する。もし、感染されたプロセスに該当するファイルが記憶装置に存在する場合、ステップ５１２で該当ファイルを診断及び治療した後、これを再実行させる。一方、ステップ５１０で該当ファイルが記憶装置に存在しないと判断された場合、ワクチンプログラムは直ちに終了させる。
【００５５】
前記本発明の第２及び第３の側面による実施例におけるスレッド領域の診断及び治療過程は、プロセスの診断及び治療過程の以前またはファイル診断及び治療以後のどのステップでも行うことができる。
【００５６】
一方、本発明の他の実施例によって、図６に示すようにウイルス治療方法を行うこともできる。図６のステップ６０１〜６０３は、図３のＡＰＩ関数復元過程(ステップ３０１〜３０３)と異なっている。以下、これを詳しく説明する。
【００５７】
ウイルスが、ＡＰＩ関数を感染させるとき、ＡＰＩ関数の実行前に自体が実行されるようにＡＰＩ関数のコードを変更し、ＡＰＩ関数の元のコード(前記WinXPのNTDLL.DLL::NtQuerySysteminformation関数を例に挙げると、B8 AC 00 00 00)を自体の実行コード内部に有している。
【００５８】
もし、ウイルスが元のコードを有していない場合、深刻なシステムエラーをもたらすため、ウイルスの実行が終った後にＡＰＩ関数を実行するためには、ウイルスは、元のコードを必ず有していることが必要である。
【００５９】
したがって、定型化されたウイルスの感染パターンを分析し、その分析によって得られた該当ウイルスが有する元のコードの位置に対する情報を予め保存し、前記保存された情報を使用して、ウイルスに感染されたＡＰＩ関数の変更されたコードを元のコードに復元することによって、感染されたＡＰＩ関数を正常の状態に治療することができる。
【００６０】
このような治療のために、定型化されたウイルスの感染パターンを分析し、ウイルスの検査及び治療に必要な情報を得る。この得られた情報は、ワクチンプログラムまたは記憶装置(例えば、ハードディスク)などに予め保存され、ウイルスの診断及び治療に用いられる。また、この情報には、ウイルスの特徴的なパターン、変更されたコードの位置、コード復元に用いる元のコードの位置及びコードの長さなどが含まれる。
【００６１】
この方法では、まず、ＡＰＩ関数のバイナリコードが、予め保存された情報に該当するパターンが存在するかの可否を検査する(ステップ６０１)。ＡＰＩ関数のバイナリコードが該当するパターンを有している場合、ＡＰＩ関数がウイルスに感染されたと判断する。ＡＰＩ関数がウイルスに感染されたと判断された場合(ステップ６０２)、前記情報に該当する位置のコードを使用して、ウイルスに感染されたＡＰＩ関数を治療する(ステップ６０３)。
【００６２】
その後の過程(ステップ６０４〜６１１)は、図３に示したステップ３０４〜３１１と同一であるため、これに対する説明は省略する。また、この方法は、図４及び図５のＡＰＩ関数治療過程にも適用される。
【００６３】
以上説明した本発明によるウイルス治療過程は、コンピュータシステムで実行できるプログラムの形態で作成されることができる。また、このようなプログラムは、コンピュータ判読可能の記録媒体に記録されて汎用デジタルコンピューターシステムによって実行されることができる。前記記録媒体は、マグネチック保存媒体(例えば、ＲＯＭｓ、フロッピーディスク、ハードディスクなど)、光学的な判読媒体(例えば、ＣＤ-ＲＯＭｓ、ＤＶＤｓなど)及びキャリアウェーブ(例えば、インターネットを通じたデータ伝送)などの媒体を含む。
【００６４】
しかし、本発明の実施形態は、前記の例に限定されるものではなく、ＰＣ、ＰＤＡ、携帯電話、半導体製造装備、その他の産業用装備などに適用されるハードウェア装置(ウイルス治療装置)の形態でも実施することができる。この場合のウイルス治療装置は、図７に示すように、復元手段、プロセス治療手段及びファイル治療手段を有することができる。
【００６５】
前記復元手段は、ウイルスに感染される領域に対する情報を検索するためのＡＰＩ関数のバイナリコードと、予め保存されたウイルスに感染されていないＡＰＩ関数のバイナリコードとを比較し、比較されたＡＰＩ関数にコード変更があると判断された場合、ＡＰＩ関数を元のバイナリコードに復元する。
【００６６】
この場合、ウイルス治療装置は、ウイルスに感染されていないＡＰＩ関数のバイナリコードを保存する原本記憶手段をさらに有し、ＡＰＩ関数のバイナリコードは、各運営体制別に保存されていることが好ましい。
【００６７】
前記プロセス治療手段は、ＡＰＩ関数を使用してプロセスリスト及び各プロセスのエントリーポイント(ＥＰ)を探した後、メモリページで該当プロセスのエントリーポイントからウイルスの感染可否を検査することによって、該当プロセスのウイルス感染可否を診断し、プロセスが治療可能なウイルスに感染された場合、その感染されたプロセスを治療する。
【００６８】
一方、感染されたプロセスが治療不可能である場合、このプロセス治療手段は、感染されたプロセスをキルする。このときも、プロセスをキルする前に、感染されたプロセスをキルするという確認メッセージを予めディスプレイし、使用者をして損傷されたプロセスのキルを確認させることが好ましい。
【００６９】
前記ファイル治療手段は、感染されたプロセスに該当するファイルを探し、そのファイルの感染可否を診断した後、感染されたファイルを治療して再実行させる。
【００７０】
一方、前記ウイルス治療装置は、スレッドを治療するスレッド治療手段をさらに有することができる。このスレッド治療手段は、ＡＰＩ関数を使用して、メモリに常住する各プロセスに対するスレッドリスト及び各スレッドのエントリーポイント(ＥＰ)を探した後、メモリページで該当スレッドのエントリーポイントから検査することによって、該当スレッドがウイルスに感染されたかを診断し、スレッドが感染された場合、その感染されたスレッドを治療する。
【００７１】
前記スレッド治療手段は、ファイル治療手段がファイルを治療した後、または、ＡＰＩ関数を使用しプロセス治療手段がメモリに常住するプロセスを検索する前に、スレッドを検索して治療することもできる。
【００７２】
図６に基づいて説明した方法をウイルス治療装置に実行する場合、このウイルス治療装置は、図８に示すように、検索関数治療手段、プロセス治療手段、ファイル治療手段を有することができる。図面に示していないが、前記ウイルス治療装置は、感染されたスレッドを治療するスレッド治療手段をさらに有することもできる。
【００７３】
又、ウイルス治療装置は、ウイルスのパターン、変更されたコード位置、コード復元に使用する元のコード位置及びコードの長さなどを含む情報を有しており、前記検索関数治療手段は、ＡＰＩ関数のバイナリコードが前記情報に該当するパターンを有するかの可否を検査する。そして、ＡＰＩ関数に特徴的なパターンが存在する場合、前記情報に該当する位置のコードを使用してＡＰＩ関数を治療する。
【００７４】
前記プロセス治療手段、ファイル治療手段、スレッド治療手段は、図７に示した例と同一であるため、これに対する説明は省略する。
【００７５】
以上、前述のような実施例および添付図面は例示の目的で説明したものであり、本発明は別添の特許請求の範囲によってのみ限定されることを理解すべきである。また、当業者であれば、添付した特許請求の範囲で開示した本発明の範囲および思想の要旨内で多様な変形、付加および代替が可能であることは周知のことである。
【産業上の利用可能性】
【００７６】
本発明の構成によると、ウイルスに感染される領域に対する情報、特に、メモリに常住する全てのプロセス及びスレッドをくまなくかつ正確に検査することができるとともに、メモリを感染させるウイルスを完壁に治療することができる。
【図面の簡単な説明】
【００７７】
【図１】本発明によるウイルスに感染されたプロセスの治療方法を示した模式図である。
【図２】本発明によるスレッド領域に存在するウイルスを診断/治療する方法を示した模式図である。
【図３】本発明の第１の側面によるウイルスに感染されたプロセスの治療方法を示したフローチャートである。
【図４】本発明の第２の側面によるウイルスに感染されたプロセス及びスレッドの治療方法を示したフローチャートである。
【図５】本発明の第３の側面によるウイルスに感染されたプロセス及びスレッドの治療方法を示したフローチャートである。
【図６】本発明の第４の側面によるウイルスに感染されたプロセスの治療方法を示したフローチャートである。
【図７】本発明の一実施例によるウイルス治療装置を示したブロック図である。
【図８】本発明の他の実施例によるウイルス治療装置を示したブロック図である。
【図１】
2006522960.tif 000004
【図２】
2006522960.tif 000005
【図３】
2006522960.tif 000006
【図４】
2006522960.tif 000007
【図５】
2006522960.tif 000008
【図６】
2006522960.tif 000009
【図７】
2006522960.tif 000010
【図８】
2006522960.tif 000011
【国際調査報告】
2006522960.tif 000012
2006522960.tif 000013