JP2016538641A - アンチデバッグ方法 - Google Patents

アンチデバッグ方法 Download PDF

Info

Publication number
JP2016538641A
JP2016538641A JP2016530187A JP2016530187A JP2016538641A JP 2016538641 A JP2016538641 A JP 2016538641A JP 2016530187 A JP2016530187 A JP 2016530187A JP 2016530187 A JP2016530187 A JP 2016530187A JP 2016538641 A JP2016538641 A JP 2016538641A
Authority
JP
Japan
Prior art keywords
state
child
parent
program
child process
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.)
Pending
Application number
JP2016530187A
Other languages
English (en)
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.)
Inka Entworks Inc
Original Assignee
Inka Entworks Inc
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 Inka Entworks Inc filed Critical Inka Entworks Inc
Publication of JP2016538641A publication Critical patent/JP2016538641A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1064Restricting content processing at operating system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

アンチデバッグ方法を開示する。アンチデバッグ装置がアンチデバッグ(Anti-Debugging)を実行する方法において、子プロセス(Child Process)を生成する過程と、前記子プロセスで、親プロセス(Parent Process)の状態を監視する親プロセス監視過程と、前記親プロセスで、前記子プロセスの状態を監視する子プロセス監視過程とを含むことを特徴とするアンチデバッグ方法を提供する。【選択図】図6

Description

本発明は、プロセス状態を監視するアンチデバッグ方法に関するものである。
以下に記述される内容は、単に本実施例に係る背景情報のみを提供するだけで、従来技術を構成するものではないことを明らかにして置く。
ハッキングは、プログラムを分析することから始まる。プログラムを分析してロジックを把握することにより、実質的に操作(Crack)が可能となる。プログラムを分析する方法は2つの方法がある。一つは、静的(Static)分析方法であり、もう一つは、動的分析方法である。
静的分析方法は、プログラムファイルを実行せずにファイルのみ分析する。バイナリプログラムファイルを逆アセンブルツール(Tool)や逆コンパイルツールを用いて分析することである。これらのツールは、バイナリプログラムファイルをアセンブリ言語またはその他の高級言語形式に変換することができ、この変換されたアセンブリ言語などを分析すれば、プログラムのロジックを把握することができる。
動的(Dynamic)分析方法は、静的分析方法とは異なり、プログラムを実行させ、デバッグツールでプログラムの実行中であるコード(Code)の流れ、メモリ(Memory)の状態、レジスタ(Register)の状態などを見て、プログラムを分析する。デバッガを利用した分析方法は、実行中のコードの流れを見てプログラムを分析するため、プログラムのロジック(Logic)を把握しやすく、実際にコードが実行される部分とそうでない部分を判断することができるようになる。また、このような分析中にメモリやレジスタに保存された値を修正することもできる。
このようなデバッグによる分析方法は、プログラムの論理的な流れや実行中にデータをリアルタイムで変化させることができるなど、分析の範囲が静的分析方法より広く利用されている。
アンチデバッグ(Anti-Debugging)とは、デバッグを妨害して分析を防止する技術である。デバッグされた場合、そのデバッガプログラムを終了させるか、あるいはエラーを発生させる方法など、様々な方法を使用して分析を防止することができる。従来のアンチデバッグ技術は、主にデバッグプログラムが実行中であるか否かを確認して、デバッグ対象のプログラムが実行されないようにする。しかし、この方法によると、新しいデバッグプログラムなど、事前に予想していない状況が発生した場合に対処するのが難しいという問題点がある。また、特定のオペレーティングシステム(Operating System)やプロセッサ(Processor)に限られたアンチデバッグ技術が使用されており、例えば、ウィンドウズ(登録商標)(Windows(登録商標))オペレーティングシステムでは、ウィンドウズで提供するAPI(Application Program Interface)であるIsDebuggerPresent()、CheckRemoteDebuggerPresent()、及びNtGlobeFlag値を利用して、デバッグされたか否かを判断する方法が使用される。しかし、この方法では、リナックス(登録商標)(Linux(登録商標))、ユニックス(Unix(登録商標))、OS Xなどでは、これと同一または類似のAPIを提供していないため、使用することができないという問題点がある。
本実施例は、プロセスの状態を監視して、アンチデバッグ方法を提供することを主な目的とする。
本実施例の一側面によれば、アンチデバッグ装置がアンチデバッグ(Anti-Debugging)を実行する方法において、子プロセス(Child Process)を生成する過程と、前記子プロセスで、親プロセス(Parent Process)の状態を監視する親プロセス監視過程と、前記親プロセスで、前記子プロセスの状態を監視する子プロセス監視過程とを含むことを特徴とするアンチデバッグ方法を提供する。
また、本実施例の他の側面によれば、アンチデバッグ(Anti-Debugging)装置において、子プロセス(Child Process)を生成する子プロセス生成部と前記子プロセスの状態を監視する子プロセス監視部を含む親プロセスと、前記親プロセス(Parent Process)の状態を監視する親プロセス監視部を含む子プロセスとを含むことを特徴とするアンチデバッグ装置を提供する。
以上で説明したように、本実施例によれば、親(Parent)プロセス(Process)が子(Child)プロセスの状態をリアルタイム(Real-Time)で監視し、子プロセスが親プロセスの状態をリアルタイムで監視して、親プロセスや子プロセスがデバッグ状態、すなわち、追跡された(TracedまたはStopped)状態に転換した場合、すぐに親プロセスと子プロセスを強制終了させて、それ以上、デバッグ状態でプログラムが実行されることを防止することができる。
また、本実施例によれば、ゲームなどのハッキングに頻繁に使用されるメモリチート(Memory Cheat)プログラムの攻撃からプログラムを保護することができる。メモリチートプログラムの動作は、まず、攻撃対象のプログラムの状態を追跡された(TracedまたはStopped)状態に転換した後に行われるので、本発明の実施例によれば、プロセスが追跡された状態であることを検査して、追跡された状態であることが確認されたら、プロセスを終了するなどの措置をして、メモリチートプログラムの攻撃から防御することができる。
以下、本実施例を添付された図面を参照して詳細に説明する。本発明の技術的思想は、プロセス状態を監視することができる様々なシステムに適用することができ、特定のオペレーティングシステムやハードウェアに限定されない。
図1は、アンチデバッグを提供するコンピュータの構成図である。
図1は、親プロセスと子プロセスがデバッグされているかどうかのプロセス状態を相互に監視するアンチデバッグを提供するためのコンピュータ例である。補助記憶装置130に保存されていたプログラムが実行されると、プログラムはメインメモリ120にロードされて、中央処理装置(Central Processing Uni; CPU)110によって処理され、CPU110は、その処理結果をディスプレイ140に表示する。プログラムは、実行されると、自分と同じ形態の子プロセス(Child Process)を生成し(Fork)、自分は子プロセスの親プロセス(Parent Process)となる。親プロセスと子プロセスは、相互間に相手のプロセス状態を監視して、デバッグによるプログラムの分析を防ぐことができる。
図2は、プロセス制御ブロックの構成の例示図である。
プログラムが実行され、プロセス(Process)が生成されると、オペレーティングシステム(Operating System)は、内部にプロセスを管理するために必要な情報を保存し、これをプロセス制御ブロック(Process Control Block; PCB)200という。ただし、プロセス制御ブロックは、オペレーティングシステムに応じて別の名前で呼ばれることもある。プロセス制御ブロック200は、プロセス状態(Process State)210、プロセス識別子(Process ID)220、プログラムカウンタ230、レジスタ240、メモリ管理情報250、ファイル情報260などの情報を含むことができる。プロセス状態210には、生成(Created)、準備(Ready)、実行(Running)、待機(Waiting)、終了(Terminated)、追跡(Traced)などのプロセス状態を示す情報が保管される。プロセス識別子220には、システムの実行中であるプロセスを識別するための識別子情報が保管される。プログラムカウンタ230には、プロセスが次に実行する命令語のアドレス情報が保管される。レジスタ240には、CPUの動作に関連するレジスタ値が保管される。メモリ管理情報250には、プロセスのアドレス空間(Address Space)に関する情報が保管される。ファイル情報260には、プロセスが入力/出力するためにオープン(Open)している入力/出力装置とファイルの情報が保管される。
図3は、プロセスの状態遷移過程の例示図である。
図3は、プロセスが生成され、図2のプロセス制御ブロックに含まれているプロセス状態情報が転移される過程を表示する例示図である。補助記憶装置130に保存されていたプログラムが実行され、メインメモリ120にロードされ、プロセスが生成され、初期化過程を経る。このとき、プロセス制御ブロック200のプロセス状態値は、生成(NewまたはCreate)310に設定される。しかし、プロセスは生成されたものの、まだオペレーティングシステムによって実行可能な状態ではない。プロセスが実行されるためには、オペレーティングシステムのカーネル(Kernel)のキュー(Queue)でCPU割り当てを待機しなければならない。実行される準備をしていなければならない。この状態になると、プロセス状態値は、準備(Ready)320となる。プロセスは、キューで待機中、自分の番になると、CPU割り当てを受けて実行される。このとき、プロセス状態値は、実行中(Running)330となる。プロセスが実行中に入力/出力(Input/ Output; I/ O)が必要な状況が発生すると、入力/出力要求(I/ O Request)をシステムに送信し、プロセスは待機(Waiting)(340)状態になる。待機状態340で入力/出力が完了すると、再びプロセスが実行されるために準備状態320になり、自分の番になると、CPU割り当てを受けて、プロセスの状態は実行中(Running)330状態になる。プロセスが作業を完了すると、自分が占有していたすべてのリソース(Resource)をシステムに変換して終了する。プロセスが終了するために、自分のリソースをシステムに変換する時点の状態は消滅中(Terminated)350である。
プロセスが終了する前のいずれかの状態でデバッグのためにデバッガが付着(Attach)されると、プロセスの状態は追跡された(TracedまたはStopped)状態に遷移する(Transit)。また、デバッガ上でもプログラムを実行させることができ、このときに生成されたプロセスは追跡された状態となる。本発明の技術的思想は、このようなプロセスの状態遷移を把握してデバッグ状態を判別し、デバッグ状態と判別された場合、プロセスの実行を中断して、デバッグを通じたプログラムの分析ができないようにすることにある。これについては図4a、図4aで詳細に説明する。
図4aは、本実施例に係る親プロセスが子プロセスを監視する過程のフロー図である。
プログラムが実行され、メインメモリ120にロードされ、プロセスが生成される(S410)。生成されたプロセスはプログラムコードを共有し、別のアドレス空間(Address Space)を持つ子プロセスを生成する(S420)。このとき、子プロセスを生成したプロセスを親プロセスという。親プロセスは子プロセスの状態が追跡された(TracedまたはStopped)状態であるか否かを継続的に検査する(S430)。親プロセスが子プロセスを監視する過程は、プログラムが終了されない限り(S440)、継続的に実行する。GDB(Gnu Debugger)のようなデバッガは、デバッガでプログラムを実行させるか、あるいはすでに実行中のプロセスに付着(Attach)してプログラムをデバッグすることができる。また、メモリチート(Memory Cheat)プログラムも、プロセスの状態を追跡された状態に変更させた後、メモリチートプログラムが所望の場所のメモリ値を変更させる。子プロセスの状態が追跡された状態に変更された場合、子プロセスはデバッガ(Debugger)またはメモリチートプログラムなどの動的分析ツールによってプログラムが分析されていると判断することができる。プロセスの追跡された状態をデバッグ状態であると判断することができる理由は、デバッガを利用してそのプロセスをデバッグすると、プロセス状態が追跡された状態に変更される。プロセスが停止(Stopped)状態でプロセスにGDBのようなデバッガが付着されるか、あるいはデバッガでブレークポイント(Break Point)を設定してデバッグするときに、追跡された状態が表れる。したがって、追跡された状態をデバッグ状態であると判断することができる。
このように、プロセスが追跡された状態であれば、すぐにプロセスを中断することができ、プログラムが分析されることを防止することができる。また、親プロセスは子プロセスが終了したか否かを監視し、子プロセスの終了を発見した場合、親プロセスも終了する。
図4bは、本実施例に係る子プロセスが親プロセスを監視する過程のフロー図である。
親プロセスによって子プロセスが生成され(S450)、生成された子プロセスは、親プロセスの状態が追跡された状態であるか否かを継続的に検査する(S460)。親プロセスの状態が追跡された状態に変更された場合、子プロセスは、親プロセスがデバッガやメモリチートプログラムなどの動的分析ツールによってプログラムが分析されていると判断することができる。子プロセスが親プロセスを監視する過程は、プログラムが終了されない限り(S470)、継続的に実行する。もし、プログラムが分析されていると判断された場合、図4aと同様の方法で、親プロセスが終了されるので、プログラムが分析されることを防止することができる。また、子プロセスは、親プロセスが終了されたか否かを監視し、親プロセスの終了を発見した場合、子プロセスも終了する。
親プロセスと子プロセスを相互に監視するようにする理由は、親プロセスのみの場合は、親プロセス自身が追跡された状態に変更された場合、プロセスが停止状態であるため、何もすることができないからである。親プロセスのみの状態監視は、自分の追跡された状態を監視することができないが、本発明のように、親プロセスが子プロセスを生成して相互に監視すれば、一方が追跡された状態に変更された場合、他の一方のプロセスで変更されたプロセスを検知することができ、プロセスを中断することができる。
図5は、本実施例に係る親プロセスと子プロセスが相互に監視する状態の例示図である。
図5は、プログラムが実行され、親プロセス510が生成され(Create)、親プロセス510が子プロセス520を生成した(Fork)状態で、親プロセス510は、子プロセス520のプロセス状態を監視し、子プロセス520は、親プロセスの状態を監視する状態を示す例示である。
メインメモリ120で実行されている親プロセス510と子プロセス520は、常にペアになって、相互監視を行う。このうち一方のプロセスが終了されると、他方のプロセスも同様に終了されて、一方のプロセスが追跡された状態に変更された場合、他方のプロセスは変更されたプロセスを終了させ、自分も終了して、プログラムが分析されることを防止する。
図6は、本実施例に係るアンチデバッグ装置の構成図である。
アンチデバッグ装置600は、親プロセス610と子プロセス620を含む。親プロセス610は、子プロセス620を生成する子プロセス生成部612と、生成された子プロセス620のプロセス状態を監視する子プロセス監視部614と、親プロセスの状態情報を含む親プロセスを管理するための情報を保存するプロセス制御ブロック200とを含む。
子プロセス生成部612は、子プロセス620を生成した後、子プロセス620を監視するための別のスレッド(Thread)で、子プロセス監視部614を生成することができる。子プロセス監視部614は、子プロセス620の内部にあるプロセス制御ブロック200のプロセス状態情報が追跡された状態であるかを継続的に検査する。検査の結果、プロセスの状態情報が追跡された状態であることが確認されると、プログラムがデバッガやメモリチートプログラムなどによって分析されたものと判断して、親プロセス610と子プロセス620を終了する。また、子プロセス620が存在していない場合は、親プロセス610は終了する。また、子プロセスでも別のスレッドを生成して、親プロセスを監視することができる。
子プロセス620は、親プロセス610のプロセス状態を監視するための親プロセス監視部622と、子プロセスの状態情報を含むプロセスを管理するための情報を保存するプロセス制御ブロック200を含む。子プロセス620の親プロセス監視部622は、親プロセス610のプロセス制御ブロック200のプロセス状態が追跡された状態であるかを継続的に検査する。親プロセス監視部622は、子プロセス620内で、別のスレッド(Thread)で動作することができる。検査の結果、プロセス制御ブロック200のプロセスの状態情報が追跡された状態であることが確認されると、プログラムがデバッガやメモリチートプログラムなどによって分析されたものと判断して、親プロセス610と子プロセス620を終了する。また、親プロセス610が存在していない場合は、子プロセス620は終了する。
本発明の実施例に係るアンチデバッグ装置600は、パーソナルコンピュータ(PC:Personal Computer)、ノートブックコンピュータ、タブレット、個人携帯端末(PDA:Personal DigitalAssistant)、ゲームコンソール、携帯型マルチメディアプレーヤー(PMP:Portable Multimedia Player)、プレイステーションポータブル(PSP:PlayStation Portable)、無線通信端末(Wireless Communication Terminal)、スマートフォン(Smart Phone)、TV、メディアプレーヤーなどのユーザー端末である。本発明の実施例に係るアンチデバッグ装置600は、応用サーバーとサービスサーバーなどのサーバー端末である。本発明の実施例に係るアンチデバッグ装置600は、それぞれ、(i)各種機器や有線・無線通信網との通信を行うための通信モデムなどの通信装置、(ii)プログラムを実行するためのデータを保存するためのメモリ、(iii)プログラムを実行して演算および制御するためのマイクロプロセッサなどを備える様々な装置を意味することができる。少なくとも一実施例によれば、メモリはラム(Random Access Memory:RAM)、ロム(Read Only Memory:ROM)、フラッシュメモリ、光ディスク、磁気ディスク、ソリッドステートディスク(Solid State Disk:SSD)などのコンピュータで読み取り可能な記録/保存媒体である。少なくとも一実施例によれば、マイクロプロセッサは、明細書に記載された動作と機能を1つ以上選択的に実行するようにプログラムすることができる。少なくとも一実施例によれば、マイクロプロセッサは、全体または部分的に特定の構成の特定用途向け半導体(application specific integrated circuit:ASIC)などのハードウェアで具現される。
以上の説明は、本実施例の技術思想を例示的に説明したにすぎないものであって、本実施例の属する技術分野で通常の知識を有する者であれば、本実施例の本質的な特性から逸脱しない範囲で様々な修正および変形が可能である。したがって、本実施例は、本実施例の技術思想を限定するためのものではなく説明するためのものであり、これらの実施例により、本実施例の技術思想の範囲が限定されるものではない。本実施例の保護範囲は、特許請求の範囲によって解釈されるべきであり、それと同等の範囲内にあるすべての技術思想は、本実施例の権利範囲に含まれるものと解釈されるべきである。
図1は、アンチデバッグを提供するためのコンピュータの構成図である。 図2は、プロセス制御ブロックの構成の例示図である。 図3は、プロセスの状態遷移過程の例示図である。 図4aは、本実施例に係る親プロセスが子プロセスを監視する過程のフロー図である。 図4bは、本実施例に係る子プロセスが親プロセスを監視する過程のフロー図である。 図5は、本実施例に係る親プロセスと子プロセスが相互に監視する状態の例示図である。 図6は、本実施例に係るアンチデバッグ装置の構成図である。

Claims (10)

  1. アンチデバッグ装置がアンチデバッグ(Anti-Debugging)を実行する方法において、
    子プロセス(Child Process)を生成する過程と、
    前記子プロセスで、親プロセス(Parent Process)の状態を監視する親プロセス監視過程と、
    前記親プロセスで、前記子プロセスの状態を監視する子プロセス監視過程とを含むことを特徴とするアンチデバッグ方法。
  2. 前記親プロセス監視過程は、
    前記子プロセスで、前記親プロセスのプロセス制御ブロックでプロセス状態値(Value)を獲得する過程と、
    前記親プロセスのプロセス状態値が追跡された(TracedまたはStopped)状態であるかを検査するプロセス状態検査過程とを含むことを特徴とする請求項1に記載のアンチデバッグ方法。
  3. 前記親プロセスの状態が追跡された状態である場合、親プロセスと子プロセスを終了する過程をさらに含むことを特徴とする請求項2に記載のアンチデバッグ方法。
  4. 前記親プロセスが終了された場合、前記子プロセスが終了する過程をさらに含むことを特徴とする請求項1に記載のアンチデバッグ方法。
  5. 前記子プロセス監視過程は、
    前記親プロセスで、前記子プロセスのプロセス制御ブロックでプロセス状態値(Value)を獲得する過程と、
    前記子プロセスのプロセス状態値が追跡された(TracedまたはStopped)状態であるかを検査するプロセス状態検査過程とを含むことを特徴とする請求項1に記載のアンチデバッグ方法。
  6. 前記子プロセスの状態が追跡された状態である場合、親プロセスと子プロセスが終了する過程をさらに含むことを特徴とする請求項5に記載のアンチデバッグ方法。
  7. 前記子プロセスが終了された場合、前記親プロセスが終了する過程をさらに含むことを特徴とする請求項1に記載のアンチデバッグ方法。
  8. アンチデバッグ(Anti-Debugging)装置において、
    子プロセス(Child Process)を生成する子プロセス生成部と、前記子プロセスの状態を監視する子プロセス監視部を含む親プロセスと、
    前記親プロセス(Parent Process)の状態を監視する親プロセス監視部を含む子プロセスとを含むことを特徴とするアンチデバッグ装置。
  9. 前記親プロセスは、前記子プロセス監視部を別のスレッド(Thread)で生成することを特徴とする請求項8に記載のアンチデバッグ装置。
  10. 前記子プロセスは、前記親プロセス監視部を別のスレッド(Thread)で生成することを特徴とする請求項8に記載のアンチデバッグ装置。
JP2016530187A 2013-11-14 2014-11-03 アンチデバッグ方法 Pending JP2016538641A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2013-0138644 2013-11-14
KR1020130138644A KR101519845B1 (ko) 2013-11-14 2013-11-14 안티디버깅 방법
PCT/KR2014/010446 WO2015072689A1 (ko) 2013-11-14 2014-11-03 안티디버깅 방법

Publications (1)

Publication Number Publication Date
JP2016538641A true JP2016538641A (ja) 2016-12-08

Family

ID=53057586

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016530187A Pending JP2016538641A (ja) 2013-11-14 2014-11-03 アンチデバッグ方法

Country Status (5)

Country Link
US (1) US20160300044A1 (ja)
JP (1) JP2016538641A (ja)
KR (1) KR101519845B1 (ja)
CN (1) CN105793860A (ja)
WO (1) WO2015072689A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409635B2 (en) 2019-08-23 2022-08-09 Raytheon Company Hacker-resistant anti-debug system

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101583545B1 (ko) * 2015-07-22 2016-01-08 주식회사 엔에스에이치씨 상호 디버깅 감시를 이용한 모바일 단말기의 어플리케이션의 보안을 향상시키는 보안 제공 방법
CN105930721B (zh) 2016-04-28 2018-11-23 北京小米移动软件有限公司 一种管理应用程序的方法和装置
CN106021106B (zh) * 2016-05-19 2019-05-28 珠海豹趣科技有限公司 一种进程控制方法及用户终端
CN106055935A (zh) * 2016-05-19 2016-10-26 北京金山安全软件有限公司 一种进程控制方法、装置及电子设备
CN106055397B (zh) * 2016-05-30 2019-09-27 新浪网技术(中国)有限公司 一种锁的控制方法及装置
CN108021791B (zh) * 2016-10-31 2021-08-10 腾讯科技(深圳)有限公司 数据保护方法及装置
CN106778104B (zh) * 2017-01-20 2019-10-25 武汉斗鱼网络科技有限公司 一种应用程序的反调试方法和系统
CN106845170B (zh) * 2017-01-20 2019-11-15 武汉斗鱼网络科技有限公司 一种反调试方法和系统
CN107122656B (zh) * 2017-04-26 2020-03-06 北京梆梆安全科技有限公司 一种通过自调试防止外部调试的方法和装置
CN107239698A (zh) * 2017-05-27 2017-10-10 北京洋浦伟业科技发展有限公司 一种基于信号处理机制的反调试方法和装置
CN108256318A (zh) * 2018-01-15 2018-07-06 郑州云海信息技术有限公司 一种进程安全运行方法、装置及终端
CN108388778B (zh) * 2018-03-21 2021-03-30 北京理工大学 Android平台融合多特征的APP反调试方法
WO2019231000A1 (ko) * 2018-05-29 2019-12-05 라인플러스 주식회사 프로그램 보호를 위한 자바 디버거 차단 방법 및 시스템
WO2019235664A1 (ko) * 2018-06-08 2019-12-12 라인플러스 주식회사 프로그램 보호를 위한 디버거 차단 방법 및 시스템
CN109408158B (zh) * 2018-11-06 2022-11-18 恒生电子股份有限公司 子进程随父进程退出的方法及装置、存储介质及电子设备
CN111639312B (zh) * 2020-06-02 2023-04-14 腾讯科技(成都)有限公司 反调试方法、装置、存储介质及电子装置
CN112948241B (zh) * 2021-02-09 2024-02-06 北京奇艺世纪科技有限公司 应用程序的反调试方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006176352A (ja) * 2004-12-21 2006-07-06 Maruhachi Glass Ten:Kk 色補正方法、該方法を利用した光透過部材、構成体、及び該光透過部材、構成体の製造方法
US20080060072A1 (en) * 2006-09-01 2008-03-06 Fuji Xerox Co., Ltd. Information processing system, information processing method, information processing program, computer readable medium and computer data signal

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60175959A (ja) * 1984-02-21 1985-09-10 Matsushita Electric Ind Co Ltd 水管式ボイラ−
JPH086813A (ja) * 1994-06-23 1996-01-12 Hitachi Ltd トレース制御方式
JP3049010B2 (ja) * 1998-06-23 2000-06-05 日本電気ソフトウェア株式会社 親子関係疑似継続装置および方法
KR100832890B1 (ko) * 2001-12-29 2008-05-28 엘지엔시스(주) 정보통신 시스템의 프로세스 장애 감시방법 및 복구방법
CN100543683C (zh) * 2006-12-26 2009-09-23 华为技术有限公司 对进程进行监控的方法和系统
EP2397964A4 (en) * 2009-02-16 2014-08-13 Panasonic Corp DEVICE FOR IDENTIFYING ILLEGAL MODULES, INFORMATION PROCESSING DEVICE, METHOD FOR IDENTIFYING ILLEGAL MODULES, IDENTIFICATION PROGRAM FOR ILLEGAL MODULES, INTEGRATED CIRCUIT, ILLEGAL MODULES DEACTIVATION SYSTEM, AND ILLEGAL MODULES DEACTIVATION DEVICE
KR101057432B1 (ko) * 2010-02-23 2011-08-22 주식회사 이세정보 프로세스의 행위 분석을 통한 유해 프로그램을 실시간으로 탐지하고 차단하는 시스템, 방법, 프로그램 및 기록매체
EP2979211B1 (en) * 2013-03-27 2020-09-09 Irdeto B.V. Protecting software application

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006176352A (ja) * 2004-12-21 2006-07-06 Maruhachi Glass Ten:Kk 色補正方法、該方法を利用した光透過部材、構成体、及び該光透過部材、構成体の製造方法
US20080060072A1 (en) * 2006-09-01 2008-03-06 Fuji Xerox Co., Ltd. Information processing system, information processing method, information processing program, computer readable medium and computer data signal
JP2008059404A (ja) * 2006-09-01 2008-03-13 Fuji Xerox Co Ltd 情報処理システムおよびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409635B2 (en) 2019-08-23 2022-08-09 Raytheon Company Hacker-resistant anti-debug system

Also Published As

Publication number Publication date
KR101519845B1 (ko) 2015-05-13
WO2015072689A1 (ko) 2015-05-21
US20160300044A1 (en) 2016-10-13
CN105793860A (zh) 2016-07-20

Similar Documents

Publication Publication Date Title
JP2016538641A (ja) アンチデバッグ方法
US10180899B2 (en) Device for automatically generating test cases for embedded software using symbolic and concrete execution
JP6583838B2 (ja) アプリケーションのシミュレーション
US10140204B2 (en) Automated dynamic test case generation
US7783865B2 (en) Conditional data watchpoint management
US9122793B2 (en) Distributed debugging of an application in a distributed computing environment
JP2016507849A5 (ja)
EP2881860B1 (en) Method for implementing an interrupt between virtual processors, related device, and system
US9697031B2 (en) Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register
WO2016095570A1 (zh) 一种嵌入式系统的调试方法及装置、存储介质
CN103699835B (zh) 一种面向Android系统资源的访问控制方法
US20150033134A1 (en) Visually Depicting Cloud Resource Utilization During Execution Of An Application
JP2018534695A5 (ja)
US10129275B2 (en) Information processing system and information processing method
US9176821B2 (en) Watchpoint support system for functional simulator
JP2015018552A (ja) 安全保護方法およびプロセッサ
CN107291617B (zh) 一种基于隐式污点传播的漏洞分析方法
US10684896B2 (en) Method for processing asynchronous event by checking device and checking device
Gui et al. Firmnano: Toward iot firmware fuzzing through augmented virtual execution
US20170060571A1 (en) System and method for masking complexity in a heterogeneous development environment
CN112416695B (zh) 一种全局变量监控方法、装置、设备及存储介质
US9838488B2 (en) Agent asynchronous transaction monitor
Liu et al. A Survey of Security Analysis on Industrial Control Devices via Rehosting
KR20140140790A (ko) Rtos 기반 임베디드 시스템 소프트웨어 모니터링을 위한 타겟 에이젼트 운용 방법
KR101718923B1 (ko) 다중 코어 프로세서에 기반한 악성 코드 탐지 장치 및 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171128