IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ スーパーセル オーワイの特許一覧

特表2023-515293外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するための方法
<>
  • 特表-外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するための方法 図1
  • 特表-外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するための方法 図2
  • 特表-外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するための方法 図3
  • 特表-外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するための方法 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-04-13
(54)【発明の名称】外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するための方法
(51)【国際特許分類】
   G06F 21/14 20130101AFI20230406BHJP
   G06F 9/445 20180101ALI20230406BHJP
【FI】
G06F21/14
G06F9/445
【審査請求】未請求
【予備審査請求】有
(21)【出願番号】P 2022533318
(86)(22)【出願日】2020-12-11
(85)【翻訳文提出日】2022-06-03
(86)【国際出願番号】 FI2020050836
(87)【国際公開番号】W WO2021140269
(87)【国際公開日】2021-07-15
(31)【優先権主張番号】16/736,242
(32)【優先日】2020-01-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】513136528
【氏名又は名称】スーパーセル オーワイ
【氏名又は名称原語表記】Supercell Oy
【住所又は居所原語表記】Jatkasaarenlaituri 1 FI-00180 HELSINKI Finland
(74)【代理人】
【識別番号】100127188
【弁理士】
【氏名又は名称】川守田 光紀
(72)【発明者】
【氏名】インモネン アキ
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AE15
5B376AE61
(57)【要約】
外部デバッガアプリケーションがコンピューティングデバイス200、300にインストールされたソフトウェアプログラム306のコードを解析することを阻止するための方法を開示する。この方法は、アプリケーションプログラム308及び内部デバッガアプリケーション310を含むソフトウェアプログラムを初期化することを含む。ソフトウェアプログラムは、その初期化時に、内部デバッガアプリケーションにアプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示する。内部デバッガアプリケーションは、コンピューティングデバイスのオペレーティングシステム204のカーネル資源312を利用するように構成される。この方法は、アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、アプリケーションプログラムのコードに対する実行経路を定義するべく、内部デバッガアプリケーションを実行することと、コードに対して定義された実行経路に従ってアプリケーションプログラムを実行することと、1つ又は複数のブレークポイントのいずれかに達するとアプリケーションプログラムのコードの実行を停止することと、アプリケーションプログラムのコードに対して定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、内部デバッガアプリケーションに制御を渡すこととを含む。
【選択図】図3
【特許請求の範囲】
【請求項1】
外部デバッガアプリケーションがコンピューティングデバイス(202、300)にインストールされたソフトウェアプログラム(306)のコードを解析することを阻止するための方法であって、
・ アプリケーションプログラム(308)及び内部デバッガアプリケーション(310)を含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステム(204)のカーネル資源(312)を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を含む方法。
【請求項2】
前記アプリケーションプログラムの前記コードは、複数のコードブロックを含み、
前記1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含む、請求項1に記載の方法。
【請求項3】
前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次のコードブロックのアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことを含む、請求項1又は2に記載の方法。
【請求項4】
前記1つ又は複数のブレークポイントは、前記アプリケーションプログラムの前記コード内の1つ又は複数の所定のコードブロックの末尾に設定される、請求項1から3のいずれかに記載の方法。
【請求項5】
前記1つ又は複数のブレークポイントは、前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの実行頻度に基づいて設定される、請求項1から4のいずれかに記載の方法。
【請求項6】
前記1つ又は複数のブレークポイントは、前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの末尾にランダムに設定される、請求項1から5のいずれかに記載の方法。
【請求項7】
前記アプリケーションプログラムは、前記コンピューティングデバイスのユーザによるその開始時に前記内部デバッガアプリケーションを初期化するように構成される、請求項1から6のいずれかに記載の方法。
【請求項8】
前記内部デバッガアプリケーションは、前記アプリケーションプログラムの前記コードの実行を初期化する、請求項1から7のいずれかに記載の方法。
【請求項9】
前記アプリケーションプログラムは、ゲーム用アプリケーションプログラムである、請求項1から8のいずれかに記載の方法。
【請求項10】
コンピューティングデバイス(200)にインストールされるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、ソフトウェアプログラムのプログラム命令を格納した非一時的機械可読データ記憶媒体を備え、前記プログラム命令は、前記コンピューティングデバイスに対応付けられた処理デバイスによってアクセスされると、前記処理デバイスに、
・ アプリケーションプログラム及び内部デバッガアプリケーションを含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる、コンピュータプログラム製品。
【請求項11】
前記アプリケーションプログラムの前記コードは、複数のコードブロックを含み、
前記1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含む、請求項10に記載のコンピュータプログラム製品。
【請求項12】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次のコードブロックのアドレスを提供するべく、前記処理デバイスに前記内部デバッガアプリケーションに制御を渡させる、請求項10又は11に記載のコンピュータプログラム製品。
【請求項13】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記処理デバイスに、前記アプリケーションプログラムの前記コード内の1つ又は複数の所定のコードブロックの末尾に前記1つ又は複数のブレークポイントを設定させる、請求項10から12のいずれかに記載のコンピュータプログラム製品。
【請求項14】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記処理デバイスに、前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの実行頻度に基づいて前記1つ又は複数のブレークポイントを設定させる、請求項10から13のいずれかに記載のコンピュータプログラム製品。
【請求項15】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記処理デバイスに、前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの末尾に前記1つ又は複数のブレークポイントをランダムに設定させる、請求項10から14のいずれかに記載のコンピュータプログラム製品。
【請求項16】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記処理デバイスに、前記コンピューティングデバイスのユーザによるその開始時に、前記内部デバッガアプリケーションを初期化するように前記アプリケーションプログラムを構成させる、請求項10から15のいずれかに記載のコンピュータプログラム製品。
【請求項17】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記内部デバッガアプリケーションに、前記アプリケーションプログラムの前記コードの実行を初期化させる、請求項10から16のいずれかに記載のコンピュータプログラム製品。
【請求項18】
前記アプリケーションプログラムは、ゲーム用アプリケーションプログラムである、請求項10から17のいずれかに記載のコンピュータプログラム製品。
【請求項19】
コンピューティングデバイス(202、300)のための非一時的な機械可読データ記憶媒体として実施されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、ソフトウェアプログラムを含み、前記ソフトウェアプログラムは、
・ アプリケーションプログラムと、
・ 外部デバッガアプリケーションが前記ソフトウェアプログラムのコードを解析することを阻止するべく、前記コンピューティングデバイスのオペレーションシステム(204)のカーネル資源(312)を利用するように構成された内部デバッガアプリケーション(310)と、
を備え、
実行時に、前記内部デバッガアプリケーションは、前記コンピューティングデバイスに、
・ 前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードすることと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる、コンピュータプログラム製品。
【請求項20】
外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための当該コンピューティングデバイス(202、300)であって、
・ アプリケーションプログラム(308)及び内部デバッガアプリケーション(310)を含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステム(202)のカーネル資源(312)を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行うように構成されたコンピューティングデバイス。
【請求項21】
前記アプリケーションプログラムの前記コードは、複数のコードブロックを含み、
前記1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含む、請求項20に記載のコンピューティングデバイス。
【請求項22】
前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次のコードブロックのアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すようにさらに構成される、請求項20又は21に記載のコンピューティングデバイス。
【請求項23】
前記アプリケーションプログラムの前記コード内の1つ又は複数の所定のコードブロックの末尾に前記1つ又は複数のブレークポイントを設定するようにさらに構成される、請求項20から22のいずれかに記載のコンピューティングデバイス。
【請求項24】
前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの実行頻度に基づいて、前記1つ又は複数のブレークポイントを設定するようにさらに構成される、請求項20から23のいずれかに記載のコンピューティングデバイス。
【請求項25】
前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの末尾に前記1つ又は複数のブレークポイントをランダムに設定するようにさらに構成される、請求項20から24のいずれかに記載のコンピューティングデバイス。
【請求項26】
前記コンピューティングデバイスのユーザによる前記アプリケーションプログラムの開始時に、前記内部デバッガアプリケーションを初期化するように構成される、請求項20から25のいずれかに記載のコンピューティングデバイス。
【請求項27】
前記内部デバッガアプリケーションの初期化時に、前記アプリケーションプログラムの前記コードの実行を初期化するように構成される、請求項20から26のいずれかに記載のコンピューティングデバイス。
【請求項28】
外部デバッガアプリケーションがコンピューティングデバイス(300)にインストールされたアプリケーションプログラム(308)のコードを解析することを阻止するためのシステム(400)であって、
・ 前記コンピューティングデバイスに通信可能に接続されたデバッガサーバ(404)を備え、
前記デバッガサーバは、内部デバッガアプリケーション(310)が前記アプリケーションプログラムをアタッチするように構成され、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステム(204)のカーネル資源(312)を利用するように構成され、
実行時に、前記内部デバッガアプリケーションは、前記コンピューティングデバイスに、
・ 前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードすることと、
・ 前記アプリケーションプログラムの前記コードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、ソフトウェアの違法コピーを防止するシステム及び方法に関し、より具体的には、外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するための方法、システム、及びコンピューティングデバイスに関する。
【背景】
【0002】
コンピュータゲーム、コンソールゲームアプリケーション、シミュレーションアプリケーション、コーディングやテストコンソールベースのアプリケーションなどのソフトウェアアプリケーションの違法コピーや不正アクセス、改ざん、搾取がますます拡大する深刻な問題となっている。ソフトウェアの違法コピーは、ソフトウェアプログラムの海賊版の不正な配布による収益の損失につながる可能性がある。さらに、ソフトウェアの違法コピーには、海賊版の配布による収益の損失に加え、特定のソフトウェアプログラムに実施され得る貴重な営業秘密の漏洩のおそれもある。加えて、ソフトウェアの違法コピーは、個人や企業が保護を求めてきた可能性のある知的財産権を脅かす。特に、ソフトウェアプログラムを開発する企業は、競合他社のソフトウェアプログラムに不正にアクセスすることで、著しい競争上の優位を獲得する場合がある。
【0003】
一般に、ソフトウェアプログラムは、既知のマイクロプロセッサやオペレーティングシステムと互換性を持つように特定の方法で準備された電子ファイルやコード片で構成されているため、ハッカーやクラッカーによる改ざんに対して脆弱である。従来、ソフトウェアプログラムへの不正アクセスを制限するために、多くのソフトウェアセキュリティ機構が利用されてきた。多くのソフトウェアセキュリティ機構は、悪意のあるユーザを阻止するために、本物であることを示すライセンス、暗号化されたパスワードや鍵の導入など、本質的に単純化されている。しかし、このようなセキュリティチェックは、熟練したハッカーが、メモリリフティングツールである「ProcDump」のような広く入手可能なツールを強力なデバッグツールと併用すれば、容易に突破することができる。このようなツールにより、メモリがいかに保護されていると考えられていても、任意の記憶場所から任意のデータ内容をキャプチャしたり、ファイルシステムを監視してデータにアクセスするためにファイルを書き写したり、例えばインサーキット・エミュレータを使ってOS全体を複製したりすることが可能である。このようなツールは、通常、ハッカーがソフトウェアのコードを段階的に解析するために利用され、これにより、ハッカーはソフトウェアプログラム内容のリバースエンジニアリング、改ざん、又は複製を行える。さらに、これに対処するために、多くのソフトウェアプログラムは、ハッカーやクラッカーがソフトウェアのライセンス制限を乗り越えるのを妨げ、ハッカーがソフトウェアプログラムのコードを一部でも解読するのを防ぐために、一部を暗号化するなどのソフトウェアセキュリティ機構を利用している。しかし、このようなセキュリティ機構は、熟練したハッカーやクラッカーによって簡単に突破されてしまうことも多い。
【0004】
したがって、前述の議論に鑑みて、ソフトウェアプログラムのコードの解析を防止することによって、ソフトウェアプログラムを不正な改ざんや搾取から保護するソフトウェアセキュリティ機構で前述の欠点を克服する必要がある。
【摘要】
【0005】
本開示は、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための方法を提供しようとするものである。本開示はまた、コンピューティングデバイスにインストールされ、このコンピューティングデバイスに対応付けられた処理デバイスによってアクセスされると、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するコンピュータプログラム製品を提供しようとするものである。本開示はまた、アプリケーションプログラムと内部デバッガアプリケーションとを含み、実行されると、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するコンピュータプログラム製品を提供しようとするものである。本開示はまた、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するためのコンピューティングデバイスを提供しようとするものである。本開示はまた、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたアプリケーションプログラムのコードを解析することを阻止するためのシステムを提供しようとするものである。
【0006】
本開示は、ソフトウェアの違法コピー、及びソフトウェアプログラムの不正アクセス、改ざん、又は搾取という既存の問題に対する解決策を提供しようとするものである。本開示の目的は、従来技術における諸問題を少なくとも部分的に克服する解決策を提供し、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための信頼性が高く、効率的な方法を提供することである。
【0007】
第1の態様において、本開示の一実施形態は、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための方法を提供する。この方法は、
・ アプリケーションプログラム及び内部デバッガアプリケーションを含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を含む。
【0008】
第2の態様において、本開示の一実施形態は、処理デバイスにおいて実行されると、前記処理デバイスに本明細書のいずれかの実施形態による方法を実行させる、コンピュータ可読コード手段を含むコンピュータプログラム製品を提供する。特に、コンピューティングデバイスにインストールされるコンピュータプログラム製品が提供され、このコンピュータプログラム製品は、ソフトウェアプログラムのプログラム命令を格納した非一時的機械可読データ記憶媒体を備え、前記プログラム命令は、前記コンピューティングデバイスに対応付けられた処理デバイスによってアクセスされると、前記処理デバイスに、
・ アプリケーションプログラム及び内部デバッガアプリケーションを含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる。
【0009】
第3の態様において、本開示の一実施形態は、コンピューティングデバイスのための非一時的な機械可読データ記憶媒体として実施されたコンピュータプログラム製品を提供し、前記コンピュータプログラム製品は、ソフトウェアプログラムを含み、前記ソフトウェアプログラムは、
・ アプリケーションプログラムと、
・ 外部デバッガアプリケーションが前記ソフトウェアプログラムのコードを解析することを阻止するべく、前記コンピューティングデバイスのオペレーションシステムのカーネル資源を利用するように構成された内部デバッガアプリケーションと、
を備え、
実行時に、前記内部デバッガアプリケーションは、前記コンピューティングデバイスに、
・ 前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードすることと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる。
【0010】
本発明によるコンピュータプログラム製品は、外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するために、以下に概説するようなコンピュータデバイス又はシステムにおいて格納及び実行されてもよい。
【0011】
第4の態様において、本開示の一実施形態は、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための当該コンピューティングデバイスを提供する。このコンピューティングデバイスは、
・ アプリケーションプログラム及び内部デバッガアプリケーションを含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行うように構成される。
【0012】
第5の態様において、本開示の一実施形態は、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたアプリケーションプログラムのコードを解析することを阻止するためのシステムを提供する。このシステムは、
・ 前記コンピューティングデバイスに通信可能に接続されたデバッガサーバを備え、
前記デバッガサーバは、内部デバッガアプリケーションが前記アプリケーションプログラムをアタッチするように構成され、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成され、
実行時に、前記内部デバッガアプリケーションは、前記コンピューティングデバイスに、
・ 前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードすることと、
・ 前記アプリケーションプログラムの前記コードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる。
【0013】
本開示の実施形態は、従来技術における前述の問題を実質的に解消し、又は少なくとも部分的に解決し、アプリケーションプログラムのコードの解析を防止するための信頼性が高く、効率的な方法を提供するものである
【0014】
本開示の追加の態様、効果、特徴、及び目的は、図面及び後続する添付の請求項と関連して解釈される例示的な実施形態の詳細な説明から明らかになるであろう。
【0015】
本開示の特徴は、添付の請求項によって定義される本開示の範囲から逸脱することなく、様々な組合せで組み合わせることが可能であることが理解されるであろう。
【図面の簡単な説明】
【0016】
上記の摘要及び例示的な実施形態についての以下の詳細な説明は、添付の図面と併せて読むとよりよく理解される。本開示を説明する目的で、本開示の例示的な構造が図面に示されている。しかしながら、本開示は、本明細書に開示される特定の方法及び手段に限定されるものではない。さらに、当業者であれば、図面が縮尺どおりでないことは理解できるであろう。可能な限り、同種の要素には同一の符号を付している。
【0017】
以下に、例示のみを目的として、本開示の実施形態を下記の図を参照しながら説明する。
図1】本開示の一実施形態による、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための方法のステップを示すフローチャートである。
図2】本開示の一実施形態による、コンピューティングデバイスのブロック図である。
図3】本開示の一実施形態による、コンピューティングデバイス(図1のコンピューティングデバイスなど)の動作を示すブロック図である。
図4】本開示の一実施形態による、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたアプリケーションプログラムのコードを解析することを阻止するためのシステムのブロック図である。
【0018】
図面中、下線付きの符号は、その符号が配置されている、又は隣接している要素を表すために使用される。下線のない符号は、その符号と要素を結ぶ線によって識別される要素に関する。下線が引かれておらず、矢印が対応付けられている符号は、その矢印が指し示す要素全体を識別するために使用される。
【実施形態の詳細な説明】
【0019】
以下の詳細な説明は、本開示の実施形態と、それらを実施可能な方法とを示す。本開示を実施するいくつかの態様を開示したが、当業者であれば、本開示を実施又は実践するための他の実施形態も可能であることを認識するであろう。
【0020】
第1の態様において、本開示の一実施形態は、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための方法を提供する。この方法は、
・ アプリケーションプログラム及び内部デバッガアプリケーションを含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を含む。
【0021】
第2の態様において、本開示の一実施形態は、コンピューティングデバイスにインストールされるコンピュータプログラム製品を提供する。このコンピュータプログラム製品は、ソフトウェアプログラムのプログラム命令を格納した非一時的機械可読データ記憶媒体を備え、前記プログラム命令は、前記コンピューティングデバイスに対応付けられた処理デバイスによってアクセスされると、前記処理デバイスに、
・ アプリケーションプログラム及び内部デバッガアプリケーションを含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる。
【0022】
第3の態様において、本開示の一実施形態は、コンピューティングデバイスのための非一時的な機械可読データ記憶媒体として実施されたコンピュータプログラム製品を提供し、前記コンピュータプログラム製品は、ソフトウェアプログラムを含み、前記ソフトウェアプログラムは、
・ アプリケーションプログラムと、
・ 外部デバッガアプリケーションが前記ソフトウェアプログラムのコードを解析することを阻止するべく、前記コンピューティングデバイスのオペレーションシステムのカーネル資源を利用するように構成された内部デバッガアプリケーションと、
を備え、
実行時に、前記内部デバッガアプリケーションは、前記コンピューティングデバイスに、
・ 前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードすることと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる。
【0023】
第4の態様において、本開示の一実施形態は、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するためコンピューティングデバイスを提供する。このコンピューティングデバイスは、
・ アプリケーションプログラム及び内部デバッガアプリケーションを含む前記ソフトウェアプログラムを初期化することであって、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行うように構成される。
【0024】
第5の態様において、本開示の一実施形態は、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたアプリケーションプログラムのコードを解析することを阻止するためのシステムを提供する。このシステムは、
・ 前記コンピューティングデバイスに通信可能に接続されたデバッガサーバを備え、
前記デバッガサーバは、内部デバッガアプリケーションが前記アプリケーションプログラムをアタッチするように構成され、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成され、
実行時に、前記内部デバッガアプリケーションは、前記コンピューティングデバイスに、
・ 前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードすることと、
・ 前記アプリケーションプログラムの前記コードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる。
【0025】
本開示は、動作時間中にアプリケーションプログラムと連動して内部デバッガアプリケーションを実装することによって、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止する方法を提供する。本開示は、アプリケーションプログラムのコードの解析を防止する方法でソフトウェアプログラムの実行を可能にし、これによって、アプリケーションプログラムのコードの不正アクセス及び改ざんを防止する方法及びシステムを提供する。本開示は、アプリケーションプログラムのコードを内部デバッガアプリケーションのコードと統合することによって、外部デバッガアプリケーションを阻止するための方法及びシステムを提供する。このような方法は、安価で手間がかからず、高効率にソフトウェアプログラムの違法コピーを防止することができるという利点がある。本開示は、アプリケーションプログラムに統合された内部デバッガアプリケーションをアタッチする方法であって、ユーザがソフトウェアプログラムに外部デバッガアプリケーションをアタッチすることを防止し、これによって、不正なユーザがソフトウェアプログラムのコードを解析することを制限する方法を提供する。
【0026】
本開示を通じて、「ソフトウェアプログラム」という用語は、コンピューティングデバイスにインストールされる、コードとも呼ばれる命令の集合又はセットを指す。この命令の集合又はセットは、ソフトウェアプログラムが意図するタスクを実行するようにコンピュータ又はデジタルシステムを構成するように、コンピューティングデバイス又は他のデジタルシステムによって実行可能である。ここで、「ソフトウェアプログラム」という用語は、内部デバッガアプリケーションのコードに埋め込まれたアプリケーションプログラムのコードを含み、ソフトウェアプログラムの初期化によって内部デバッガアプリケーションがロードされ、その後、内部デバッガアプリケーションにアプリケーションプログラムがロードされるようにする。本明細書で使用する「ソフトウェアプログラム」という用語は、アプリケーションプログラム及び内部デバッガアプリケーションを含む完全なソフトウェアパッケージを指すために使用され、コンピューティングデバイスで実行すると、外部デバッガアプリケーションがソフトウェアプログラムにアタッチするのを阻止し、これによって、ソフトウェアプログラムのコードの解析を防止することが理解されるであろう。
【0027】
一つ以上の実施形態において、「ソフトウェアプログラム」という用語は、RAM、ハードディスク、光ディスクなどの記憶媒体に格納された命令を含むことを意図しており、また、ROMなどに格納されたソフトウェアプログラムであるいわゆる「ファームウェア」も含むことを意図している。実施例によっては、ソフトウェアプログラムは、ソフトウェアアプリケーションを指す。このようなソフトウェアプログラムは様々な方法で構成される。例えば、ソフトウェアプログラムは、ライブラリ、リモートサーバなどに格納されたインターネットベースのプログラム、ソースコード、解釈コード、オブジェクトコード、直接実行可能コードなどとして構成されたソフトウェアコンポーネントを含んでいる。ソフトウェアプログラムは、特定の機能を実行するために、システムレベルのコード又はサーバなどに存在する他のソフトウェアへのコールを呼び出すことができることが理解されるであろう。さらに、ソフトウェアプログラムは、あらかじめ設定され、オペレーティングシステムとあらかじめ統合され、ソフトウェアアプライアンスを構築することもできる。
【0028】
本開示を通じて、本明細書で使用する「アプリケーションプログラム」という用語は、コンピューティングデバイスにインストールされる、コードとも呼ばれる命令の集合又はセットを意味する。本明細書では、プログラマ(「開発者」ともいう)が作成したアプリケーション、カーネル、ドライバ、割込みハンドラ、ライブラリなどを含めて、「アプリケーションプログラム」という用語を広義に使用する。言い換えれば、「アプリケーションプログラム」という用語は、コンピューティングデバイスで実行されたときに、特定の機能、タスク、又はアクティビティを実行するように設計された完全で自己完結型のコンピュータプログラムを含む。実施例によっては、アプリケーションプログラムは、ゲーム用アプリケーションプログラムである。例えば、ゲーム用アプリケーションプログラムには、レースゲーム、冒険ゲーム、パズルゲーム、アクションゲーム、ロールプレイングゲーム(RPG)、戦略ゲーム、シューティングゲーム、シミュレーションゲームなど、様々なジャンルのゲーム用アプリケーションが多数含まれていてもよい。
【0029】
さらに、アプリケーションプログラムは、RAM、ハードディスク、光ディスクなどの記憶媒体に格納されていてもよく、また、ROMなどに格納されたソフトウェアであるいわゆる「ファームウェア」も含むことを意図している。このようなアプリケーションプログラムは様々な方法で構成される。例えば、アプリケーションプログラムは、ライブラリ、リモートサーバなどに格納されたインターネットベースのプログラム、ソースコード、解釈コード、オブジェクトコード、直接実行可能なコードなどとして構成されたコンポーネントを含んでいる。アプリケーションプログラムは、特定の機能を実行するために、システムレベルのコードやサーバなどに存在する他のソフトウェアのコールを呼び出すことができることが理解されるであろう。
【0030】
さらに、本明細書で使用する「コード」という用語は、プロセッサ命令、データ(定数、変数、データ構造を含む)、又は命令とデータの両方を指す。本方法を実施することにより、不正なユーザによるコードの解析が防止されることが理解されるであろう。同様に、このような用語は、サブルーチン、関数、手続き、オブジェクトメソッド、コンピューティングデバイス、インターフェース、又はオブジェクト上で実行されるソフトウェアプログラム、実行可能アプリケーション、アプレット、サーブレット、ソースコード、オブジェクトコード、又は中間コード、共有ライブラリ及び/又は動的ロード/リンクライブラリ、及び/又は他の命令シーケンス又は命令数の群を実装するように設計された方法を含み得る。
【0031】
実施例によっては、アプリケーションプログラムのコードは、複数のコードブロックを含む。本明細書で使用する「コードブロック」という用語は、アプリケーションプログラムの1つ又は複数の意図されたタスクのうちの特定のタスクを実行するように構成された実行可能コードのモジュールを意味する。一般に、コードブロックは、入力を受け取り、入力を処理し、入力の処理に基づいて結果を出力として返すように構成される。1つ又は複数のコードブロックのそれぞれは、コンピューティングデバイス内のメモリと対応付けられている。
【0032】
実施例によっては、アプリケーションプログラムは、これに限定されるものではないがJava(登録商標)環境を含む適切な動作環境で開発され、これは一部では、C、C++、C#、Python、Rプログラミング言語、Oracleなどの言語を利用する環境を含む。当業者であれば、開示された方法及びシステムは、多様なプログラミング言語、プログラミングモデル、及びプログラム、さらにはソフトウェア開発の分野以外の技術的な試みに適用可能であり、ゲーム用アプリケーションプログラムのみに限定されないことが理解されるであろう。
【0033】
前述したように、アプリケーションプログラムは、コンピューティングデバイスにインストールされる。本開示を通じて、本明細書で使用される「コンピューティングデバイス」という用語は、概して、ユーザがアプリケーションプログラムに対応付けられた特定のタスクを実行することを可能にすることができる、ユーザに対応付けられた(又はユーザが使用する)電子機器に関するものである。さらに、コンピューティングデバイスは、無線通信ネットワークを介した音声通信及び/又はデータ通信に使用され得るあらゆる電子機器を含むように広義に解釈されることが意図されている。コンピューティングデバイスには、携帯電話、スマートフォン、モバイルインターネットデバイス(MID)、タブレットコンピュータ、ウルトラモバイルパーソナルコンピュータ(UMPC)、ファブレットコンピュータ、携帯情報端末(Personal Digital Assistant:PDA)、Webパッド、パーソナルコンピュータ(PC)、ハンディPC、ノートPC、デスクトップコンピュータ、ネットワーク接続ストレージ(Network-Attached Storage:NAS)デバイス、PCを組み込んだ大型タッチスクリーン、ゲーム機、テレビ(TV)セット、セットトップボックス(STB)、ビデオスロットマシン、ビデオポーカーマシンなどの対話型娯楽装置、キオスク、個人用カジノ装置を含み得るがこれらに限定されるものではなく、通常、ゲーム装置に関する上記の要素の多く又は全てを含む。
【0034】
なお、本明細書では、「コンピューティングデバイス」という用語は、アプリケーションプログラムと内部デバッガアプリケーションとを含むパッケージとして、ソフトウェアプログラムがインストールされた汎用コンピュータなどの電子機器を指す。さらに、「コンピューティングデバイス」という用語は、Microsoft Xbox(登録商標)、Nintendo Wii(登録商標)、Sony PlayStation(登録商標)などのゲーム機も含む意味で使用されている。
【0035】
さらに、コンピューティングデバイスは、処理デバイスとメモリとを含む。処理デバイスは、IntelやAMDが製造するマイクロプロセッサや、ARMがライセンス所有するマイクロマイクロプロセッサなど、1つ又は複数の既知のプロセッサであってもよい。処理デバイスは、並列処理を同時に実行するシングルコア又はマルチコアプロセッサを構成してもよい。例えば、プロセッサは、仮想処理技術で構成されたシングルコアプロセッサであってもよい。特定の実施形態では、処理デバイスは、論理プロセッサを使用して、複数のプロセスを同時に実行し、制御してもよい。処理デバイスは、仮想マシン技術、又は複数のソフトウェアプロセス、アプリケーション、プログラムなどを実行、制御、動作、操作、及び保存する能力を提供する他の既知の技術を実装してもよい。別の実施形態では、処理デバイスは、コンピューティングデバイスが複数のプロセスを同時に実行できるように並列処理機能性を提供するように構成されたマルチコアプロセッサ構成(例えば、デュアルコア、クアッドコアなど)を含んでもよい。当業者であれば、本明細書に開示された機能を提供する他の種類の処理デバイスの構成が実装され得ることを理解するであろう。さらに、メモリは、アプリ(複数可)などの1つ又は複数のプログラムを格納する、揮発性又は不揮発性の、磁気、半導体、ソリッドステート、テープ、光学、取り外し可能、取り外し不可能、又は他の種類の記憶装置又は有形(すなわち、非一時的)コンピュータ可読媒体を含んでもよい。一例として、コンピューティングデバイスは、ソフトウェアプログラムを実行するための1つ又は複数のモジュール、すなわち第1のモジュールと第2のモジュールを含む。具体的には、第1のモジュールはアプリケーションプログラムを実行するように構成され、第2のモジュールは内部デバッガアプリケーションを実行するように構成される。
【0036】
プログラムは、1つ又は複数の処理デバイスによって実行されたときに、既知のオペレーティングシステム機能を実行するオペレーティングシステムを含んでもよい。例として、オペレーティングシステムは、Microsoft Windows(登録商標)、Unix(登録商標)、Linux(登録商標)、Android(登録商標)、Microsoft XP、AIX(登録商標)、IBMのi5os、及びAppleのオペレーティングシステム、さらには、Microsoft CEなどのPDA型のオペレーティングシステム、又は他の種類のオペレーティングシステムを含んでいてもよい。したがって、開示される実施形態は、任意の種類のオペレーティングシステムを動作させるコンピューティングデバイスで動作し、機能することができる。コンピューティングデバイスは、プロセッサによって実行されると、ネットワーク及び/又はローカルネットワークとの通信を提供する通信ソフトウェア、例えば、ウェブブラウザソフトウェア、タブレット、又はスマートハンドヘルドデバイスネットワークソフトウェアなどを含んでもよい。
【0037】
本開示を通じて、「ユーザ」という用語は、コンピューティングデバイスに対応付けられた人、人間を指し、コンピューティングデバイス上でアプリケーションプログラムを動作させることが可能である。「正規ユーザ」と「不正なユーザ」という用語は、正規ユーザはコードを解析するアクセス権を持つプログラマ又は開発者、すなわち正規ユーザはアプリケーションプログラムのコードを閲覧、修正、又は削除するアクセス権を持つのに対し、不正なユーザはアプリケーションプログラムのコードを解析するアクセス権を持たないユーザ(ゲーム用アプリケーションの場合はプレイヤ)であるという点で異なる。
【0038】
前記方法は、アプリケーションプログラム及び内部デバッガアプリケーションを含むソフトウェアプログラムを初期化することを含む。ソフトウェアプログラムは、その初期化時に、内部デバッガアプリケーションにアプリケーションプログラムを前記内部デバッガアプリケーション内でロードするよう指示し、内部デバッガアプリケーションは、コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するよう構成される。本開示を通じて、本明細書で使用する「オペレーティングシステム」という用語は、スレッド(すなわち、プロセス内の単一のシーケンスストリーム)をスケジュールし、メモリアクセス、入出力(IO)リソースへのアクセスなど、オペレーティングシステムリソースをスレッドに利用可能にする機能を提供するシステムソフトウェアのレイヤを意味する。また、オペレーティングシステムは、コンピュータリソースへのアクセス権の割当て及び権限を制御する。オペレーティングシステムは、キーボードからの入力を受け取り、ディスプレイに出力を送り、磁気ディスクドライブ上にファイルやディレクトリの記録を維持し、ディスクドライブやプリンタなどの周辺機器を制御するなど、低レベルで基本的なタスクを行うものである。
【0039】
本開示を通じて、「デバッガ」としての、又は一般に「デバッガ」として知られる「内部デバッガアプリケーション」という用語は、他のプログラム(「被デバッグプログラム」と呼ばれる)のテスト及びデバッグに使用されるコンピュータプログラム又はソフトウェアアプリケーションを指す。一般に、内部デバッガアプリケーションは、アプリケーションプログラムのテストや、アプリケーションプログラムの既知の問題、つまり「バグ」の原因を特定するために使用される。アプリケーションプログラムのテストは、一般的に「デバッグ」と呼ばれる。内部デバッガアプリケーションは、一度に1つのプログラム命令を実行し(プログラムの「1つのステップの実行」と呼ばれる)、次に実行されるべき命令を決定するように構成されているという特徴がある。さらに、内部デバッガアプリケーションは、コンピュータのレジスタや記憶場所を調べたり、変更したりするために使用される。内部デバッガアプリケーションは、動作中のアプリケーションプログラムの制御だけでなく、その実行状態に関する情報をプログラムに提供する。アプリケーションプログラムの状態には、プログラム及びデータメモリ、ハードウェアレジスタ、プログラムスタック、キュー、同期オブジェクト、プログラムアカウンティング情報などのオペレーティングシステムオブジェクトが含まれる。内部デバッガアプリケーションは、停止(あるいは、起動、中断、終了、命令ステップオーバー、分岐ステップイン、ステートメントステップオーバー、サブルーチン呼び出しステップスルー、ブレークポイントでの停止(詳細は後述)、データ監視ポイントでの停止)等の操作でアプリケーションプログラムの実行を制御するように構成される。
【0040】
具体的には、アプリケーションプログラムが内部デバッガアプリケーションにアタッチされ、ソフトウェアプログラムを動作させると、外部デバッガのソフトウェアプログラムへのアタッチが阻止され、これによって、アプリケーションプログラムのコードの解析を防ぐ。以下、「外部デバッガアプリケーション」という用語は、ソフトウェアプログラムと一体化していないデバッガアプリケーションであり、ソフトウェアプログラムのコードを解析する目的でアプリケーションプログラムにアタッチされようとするものを指す。さらに、「外部デバッガアプリケーション」は、本発明の方法及びシステムを実施することにより遮断される不正なデバッガアプリケーションである。例えば、内部デバッガアプリケーションを動作させることにより、外部デバッガアプリケーションを同じコンピューティングデバイス内で動作させることを阻止する。一例としての実施形態では、コンピューティングデバイスのオペレーティングシステム(カーネルなど)は、同時に1つのデバッガアプリケーションのみを1つのプロセスにアタッチできるように構成される。
【0041】
さらに、前述したように、内部デバッガアプリケーションは、オペレーティングシステムのカーネル資源を利用する。本開示を通じて、本明細書で使用される「カーネル資源」は、コンピューティングデバイスに対応付けられたオペレーティングシステムの中心的なモジュールを指す。カーネルはオペレーティングシステムの中で最初にロードされ、メモリ内に残る部分であるという特徴がある。カーネルは、メモリ管理、プロセス及びタスク管理、ディスク管理などを担う。カーネルは、デバイスのハードウェアとアプリケーションプログラムを接続する。カーネルは、オペレーティングシステムのソフトウェア又はその一部であり、アプリケーションプログラムの実行スレッドに代わってコンピューティングデバイスのハードウェアへの安全なアクセスを提供する役割を担うという特徴がある。さらに、カーネルは、メモリへのアクセス、処理能力、入出力リソースなど、コンピューティングデバイスの他のコンポーネントへのアクセスも提供する。カーネルは通常、ある種の全てのデバイスに共通な命令セットとしてハードウェアの抽象化も提供し、これによって、アプリケーションプログラムやオペレーティングシステムの他のコンポーネントから根本的な複雑さを隠すことを目的としている。有益なことに、カーネル資源は、コンピューティングデバイスのハードウェアへのアクセスを制御及び仲介し、プロセス、スレッド、ファイル、デバイスなどの基本的な抽象化を実装及びサポートし、メモリ、プロセッサ、ディスク、ファイル記述子、プロセス記述子、スレッド記述子などのオペレーティングシステムリソースの割当て及びスケジューリングを行い、オペレーティングシステムリソースのセキュリティ及び保護を提供するカーネルサービスを提供する。本明細書に記載されたオペレーティングシステム及びカーネル資源の機能及び動作は、本明細書に添付された請求項の範囲を不当に制限すべきではなく、オペレーティングシステム及びカーネル資源は、当技術分野で知られているような多様な機能及び動作を実行できることが理解されるであろう。
【0042】
さらに、この方法は、内部デバッガアプリケーションにアプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示することを含む。ここで、ソフトウェアプログラムは、ソフトウェアプログラムの初期化時に、アプリケーションプログラムを内部デバッガアプリケーション内でロードすることを指示する1つ又は複数のバッチファイルをさらに含んでもよい。実施例によっては、本方法は、内部デバッガアプリケーション内でロードするようにアプリケーションプログラムを構成することを含む。ここで、アプリケーションプログラムを内部デバッガアプリケーション内でロードすることは、アプリケーションプログラムが内部デバッガアプリケーション内で動作するように構成されていることを意味する。アプリケーションプログラムは、動作時間中に内部デバッガアプリケーション内で動作するように構成され、これによって、外部デバッガアプリケーションが特定のアプリケーションプログラムをデバッグすることを防止することが理解されるであろう。
【0043】
実施例によっては、アプリケーションプログラムは、コンピューティングデバイスのユーザによるソフトウェアプログラムの開始時に、内部デバッガアプリケーションを初期化するように構成される。例えば、アプリケーションプログラムの実行ファイルをクリックして、内部デバッガアプリケーション内でアプリケーションプログラムをロードするなどの方法で、ユーザはソフトウェアプログラムを開始し得る。実施例によっては、内部デバッガアプリケーションは、アプリケーションプログラムのコードの実行を初期化する。アプリケーションプログラムは、内部デバッガアプリケーションの初期化後にのみ実行するように構成されていることが理解されるであろう。この方法では、外部デバッガアプリケーションがアプリケーションプログラムにアタッチされないことを保証し、これによって、アプリケーションプログラムのコードを解析又は改ざんするための不正アクセスの可能性を排除する。アプリケーションプログラムのコードが内部デバッガアプリケーションで動作するように構成されるような方法で、ソフトウェアプログラムの初期化が内部デバッガアプリケーションの初期化をトリガするように、アプリケーションプログラムのコードが内部デバッガアプリケーションのコード内で統合されてソフトウェアプログラムを構成することが理解されるであろう。
【0044】
さらに、この方法は、アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、アプリケーションプログラムのコードに対する実行経路を定義するべく、内部デバッガアプリケーションを実行することを含む。内部デバッガアプリケーションは、アプリケーションプログラムのコードの1つ又は複数の命令セットの後に、アプリケーションプログラムのコードに1つ又は複数のブレークポイントを導入するように構成される。
【0045】
ここで、「ブレークポイント」という用語は、アプリケーションプログラムの実行中に意図的に停止又は一時停止させることを指す。特に、ブレークポイントは、アプリケーションプログラムの実行が期待どおりに機能しているかどうかを判定するために挿入されることが多い。ブレークポイントは、ブレークポイントに到達した直後に動作中のアプリケーションプログラムに割り込むために使用される。特に、ブレークポイントは、アプリケーションプログラムのコード内の異なる命令に挿入され、挿入されたブレークポイントに応じて新しい実行経路が定義される。前述したように、アプリケーションプログラムは、内部デバッガアプリケーション内でロードするように構成される。一例として、内部デバッガアプリケーションの実行を親プロセス、アプリケーションプログラムの実行を子プロセスとし、それに応じて実行経路を定義することができる。
【0046】
実施例によっては、1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含むように設定される。ここで、命令は、コンピューティングデバイスに対応付けられたメモリのメモリアドレスを含んでもよい。内部デバッガアプリケーションのコードからメモリアドレスが取得され、それに応じて別のコードブロックの実行に移行する。実施例によっては、1つ又は複数のブレークポイントは、アプリケーションプログラムのコード内の1つ又は複数の所定のコードブロックの末尾に設定される。実施例によっては、1つ又は複数のブレークポイントは、アプリケーションプログラムのコード内の1つ又は複数のコードブロックの実行頻度に基づいて設定される。実施例によっては、1つ又は複数のブレークポイントは、アプリケーションプログラムのコード内の1つ又は複数のコードブロックの末尾にランダムに設定される。
【0047】
さらに、この方法は、そのコードに対して定義された実行経路に従って、アプリケーションプログラムを実行することを含む。ここで、「実行経路」という用語は、実行命令セットがコンピューティングデバイスのメモリ内の指定された固有の位置の実行ファイルにアクセスするために従うべき経路を指する。実行経路は、実行前及びコンピューティングデバイスのオペレーティングシステムがカーネル資源を取得した後に定義される。特定のブレークポイントに続く命令に対してブレークポイントが挿入されると、実行経路が再定義されることが理解されるであろう。さらに、この方法は、1つ又は複数のブレークポイントのいずれかに達するとアプリケーションプログラムのコードの実行を停止することを含む。ここで、ブレークポイントに到達すると、第1の実行経路におけるアプリケーションプログラムのコードの実行が中断され、第2の実行経路においてアプリケーションプログラムのコードの実行が開始される。さらに、この方法は、アプリケーションプログラムのコードに対して定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、内部デバッガアプリケーションに制御を渡すことを含む。ここで、第1の実行経路におけるアプリケーションプログラムの実行を停止した後、第2の実行経路を経由して内部デバッガアプリケーションに制御が移される。内部デバッガアプリケーションのコードは、アプリケーションプログラムのコードに対する第3の実行経路に従って、実行されるべき次の命令のアドレスを提供する。
【0048】
アプリケーションプログラムのコード内の1つ又は複数の所定のコードブロックの末尾に1つ又は複数のブレークポイントを設定する場合、これらのブレークポイントは、実行されるべき第2のコードブロックの最初の実行可能命令のメモリアドレスが内部デバッガアプリケーションのコードに格納されるように、第1のコードブロックの最後の実行可能命令の終了後に挿入される。ここで、対応するブレークポイントに到達すると、第1のコードブロックの最後の実行可能命令の実行後にアプリケーションプログラムの実行が停止され、内部デバッガアプリケーションに制御が移される。さらに、実行されるべき別のコードブロックの最初の実行可能命令のメモリアドレスは、内部デバッガアプリケーションのコードから取得される。このような方法によって、不正なユーザがアプリケーションのコード全体についてアクセス権を持たないように保証することが理解されるであろう。ユーザがアプリケーションプログラムのコードの特定部分にアクセスできるシナリオでは、ブレークポイントに到達するとアプリケーションプログラムの実行が停止し、次の命令のアドレスが不正ユーザには入手できなくなり、これによって、ソフトウェアプログラムの違法コピーを防止する。
【0049】
アプリケーションプログラムのコード内の1つ又は複数のコードブロックの実行頻度に基づいて1つ又は複数のブレークポイントを設定する場合、ゲーム用アプリケーションプログラムなどのアプリケーションプログラムでは最も頻繁に使用されるコードブロックの後又は前にこれらのブレークポイントを周期的に挿入する。ブレークポイントの挿入は、前述の方法と同様に、コンピューティングデバイスのメモリにアクセスすることで行う。このように、使用頻度の高いコードブロックの前にブレークポイントを設けることで、不正ユーザにアクセスされる危険性の高いコードブロックを確実に保護する。
【0050】
また、アプリケーションプログラムのコード内の1つ又は複数のコードブロックの末尾にランダムに1つ又は複数のブレークポイントを設定する場合、いずれかのコードブロックの後又は前にランダムにこれらのブレークポイントを挿入する。ここで、ブレークポイントは、ソフトウェアプログラムを初期化するたびにブレークポイントの位置がランダムに変更されるように、1つ又は複数の位置に動的に挿入されてもよい。ブレークポイントの挿入方法は前述と同じであるが、ブレークポイントは動的に設定されることが理解されるであろう。
【0051】
本開示は、さらに、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたアプリケーションプログラムのコードを解析することを阻止するためのシステムを提供する。このシステムは、コンピューティングデバイスに通信可能に接続されたデバッガサーバを備える。本開示を通じて、「デバッガサーバ」で使用される「サーバ」という用語は、リモートデバッグに関連する情報を保存、処理、及び/又は共有するように構成されたプログラマブル及び/又は非プログラマブルコンポーネントを含む構造及び/又はモジュールを指す。実施例によっては、サーバは、リモートデバッグなどの様々な計算タスクを実行するために情報を強化することができる物理的又は仮想的な計算エンティティの任意の構成を含む。さらに、サーバは、単一のハードウェアサーバ及び/又は並列又は分散アーキテクチャで動作する複数のハードウェアサーバであってもよいことが理解されよう。一例として、サーバは、メモリ、プロセッサ、ネットワークアダプタなどのコンポーネントを含み、コンピューティングデバイスなどの他のコンピューティングコンポーネントと情報を保存、処理、及び/又は共有してもよい。
【0052】
コンピューティングデバイスは、通信ネットワークを介してデバッガサーバに通信可能に接続されているという特徴がある。例示的なネットワーク環境では、多数のコンピューティングデバイスがデバッガサーバに接続され、このデバッガサーバは、通信ネットワークを介して接続されたコンピューティングデバイスの各々にリモートデバッグサービスを提供するように構成される。前述のように、アプリケーションプログラムはコンピューティングデバイスにインストールされ、このアプリケーションプログラムがコンピューティングデバイスで初期化されると、デバッガサーバにアクセスするように構成される。アプリケーションプログラムは、コンピューティングデバイスがデバッガサーバと接続されているときにのみコンピューティングデバイス上で動作するように構成され、これによって、外部デバッガがアプリケーションプログラムのコードを解析するのを阻止することが理解されるであろう。
【0053】
ここで、通信ネットワークは、互いに接続され、一つの大きなネットワークとして機能する個々のネットワークの集合であってもよい。そのような個々のネットワークは、有線、無線、又はそれらの組合せであってもよい。このような個々のネットワークの例としては、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、無線LAN(WLAN)、無線WAN(WWAN)、無線MAN(WMAN)、インターネット、第2世代(2G)電気通信ネットワーク、第3世代(3G)電気通信ネットワーク、第4世代(4G)電気通信ネットワーク、及び世界規模相互運用マイクロ波アクセス(Worldwide Interoperability for Microwave Access:WiMAX)のネットワークが挙げられるが、これらに限定されない。
【0054】
これに加えて、又はその代わりに、コンピューティングデバイスは独自のBluetooth(登録商標)ネットワークを使用し、Bluetooth(登録商標)サーバに接続して、他の電子機器と同期を取ることができる。ネットワーク環境は、可能性に応じて、様々な方法で実装してもよい。一例としてあるシナリオでは、ネットワーク環境は、サーバとデータベースを空間的に配列する方法で実装してもよい。別の例のシナリオでは、ネットワーク環境は、通信ネットワークを介して相互に通信可能に接続されたサーバとデータベースの空間的に分散した配置によって実装してもよい。さらに別の例のシナリオでは、サーバとデータベースは、クラウドコンピューティングサービスを介して実装されてもよい。
【0055】
さらに、デバッガサーバは、アプリケーションプログラムに内部デバッガアプリケーションをアタッチするように構成される。ここで、内部デバッガアプリケーションは、コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される。内部デバッガアプリケーションの機能は、本開示でこれまでに説明したものと同じであるという特徴がある。ただし、本システムで使用される内部デバッガアプリケーションは、アプリケーションプログラムと統合されていないことが理解されよう。ここで、内部デバッガアプリケーションは、コンピューティングデバイスによって通信ネットワークを介してリモートアクセスされるように構成される。内部デバッガアプリケーションは、実行されると、コンピューティングデバイスに、アプリケーションプログラムを内部デバッガアプリケーション内でロードさせる。さらに、内部デバッガアプリケーションは、アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、アプリケーションプログラムのコードに対する実行経路を定義する。内部デバッガアプリケーションは、そのコードに対して定義された実行経路に従って、アプリケーションプログラムを実行する。内部デバッガアプリケーションは、1つ又は複数のブレークポイントのいずれかに達するとアプリケーションプログラムのコードの実行を停止する。さらに、内部デバッガアプリケーションは、アプリケーションプログラムのコードに対して定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、内部デバッガアプリケーションに制御を渡す。
【0056】
前述のように、本開示はまた、コンピューティングデバイスにインストールされるコンピュータプログラム製品に関する。このコンピュータプログラム製品は、ソフトウェアプログラムのプログラム命令を格納した非一時的な機械可読データ記憶媒体を含む。上記で開示された実施形態及び詳細は、実行されると外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止する、このコンピュータプログラム製品に準用される。
【0057】
実施例によっては、アプリケーションプログラムのコードは、複数のコードブロックを含み、1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含む。
【0058】
実施例によっては、コンピュータプログラム製品のプログラム命令は、処理デバイスによってアクセスされると、アプリケーションプログラムのコードに対して定義された実行経路において実行されるべき次のコードブロックのアドレスを提供するべく、この処理デバイスに内部デバッガアプリケーションに制御を渡させる。
【0059】
実施例によっては、コンピュータプログラム製品のプログラム命令は、処理デバイスによってアクセスされると、この処理デバイスに、アプリケーションプログラムのコード内の1つ又は複数の所定のコードブロックの末尾に1つ又は複数のブレークポイントを設定させる。
【0060】
実施例によっては、コンピュータプログラム製品のプログラム命令は、処理デバイスによってアクセスされると、この処理デバイスに、アプリケーションプログラムのコード内の1つ又は複数のコードブロックの実行頻度に基づいて、1つ又は複数のブレークポイントを設定させる。
【0061】
実施例によっては、コンピュータプログラム製品のプログラム命令は、処理デバイスによってアクセスされると、この処理デバイスに、アプリケーションプログラムのコード内の1つ又は複数のコードブロックの末尾に1つ又は複数のブレークポイントをランダムに設定させる。
【0062】
実施例によっては、コンピュータプログラム製品のプログラム命令は、処理デバイスによってアクセスされると、この処理デバイスに、コンピューティングデバイスのユーザによるその開始時に、内部デバッガアプリケーションを初期化するようにアプリケーションプログラムを構成させる。
【0063】
実施例によっては、コンピュータプログラム製品のプログラム命令は、処理デバイスによってアクセスされると、内部デバッガアプリケーションに、アプリケーションプログラムのコードの実行を初期化させる。
【0064】
実施例によっては、アプリケーションプログラムは、ゲーム用アプリケーションプログラムである。
【0065】
前述のように、本開示は、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するためのコンピューティングデバイスも提供する。上記で開示された実施形態及び詳細は、外部デバッガアプリケーションがソフトウェアプログラムのコードを解析することを阻止するための前記コンピューティングデバイスに準用される。
【0066】
実施例によっては、アプリケーションプログラムのコードは、複数のコードブロックを含み、1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含む。
【0067】
実施例によっては、コンピューティングデバイスは、アプリケーションプログラムのコードに対して定義された実行経路において実行されるべき次のコードブロックのアドレスを提供するべく、内部デバッガアプリケーションに制御を渡すようにさらに構成される。
【0068】
実施例によっては、コンピューティングデバイスは、アプリケーションプログラムのコード内の1つ又は複数の所定のコードブロックの末尾に1つ又は複数のブレークポイントを設定するようにさらに構成される。
【0069】
実施例によっては、コンピューティングデバイスは、アプリケーションプログラムのコード内の1つ又は複数のコードブロックの実行頻度に基づいて、1つ又は複数のブレークポイントを設定するようにさらに構成される。
【0070】
実施例によっては、コンピューティングデバイスは、アプリケーションプログラムのコード内の1つ又は複数のコードブロックの末尾に1つ又は複数のブレークポイントをランダムに設定するようにさらに構成される。
【0071】
実施例によっては、コンピューティングデバイスは、そのユーザによるアプリケーションプログラムの開始時に、内部デバッガアプリケーションを初期化するように構成される。
【0072】
実施例によっては、コンピューティングデバイスは、内部デバッガアプリケーションの初期化時に、アプリケーションプログラムのコードの実行を初期化するように構成される。
図面の詳細な説明
【0073】
図1を参照すると、本開示の一実施形態による、外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための方法のステップを示すフローチャート100が示されている。ステップ102において、アプリケーションプログラム及び内部デバッガアプリケーションを含むソフトウェアプログラムを初期化する。この内部デバッガアプリケーションは、コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成される。ステップ104において、アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、アプリケーションプログラムのコードに対する実行経路を定義するべく、内部デバッガアプリケーションを実行する。ステップ106において、そのコードに対して定義された実行経路に従って、アプリケーションプログラムを実行する。ステップ108において、1つ又は複数のブレークポイントのいずれかに達するとアプリケーションプログラムのコードの実行を停止する。ステップ110において、アプリケーションプログラムのコードに対して定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、内部デバッガアプリケーションに制御を渡す。
【0074】
ステップ102から110は例示に過ぎず、本明細書の特許請求の範囲から逸脱することなく、1つ又は複数のステップが追加され、1つ又は複数のステップが省略され、又は1つ又は複数のステップが異なる順序で提供される他の代替例も提供することができる。
【0075】
図2を参照すると、本開示の一実施形態による、コンピューティングデバイス200のブロック図が示されている。図示のように、コンピューティングデバイス200は、処理デバイス202と、オペレーティングシステム(OS)204と、基本入力出力システム(BIOS)206と、カーネル資源208と、を備える。処理デバイス202は、RAM(Random Access memory)212及びフラッシュメモリ214を含むメモリ210をさらに備える。ここで、処理デバイス202は、ソフトウェアプログラムの初期化時に、オペレーティングシステム204のカーネル資源208にアクセスするように構成される。さらに、処理デバイス202は、RAM212内のソフトウェアプログラムのコードに記憶場所を割り当てる。さらに、フラッシュメモリ214は、コンピューティングデバイス200の動作を可能にするべく、BIOS206及びOS204からのブートコードを格納するように構成される。
【0076】
図3を参照すると、本開示の一実施形態による、コンピューティングデバイス300(図1のコンピューティングデバイス200など)の動作を示すブロック図が示されている。図示のように、コンピューティングデバイス300は、メモリ304と通信する処理デバイス302を備える。ここで、ソフトウェアプログラム306のコードがメモリ304に格納されている。ソフトウェアプログラム306は、アプリケーションプログラム308と内部デバッガアプリケーション310とを含む。処理デバイス302は、メモリ304からソフトウェアプログラム306のコードにアクセスするように構成される。さらに、処理デバイス302は、ソフトウェアプログラム306の初期化時に、カーネル資源312を利用するように構成される。
【0077】
図4を参照すると、本開示の一実施形態による、外部デバッガアプリケーションがコンピューティングデバイス402にインストールされたアプリケーションプログラムのコードを解析することを阻止するためのシステム400のブロック図が示されている。図示のように、システム400は、デバッガサーバ404に通信可能に接続されたコンピューティングデバイス402を備える。さらに、コンピューティングデバイス402とデバッガサーバ404とは、通信ネットワーク406を介して通信可能に接続されている。ここで、デバッガサーバ404は、内部デバッガアプリケーションをアプリケーションプログラムにアタッチして、外部デバッガアプリケーションを阻止することによって、コンピューティングデバイス402にデバッグサービスを提供するように構成される。
【0078】
前述の本開示の実施形態は、添付の請求項に定義される本開示の範囲から逸脱することなく変更可能である。本開示を説明し、請求するために使用される「含む」、「備える」、「組み込む」、「有する」、「ある」などの表現は、非排他的に解釈されることを意図しており、すなわち明示的に説明されていない品目、構成要素、又は要素も存在することが許容される。また、単数形への言及は、その複数形にも関すると解釈される。
図1
図2
図3
図4
【手続補正書】
【提出日】2021-09-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
外部デバッガアプリケーションがコンピューティングデバイス(202、300)にインストールされたソフトウェアプログラム(306)のコードを解析することを阻止するための方法であって、
・ アプリケーションプログラム(308)及び内部デバッガアプリケーション(310)を含む前記ソフトウェアプログラムを初期化することであって、前記アプリケーションプログラムのコードは前記内部デバッガアプリケーションのコートに埋め込まれ、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションをロードすると共に前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステム(204)のカーネル資源(312)を利用するように構成され、前記内部デバッガアプリケーション内で前記アプリケーションプログラムをロードすることは、前記外部デバッガアプリケーションが前記ソフトウェアプログラムをアタッチし前記ソフトウェアプログラムの前記コードを解析することを防ぐ、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を含む方法。
【請求項2】
前記アプリケーションプログラムの前記コードは、複数のコードブロックを含み、
前記1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含む、請求項1に記載の方法。
【請求項3】
前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次のコードブロックのアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことを含む、請求項1又は2に記載の方法。
【請求項4】
前記1つ又は複数のブレークポイントは、前記アプリケーションプログラムの前記コード内の1つ又は複数の所定のコードブロックの末尾に設定される、請求項1から3のいずれかに記載の方法。
【請求項5】
前記1つ又は複数のブレークポイントは、前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの実行頻度に基づいて設定される、請求項1から4のいずれかに記載の方法。
【請求項6】
前記1つ又は複数のブレークポイントは、前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの末尾にランダムに設定される、請求項1から5のいずれかに記載の方法。
【請求項7】
前記アプリケーションプログラムは、前記コンピューティングデバイスのユーザによるその開始時に前記内部デバッガアプリケーションを初期化するように構成される、請求項1から6のいずれかに記載の方法。
【請求項8】
前記内部デバッガアプリケーションは、前記アプリケーションプログラムの前記コードの実行を初期化する、請求項1から7のいずれかに記載の方法。
【請求項9】
前記アプリケーションプログラムは、ゲーム用アプリケーションプログラムである、請求項1から8のいずれかに記載の方法。
【請求項10】
コンピューティングデバイス(200)にインストールされるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、ソフトウェアプログラムのプログラム命令を格納した非一時的機械可読データ記憶媒体を備え、前記プログラム命令は、前記コンピューティングデバイスに対応付けられた処理デバイスによってアクセスされると、前記処理デバイスに、
・ アプリケーションプログラム及び内部デバッガアプリケーションを含む前記ソフトウェアプログラムを初期化することであって、前記アプリケーションプログラムのコードは前記内部デバッガアプリケーションのコートに埋め込まれ、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションをロードすると共に前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステムのカーネル資源を利用するように構成され、前記内部デバッガアプリケーション内で前記アプリケーションプログラムをロードすることは、前記外部デバッガアプリケーションが前記ソフトウェアプログラムをアタッチし前記ソフトウェアプログラムの前記コードを解析することを防ぐ、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる、コンピュータプログラム製品。
【請求項11】
前記アプリケーションプログラムの前記コードは、複数のコードブロックを含み、
前記1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含む、請求項10に記載のコンピュータプログラム製品。
【請求項12】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次のコードブロックのアドレスを提供するべく、前記処理デバイスに前記内部デバッガアプリケーションに制御を渡させる、請求項10又は11に記載のコンピュータプログラム製品。
【請求項13】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記処理デバイスに、前記アプリケーションプログラムの前記コード内の1つ又は複数の所定のコードブロックの末尾に前記1つ又は複数のブレークポイントを設定させる、請求項10から12のいずれかに記載のコンピュータプログラム製品。
【請求項14】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記処理デバイスに、前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの実行頻度に基づいて前記1つ又は複数のブレークポイントを設定させる、請求項10から13のいずれかに記載のコンピュータプログラム製品。
【請求項15】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記処理デバイスに、前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの末尾に前記1つ又は複数のブレークポイントをランダムに設定させる、請求項10から14のいずれかに記載のコンピュータプログラム製品。
【請求項16】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記処理デバイスに、前記コンピューティングデバイスのユーザによるその開始時に、前記内部デバッガアプリケーションを初期化するように前記アプリケーションプログラムを構成させる、請求項10から15のいずれかに記載のコンピュータプログラム製品。
【請求項17】
前記プログラム命令は、前記処理デバイスによってアクセスされると、前記内部デバッガアプリケーションに、前記アプリケーションプログラムの前記コードの実行を初期化させる、請求項10から16のいずれかに記載のコンピュータプログラム製品。
【請求項18】
前記アプリケーションプログラムは、ゲーム用アプリケーションプログラムである、請求項10から17のいずれかに記載のコンピュータプログラム製品。
【請求項19】
コンピューティングデバイス(202、300)のための非一時的な機械可読データ記憶媒体として実施されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、ソフトウェアプログラムを含み、前記ソフトウェアプログラムは、
・ アプリケーションプログラムと、
・ 外部デバッガアプリケーションが前記ソフトウェアプログラムのコードを解析することを阻止するべく、前記コンピューティングデバイスのオペレーションシステム(204)のカーネル資源(312)を利用するように構成された内部デバッガアプリケーション(310)と、
を備え、
前記アプリケーションプログラムのコードは前記内部デバッガアプリケーションのコートに埋め込まれ、
実行時に、前記内部デバッガアプリケーションは、前記コンピューティングデバイスに、
・ 前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードし、それによって、前記外部デバッガアプリケーションが前記ソフトウェアプログラムをアタッチし前記ソフトウェアプログラムの前記コードを解析することを防ぐことと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる、コンピュータプログラム製品。
【請求項20】
外部デバッガアプリケーションがコンピューティングデバイスにインストールされたソフトウェアプログラムのコードを解析することを阻止するための当該コンピューティングデバイス(202、300)であって、
・ アプリケーションプログラム(308)及び内部デバッガアプリケーション(310)を含む前記ソフトウェアプログラムを初期化することであって、前記アプリケーションプログラムのコードは前記内部デバッガアプリケーションのコートに埋め込まれ、前記ソフトウェアプログラムは、その初期化時に、前記内部デバッガアプリケーションをロードすると共に前記内部デバッガアプリケーションに前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードするように指示し、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステム(202)のカーネル資源(312)を利用するように構成され、前記内部デバッガアプリケーション内で前記アプリケーションプログラムをロードすることは、前記外部デバッガアプリケーションが前記ソフトウェアプログラムをアタッチし前記ソフトウェアプログラムの前記コードを解析することを防ぐ、初期化することと、
・ 前記アプリケーションプログラムのコードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義するべく、前記内部デバッガアプリケーションを実行することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行うように構成されたコンピューティングデバイス。
【請求項21】
前記アプリケーションプログラムの前記コードは、複数のコードブロックを含み、
前記1つ又は複数のブレークポイントは、1つのコードブロックからその実行後に別のコードブロックに移動するための命令を含む、請求項20に記載のコンピューティングデバイス。
【請求項22】
前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次のコードブロックのアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すようにさらに構成される、請求項20又は21に記載のコンピューティングデバイス。
【請求項23】
前記アプリケーションプログラムの前記コード内の1つ又は複数の所定のコードブロックの末尾に前記1つ又は複数のブレークポイントを設定するようにさらに構成される、請求項20から22のいずれかに記載のコンピューティングデバイス。
【請求項24】
前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの実行頻度に基づいて、前記1つ又は複数のブレークポイントを設定するようにさらに構成される、請求項20から23のいずれかに記載のコンピューティングデバイス。
【請求項25】
前記アプリケーションプログラムの前記コード内の1つ又は複数のコードブロックの末尾に前記1つ又は複数のブレークポイントをランダムに設定するようにさらに構成される、請求項20から24のいずれかに記載のコンピューティングデバイス。
【請求項26】
前記コンピューティングデバイスのユーザによる前記アプリケーションプログラムの開始時に、前記内部デバッガアプリケーションを初期化するように構成される、請求項20から25のいずれかに記載のコンピューティングデバイス。
【請求項27】
前記内部デバッガアプリケーションの初期化時に、前記アプリケーションプログラムの前記コードの実行を初期化するように構成される、請求項20から26のいずれかに記載のコンピューティングデバイス。
【請求項28】
外部デバッガアプリケーションがコンピューティングデバイス(300)にインストールされたアプリケーションプログラム(308)のコードを解析することを阻止するためのシステム(400)であって、
・ 前記コンピューティングデバイスに通信可能に接続されたデバッガサーバ(404)を備え、
前記デバッガサーバは、内部デバッガアプリケーション(310)が前記アプリケーションプログラムをアタッチするように構成され、前記内部デバッガアプリケーションは、前記コンピューティングデバイスのオペレーティングシステム(204)のカーネル資源(312)を利用するように構成され、
実行時に、前記内部デバッガアプリケーションは、前記コンピューティングデバイスに、
・ 前記アプリケーションプログラムを前記内部デバッガアプリケーション内でロードし、それによって、前記外部デバッガアプリケーションが前記ソフトウェアプログラムをアタッチし前記ソフトウェアプログラムの前記コードを解析することを防ぐことと、
・ 前記アプリケーションプログラムの前記コードに1つ又は複数のブレークポイントを設定して、前記アプリケーションプログラムの前記コードに対する実行経路を定義することと、
・ 前記コードに対して前記定義された実行経路に従って前記アプリケーションプログラムを実行することと、
・ 前記1つ又は複数のブレークポイントのいずれかに達すると前記アプリケーションプログラムの前記コードの実行を停止することと、
・ 前記アプリケーションプログラムの前記コードに対して前記定義された実行経路において実行されるべき次の命令のアドレスを提供するべく、前記内部デバッガアプリケーションに制御を渡すことと、
を行わせる、システム。
【国際調査報告】