JP2006522387A - コンピュータソフトウェアの実行を管理するためのシステムおよび方法 - Google Patents

コンピュータソフトウェアの実行を管理するためのシステムおよび方法 Download PDF

Info

Publication number
JP2006522387A
JP2006522387A JP2006503479A JP2006503479A JP2006522387A JP 2006522387 A JP2006522387 A JP 2006522387A JP 2006503479 A JP2006503479 A JP 2006503479A JP 2006503479 A JP2006503479 A JP 2006503479A JP 2006522387 A JP2006522387 A JP 2006522387A
Authority
JP
Japan
Prior art keywords
computer program
application computer
execution
application
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.)
Pending
Application number
JP2006503479A
Other languages
English (en)
Inventor
デーヴィッド・エー・ペンサック
ダグラス・シー・メレル
Original Assignee
ヴィアイ・ラボラトリーズ・エルエルシー
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 ヴィアイ・ラボラトリーズ・エルエルシー filed Critical ヴィアイ・ラボラトリーズ・エルエルシー
Publication of JP2006522387A publication Critical patent/JP2006522387A/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
    • 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
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

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

Abstract

アプリケーションプログラムの実行を管理する方法は、アプリケーションの準備過程と、アプリケーションの実行過程とを含む。準備過程は、アプリケーションプログラムを関連するセグメントに分割し、かつ少なくとも1つのセグメントの命令を暗号化する。準備過程は、暗号化された命令を実行可能ファイルの中の少なくとも2つの離れた領域に配置し、かつヘッダ情報を少なくとも1つの離れた領域に対応づける。ヘッダは、復号鍵と他の離れた領域の位置とを識別する。したがって、結果として生じる実行ファイルは、実行されず、かつ反応するプロセスをオペレーティングシステムに呼び出させる部分を有する。実行過程は、アプリケーションの命令の少なくとも一部が暗号化された形式でのみそのコンピュータに入手可能であるとき、保護されたアプリケーションの実行を開始する。ユーザが認証され、その後、暗号化された部分が復号化され、かつ実行が再開される。

Description

本発明は、コンピュータソフトウェアの実行を管理するためのシステムおよび方法、そして、その管理に関するプログラミング構造を有するコンピュータプログラムに関する。
本出願は、2003年2月11日に出願された米国仮特許出願第60/466,260号に基づいて優先権を主張し、特にその開示の全体を引用してここに組み込む。
オペレーティングシステム(OS)は、その処理の実行においてコンピュータまたはネットワークを管理するコンピュータプログラムおよびルーチンの集合である。Windows 2000(登録商標)、Windows NT(登録商標)、Windows XP(登録商標)のようなMicrosoft Windows(登録商標)のバージョンは、オペレーティングシステムの例である。その他のオペレーティングシステムも知られている。
アプリケーションプログラム(AP)は、特定の処理を実行し、特定の問題を解き、特定のレポートを生成し、あるいは、特定のファイルを更新するために記載されたプログラムである。Microsoft Word(登録商標)、Microsoft Excel(登録商標)、およびMicrosoft PowerPoint(登録商標)は、アプリケーションプログラムの例である。その他のアプリケーションも知られている。
オペレーティングシステムおよびアプリケーションプログラムはそれぞれ、様々なときにコンピュータリソースの制御を引き受けることが可能である。OSは典型的にコンピュータが最初にブートしたときにコンピュータリソースの制御を引き受ける。OSは、APの設計に依存してコンピュータリソースのいくらかまたは全ての制御をAPに譲る。マルチタスキングOSにおいて、OSおよび複数のAPは、OSの設計、APの設計、および外部のイベントに依存して、様々なときにコンピュータリソースを占有および開放することが可能である。オペレーティングシステムは、通常、APが終了した後、コンピュータリソースの制御を取り戻す。
大部分の現在のオペレーティングシステムは、APの正規でない実行に反応する機能を提供する。APは、時折、例外と呼ばれる正規でないイベントを発生する。例外は、例えばゼロによる除算のような正規でない演算操作を生じるハードウェア誤りのために発生し得る。また、例外は、コンピュータリソースが利用できないため、またはその他の原因のために発生し得る。例外の場合には、OSはAPを停止させ、コンピュータリソースの制御を引き受け、またはその他の行動をとる。
また、大部分の現在のオペレーティングシステムは、アプリケーションのデバッグを支援する機能を提供する。例えば、Microsoft(登録商標)のオペレーティングシステムは、デバッグに関する多数の機能を持つアプリケーションプログラムインタフェースを有する。APはブレークポイントのためのコマンドと共にプログラムすることができる。APがブレークポイントコマンドを実行すると、OSはAPの実行を停止させる。そして、OSはデバッガアプリケーションへ制御を移すことが可能である。(OSは、例外イベントに反応してデバッガアプリケーションへ制御を渡すことも可能である。)APが停止されている間、OSはデバッガアプリケーションに、メモリにある命令の変更を含めて、APに割り当てられたメモリ位置およびその他のコンピュータリソースにアクセスさせることが可能である。デバッガアプリケーションは、OSにAPの実行の再開を指示することができる。個々のOSに依存してその他の機能も利用可能である。いくつかのオペレーティングシステムにおいては、指定されたときに、一つのデバッガプログラムのみを一つのAPに対応付けることも可能である。
本発明の好ましい実施形態について、ここで本発明のいくつかの形態を強調および前置きするために要約する。この要約においては単純化および省略がされている。そのような単純化および省略は、本発明の範囲を限定することを意図するものではない。
コンパイラのようなポストプロセッサプログラムは、存在するアプリケーションプログラムを入力とし、ファンクションエントリポイントをスキャンし、そしてエントリポイントを呼び出す。ポストプロセッサはアプリケーションのファンクションを暗号化し、ファンクションコードの位置についての情報をスクランブルし、復号化ルーチンを追加し、変更に対して検出および反応するコードを追加し、そして部分的に暗号化された実行可能ファイルを出力する。保護されたアプリケーションプログラムにおける保護されたファンクションは、たとえモジュールが復号化されていても、ファンクションが有効に実行されないように、オペレーティングシステムが正規でない命令として解釈する、それらのヘッダに書き込まれた情報を有する。新たな実行可能ファイルは、元のアプリケーションと同様に起動および動作するが、正常に動作するために復号鍵を取得しなければならない。ポストプロセッサは、ユーザから、鍵サーバから、ファイルから、またはその他の各種手段によって直接に復号鍵を取得できるように保護されたアプリケーションを設定することができる。
ポストプロセッサに代えて、アプリケーションのソースコードは、まず最初に保護された特性を含めて記載し、コンパイルし、そして暗号化することも可能である。
実行コントローラは、デバッガとしてオペレーティングシステムと相互に作用し、かつアプリケーションの実行を制御する。オペレーティングシステムが保護された実行可能ファイルの中に正規でないアドレス、命令、または変更された命令コードを検出したときに、実行の制御は(以後、実行コントローラと呼ばれる)デバッガ/復号化ルーチンに移される。
実行コントローラは、復号化を管理し、かつ変更から保護するためのそれ自身のコードを有する。また、実行コントローラは、アプリケーションの制御を行うためにユーザ自身がデバッガをロードすることを防止する。実行コントローラは、保護された実行可能ファイルを変更する試みが存在したか検出し、かつ変更に対して反応する。アプリケーションの保護を扱う者の判断において、変更されたアプリケーションは、実行の継続を許可するか、あるいは、変更した者またはハッカーが適用された保護の特性についての情報を取得することを防止する方法でデグレードすることができる。
復号化されたファンクションが実行を完了した後、制御は実行コントローラに戻され、実行コントローラはオペレーティングシステムのページング領域からモジュールの復号化されたバージョンを削除するか、またはそれを再度暗号化する。
この方法の利点は、攻撃者に対して復号化された形式におけるアプリケーション全体へのアクセスを拒否することである。この方法は、アプリケーションの著作権者または所有者が適用することを選択する保護および/または特性を攻撃者が除去または回避できるように、攻撃者がアプリケーションの修正を可能にする情報を取得することを事実上不可能にする。この方法は、保護されたプログラムを変更または修正するための試みが行われたときに検出および対策を行う。開示されたシステムおよび方法のもう1つの利点は、ソースコードにアクセスすることなく、また、その他のプログラムの内部構造の経験的な知識を必要とせずに、既存のコンピュータソフトウェアアプリケーションを処理することができることである。
これらおよびその他の目的は、以下に含まれる図面および記載から明らかになる。
以下、本発明の好ましい実施形態について添付の図面を参照して説明する。
図1は、その実行を管理するためにAPを修正する過程を表す。そのような管理の目的はAPをデバッグすることではなく、その実行を権限が与えられたユーザに限定することである。例えば、APを開発した個人または会社はその利用に対して料金を課すことが可能である。あるいは、いくつかのコンピュータプログラムの米国外への輸出を制限することも可能である。管理の目的は、盗賊、ハッカー、泥棒、およびその他の権限のないユーザがAPを使用することを防止し、かつ変更に対して検出または反応することである。
管理過程の第1部分は、APの実行可能な命令列を修正することである。図1に示す例は、既にプログラムされ、デバッグされ、かつ実行可能ファイルにコンパイルされたAPのためのものである。あるいは、APは、以下で述べる実行管理の特性を利用するように最初から記載することができる。実行可能APは、カスタマAPファイル10として示されている。
ポストプロセッサプログラム12は、プログラム中のファンクションおよびその他の固有の区切りを識別するためにカスタマAPファイル10を分析する。通常は、ポストプロセッサプログラム12は、アプリケーションの実行を管理するためのOSの本来の機能に基づく管理の特性を含むようにカスタマAPファイル10を修正する。
そのような特性の例は、以下でさらに説明される。ポストプロセッサプログラム12は、追加の実行可能な命令を含む修正されたAPを生成する。修正されたカスタマAPファイルは、保護されたAPファイル14として示されている。
管理過程の第2部分は、ユーザコンピュータ16において前記保護されたAPファイル14が実行されるときに発生する。通常は、ポストプロセシングの間に保護されたAPファイル14に追加された実行可能な命令は、カスタマAPファイル10の命令およびユーザコンピュータ16のOSと相互に作用する。保護されたAPファイル14は、認証処理の一部として外部のチャネル17を介して復号鍵サーバ18と通信するような処理を含むことが可能である。さらに、保護されたAPファイル14は、保護されたAPファイル14に対するどのような検出された変更にも反応し、そのような変更をオーソリティ20へ報告する処理を含むことが可能である。
図2は、前記カスタマAPファイル10の構成要素およびそれらの保護された実行可能ファイル14への変換を表す。実行可能ファイルは、典型的に、それらを動作させようとする処理環境に依存して定義された構造を有する。図2の例において、カスタマAPファイルは実行可能コード22の領域と、データ24の領域と、その他の構成要素26を含むもう1つの領域とを含む。実行可能コード22の領域は、典型的に、メインルーチン28と、一連の追加ルーチン30とを含む。ファイルはライブラリのような他の形式も可能である。
前記ポストプロセッサプログラムは、前記カスタマAPファイル10を読み出し、かつ実行可能コードにおける固有の境界を識別する。ファンクションの境界は、ジャンプまたはエントリポイントの呼び出しおよびリターン命令である。ポストプロセッサは、実行可能ファイルの始めから終わりまで、ジャンプ、呼び出し、およびその他の分岐またはフロー制御命令を追跡し、関連するエントリポイントを発見し、そして、リターン命令を求めて続くコードを調査する。ポストプロセッサは、そのファンクションを参照する全てのフロー制御命令とともに、全てのファンクションエントリポイントおよびファンクションの長さの記録を蓄積する。1つのファンクションが複数のエントリポイントを有する場合は、ポストプロセッサは、共通するファンクションを1つに併合する。カスタマアプリケーション(さらに実行可能コードそれ自体)について経験的な情報が入手可能である場合は、固有の境界を識別する処理は他の方法により行うことも可能である。例えば、ソースコードが入手可能ならば、ソースコードはファンクションの境界を識別するために手作業で調査することが可能であり、また、デバッグ情報が入手可能ならば、デバッグ情報はファンクションの境界を識別するためにスキャンすることが可能である。
ファンクションを識別した後、前記ポストプロセッサは、それらのいくつかまたは全てを暗号文ファンクション32に暗号化する。暗号化されるファンクションの数は、アプリケーションの性質によって異なる。その数は、ファンクションのうちの固定されたパーセンテージとすることも可能である。最も高い呼び出し率を有するファンクションを暗号化することも可能である(例えば、APの中で多くの異なる場所から呼び出されるファンクション)。ファンクションは、データの出力および読み出しはできるがデータの書き込みまたは記憶はできないというような最小機能を許可するように選択することも可能である。選択処理は自動である必要はない。人手の介在および分析を含むことが可能である。
前記各々のファンクションは、可能であればそれぞれ異なる暗号鍵を用いて個々に暗号化される。暗号化および復号化の構成は、RSA、MD5、RC4、およびその他の広範囲にわたる各種の暗号アルゴリズムのどのようなものを用いることも可能である。暗号化は、ソフトウェアまたは専用のハードウェア装置により行うことが可能である。
前記各々の暗号文ファンクション32について、前記ポストプロセッサは、平文ファンクションに存在する第2エントリポイント36cとともに、暗号文36aの第1バイトまたは複数バイトを、APがそれの下で動作するように書かれたOSの割り込み命令37で置き換えることが好ましい。
また、前記ポストプロセッサは、前記各々の暗号文ファンクション32について平文ヘッダ34を生成する。平文ヘッダ34は、ファンクションの復号鍵、ファンクションの長さ、平文(暗号化前の)ファンクションのチェックサム、および暗号文ファンクションのチェックサムを識別する情報を含む。平文ヘッダの複数バイトは、バイト交換または暗号化のような多数の周知技術からいずれかを用いて分かりにくくされる。このスクランブルを解除するための情報は、検出を妨げるような方法で保護されたAPファイルに含まれる。
前記ポストプロセッサは、前記暗号文ファンクションのうちかなりの部分を割り込み命令37で置き換える。したがって、結果として生じるファンクションモジュールは、割り込み命令37と暗号文サブルーチン部分36bとの組み合わせとなる。組み合わせモジュールの長さは、元の平文ファンクションの長さに等しいことが好ましい。例えば、(a)平文ファンクションが128バイトの長さを有し、(b)暗号化処理は等しい長さである128バイトの暗号文ファンクションを生成し、そして(c)割り込み命令は2バイトであると仮定する。ポストプロセッサプログラムは、暗号文ファンクションのうち長さが2バイトに等しいかなりの部分を置換する。
前記ポストプロセッサプログラムは、前記暗号文ファンクションの置換された部分36aおよび36cを、コードセクションの終わりのような実行可能ファイルの知られた位置に格納する。また、ポストプロセッサは、平文ヘッダの中に置換された暗号文のオフセット(相対アドレス)を格納する。
前記ポストプロセッサは、各要素部分からなるファンクション(すなわち、割り込み命令37および暗号文部分36b)を実行コントローラ40と呼ばれる追加プログラムのファンクションと結合する。また、ポストプロセッサは、移動されたファンクションを反映するためにエントリポイントアドレスを変更する。実行コントローラ40の機能は以下でより詳しく説明する。
図3は、ユーザコンピュータにおいて前記保護されたAPファイルを実行するための処理環境を表す。与えられた例は、Microsoft Windows(登録商標)環境のためのものである。APファイルを起動すると、ユーザコンピュータは保護されたAPのメインプロセス50を開始する。メインプロセス50は、すぐに第2スレッド54を起動するメインスレッド52を有する。次に、第2スレッド54は実行コントローラのための新たなプロセス56を起動する。実行コントローラは、すぐにデバッガとしてメインプロセッサ50に結合する。現在、実行コントローラ56が結合されているため、他のデバッガはメインプロセッサ50に結合することはできない。同時に生じたカーネル保護のため、どのようなデバッガも実行コントローラ56に結合することはできない。
前記実行コントローラが前記メインプロセス50に結合した後、メインプロセスのメインスレッドは、カスタマアプリケーションルーチン58の実行を開始する。その後、実行コントローラ56は、OS内のデバッガの状況にある。カスタマアプリケーションルーチン58はデバッグされるアプリケーションの状況にある。
図4は、前記保護されたアプリケーションプログラムを実行するステップを表す。上述したように、メインプロセスの開始1000を行い、次に実行コントローラの起動1005を行う。実行コントローラはデバッガとしてメインプロセスへの結合1010を行う。
このとき、前記実行コントローラは、保護されたAPファイルのヘッダまたは他の場所からのキーインデックス(鍵識別子)の取得1015が可能である。そして、実行コントローラは、保護されたAPファイルからヘッダによって置換された対応する暗号文の検索1020も可能である。
前記メインプロセスは、保護されたファンクションの中でブレークポイントに出会うまでカスタマAPの命令の実行1025を行う。ブレークポイントはメインプロセスのメインスレッドの実行を停止する。
前記実行コントローラが暗号化されたファンクションに最初に出会ったときに、前記実行コントローラは、ユーザ認証および暗号鍵取得のための処理の開始1030を行う。認証処理は多数の知られた認証処理のいずれを用いることも可能である。そのような処理は、パスワード、スマートカード、またはその他の方法によって実行コントローラがコンピュータにユーザを認証させる最初となる。そして、実行コントローラは外部のサーバに接続し、そのユーザがそのアプリケーションの使用権限を有するか検証する。
ユーザが認証されると、前記実行コントローラは、鍵サーバから保護されたAPファイルのための1つ以上の復号鍵をダウンロードまたは他の方法で取得する。鍵サーバは送信のために個々の通信鍵を用いてその鍵を暗号化することが可能である。通信鍵は、スマートカードと共にユーザに提供したり、鍵サーバとの通信セッションの間に対話的に生成したり、または、その他の方法により取得して、保護されたAPファイルに含めることが可能である。実行コントローラは、1つ以上の通信セッションにおいて全ての復号鍵を取得することが可能である。あるいは、実行コントローラは、保護されたAPファイルそれ自身から、ユーザに提供されたスマートカードから、または、その他の情報源から、というようにその他の方法で鍵を取得することも可能である。実行コントローラは、多数の知られた保護技術のどのようなものを用いて鍵を格納してもよい。また、実行コントローラは、以下で説明する再暗号化されたファンクションにおいて用いるために暗号鍵を取得することも可能である。
前記実行コントローラは、ブレークポイントに出会うと、前に復号化されたカスタマアプリケーションファンクションを調査し、かつ浄化する。すなわち、実行が完了したものについて再暗号化1035を行う。実行コントローラは、メインプロセスのメインスレッドの命令カウンタを有効なファンクションのエントリポイントおよびリターンポイントのマップと比較することによって、そのようなファンクションが完了したか否かを決定することができる。実行コントローラは、完了したルーチンを暗号文のバージョンで上書きすることができる。暗号文は長期の記憶から検索するか、または、実行コントローラによってより容易にアクセス可能なメモリに保持することが可能である。ファンクションの特性が変更されたローカル変数を含むならば、実行コントローラは、モジュールを現在の変数値と共に再暗号化することができる。再暗号化は、ソフトウェアまたは専用のハードウェア装置を用いて実行することができる。
ユーザ認証およびファンクションの再暗号化(存在すれば)の後、前記実行コントローラは新たに出会うファンクションの変更の調査1040を行う。実行コントローラは、平文および暗号文ファンクションのチェックサムのようなチェックサムを検査する。その他の変更検出の方式を用いることも可能である。
前記実行コントローラは変更を検出すると、各種の反応1045を行う。1つの反応は、いわゆる“着色パケット(dye packet)”を有効にすることである。着色パケットは、レポートをオーソリティに送信するような方法によって、権限のない活動の検証を支援するコードである。実行コントローラは、ユーザと、変更が発見されたアプリケーションと、発見された変更の特性(例えば、失敗した平文チェックサム)とを識別するレポートを伝達することができる。また、実行コントローラは、一時的または恒久的に、アプリケーションの実行を停止することができる。この停止は、変更検出方法についてハッカーが入手可能な情報を制限するため、検出後のランダムな時間に行うことができる。実行コントローラは、恒久的な記憶から保護されたアプリケーションを削除することも可能である。
検出された変更が存在しない場合は、前記実行コントローラはファンクションの復号鍵の検索1050を行う。実行コントローラは、適切な置換バイトとヘッダ情報によって上書きされていないファンクションの暗号化されたバイトとから、暗号文バッファを構築する。実行コントローラは、暗号文ファンクションの復号化1055を行い、平文命令をメインプロセスのメインスレッドの命令メモリに書き戻す。実行コントローラは、実行を再開するため命令カウンタをリセットする。メインプロセスは、平文命令を用いて通常の実行を再開する。
前記メインプロセスのメインスレッドは、1025で他のブレークポイントに出会うまで実行を繰り返す。他のブレークポイントに出会ったとき、メインプロセスは再度停止し、かつ実行コントローラに通知する。実行コントローラは、完了したファンクションの再暗号化のステップ1035と、変更の検出および反応のステップ1040、1045と、新たに出会ったファンクションの復号化のステップ1050、1055とを繰り返す。この処理はカスタマAPの実行の始めから終わりまで繰り返す。
上述した例は、説明を目的として提供されたものに過ぎず、いかなる場合にも本発明を限定するものと解釈されてはならない。本発明は特定の実施形態を参照して記載されたが、ここで用いられる用語は限定するための用語ではなく、説明および解説のための用語である。その態様において本発明の範囲および思想から逸脱することなく、開示された範囲内で、現在記載されたものとしておよび修正されたものとして変更することが可能である。本発明は、特有の意味、構成要素、および実施形態を参照して記載されているが、本発明はここで開示された特有のものに限定されることを意図するものではなく、むしろ、本発明は全ての機能的に同等な構造、方法、および利用に拡張される。
その実行を管理するためにアプリケーションプログラムを修正する過程を表す。 カスタマアプリケーションプログラムファイルの構成要素およびそれらの保護された実行可能ファイルへの変換を表す。 ユーザコンピュータにおいて保護されたアプリケーションプログラムファイルを実行するための処理環境を表す。 保護されたアプリケーションプログラムの実行におけるステップを表す。
符号の説明
10 カスタマAPファイル
12 ポストプロセッサ
14 保護されたAPファイル
16 ユーザコンピュータ
17 チャネル
18 鍵サーバ
20 変更オーソリティ
22 実行可能コード
24 データ
26 その他の構成要素
28 メインルーチン
30 追加ルーチン
32 暗号文ファンクション
34 平文ヘッダ
36a、36b、36c 暗号文
37 割り込み命令
38 追加ルーチン
40 実行コントローラ
41 デバッガ
50 メインプロセス
52 メインスレッド
54 第2スレッド
56 実行コントローラプロセス
58 カスタマAPルーチン

Claims (25)

  1. アプリケーションコンピュータプログラムを修正するための方法であって、
    前記アプリケーションコンピュータプログラムは、第1電子的実行環境内で実行するための修正されていない形式に構成され、
    前記アプリケーションコンピュータプログラムのサブセクションの境界を識別するステップと、
    前記アプリケーションコンピュータプログラムの前記サブセクションを、前記第1電子的実行環境内で実行されるときに前記第1電子的実行環境と異なる第2電子的実行環境の起動を引き起こす形式に修正するステップと、
    前記アプリケーションコンピュータプログラムに、前記第2電子的実行環境内で前記アプリケーションコンピュータプログラムの実行を可能とする制御情報を含めるステップと、
    を含む方法。
  2. 前記サブセクションの境界はフロー制御命令である請求項1に記載の方法。
  3. 前記第1電子的実行環境はコンピュータのオペレーティングシステムであり、前記第2電子的実行環境はデバッグ環境である請求項1に記載の方法。
  4. 前記アプリケーションコンピュータプログラムの前記サブセクションを修正する前記ステップは、前記オペレーティングシステムに前記デバッグ環境へ実行制御の移行を生じさせる命令を追加するステップを含む請求項3に記載の方法。
  5. 前記アプリケーションコンピュータプログラムの前記サブセクションを修正する前記ステップは、前記アプリケーションコンピュータプログラムファイルの前記サブセクションの少なくとも一部を暗号化するステップを含む請求項1に記載の方法。
  6. 前記アプリケーションコンピュータプログラムの前記サブセクションを修正する前記ステップは、前記サブセクションの前記暗号化された部分の少なくとも一部を、前記アプリケーションコンピュータプログラムの対応する修正されていないサブセクションの位置とは異なる位置に再配置するステップをさらに含む請求項5に記載の方法。
  7. 前記アプリケーションコンピュータプログラムの前記サブセクションを修正する前記ステップは、前記アプリケーションコンピュータプログラムに、前記第1または第2電子的実行環境のいずれの内部にもないリモートプロセスと通信する機能を追加するステップを含む請求項1に記載の方法。
  8. 前記リモートプロセスは、前記アプリケーションコンピュータプログラムを継続して実行する権限を与えるプロセスである請求項1に記載の方法。
  9. 前記リモートプロセスは、暗号鍵管理プロセスである請求項8に記載の方法。
  10. 前記アプリケーションコンピュータプログラムは、前記アプリケーションコンピュータプログラムの実行についての情報を伝達する請求項7に記載の方法。
  11. 前記情報は、前記アプリケーションコンピュータプログラムの変更についての情報である請求項10に記載の方法。
  12. アプリケーションコンピュータプログラムを実行するための装置であって、
    オペレーティングシステムを有するコンピュータと、
    実行可能でない形式の実行可能でない部分を有するアプリケーションコンピュータプログラムと、
    前記オペレーティングシステムと異なる実行環境を提供し、前記アプリケーションコンピュータプログラムの実行可能でない部分を実行可能な形式に変換する操作が可能な実行コントローラと、
    を具備する装置。
  13. 前記アプリケーションコンピュータプログラムの実行可能でない部分は暗号化された部分を含む請求項12に記載の装置。
  14. 前記アプリケーションコンピュータプログラムは、前記オペレーティングシステムまたは実行コントローラのいずれの内部にもないリモートプロセスと通信が可能な部分を含む請求項13に記載の装置。
  15. 前記リモートプロセスは、前記アプリケーションコンピュータプログラムを継続して実行する権限を与えるプロセスである請求項14に記載の装置。
  16. 前記リモートプロセスは、暗号鍵管理プロセスである請求項15に記載の装置。
  17. 前記アプリケーションコンピュータプログラムは、前記アプリケーションコンピュータプログラムの実行についての情報を前記リモートプロセスに伝達が可能な部分を含む請求項14に記載の装置。
  18. 前記アプリケーションコンピュータプログラムの実行についての情報は、前記アプリケーションコンピュータプログラムの変更についての情報である請求項17に記載の装置。
  19. アプリケーションコンピュータプログラムを実行するための方法であって、
    オペレーティングシステムを起動するステップと、
    実行可能でない形式の実行可能でない部分を有する前記アプリケーションコンピュータプログラムを起動するステップと、
    オペレーティングシステムと異なる実行環境を提供し、前記アプリケーションコンピュータプログラムの実行可能でない部分を実行可能な形式に変換することが可能な実行コントローラを起動するステップと、
    前記実行コントローラの実行環境内で前記アプリケーションコンピュータプログラムを実行するステップと、
    を有する方法。
  20. 前記実行コントローラはデバッガとして起動される請求項19に記載の方法。
  21. 前記アプリケーションコンピュータプログラムの実行可能でない部分は暗号化された形式である請求項19に記載の方法。
  22. 前記アプリケーションコンピュータプログラムは、前記オペレーティングシステムまたは前記実行コントローラのいずれの管理下にもないリモートプロセスと通信する請求項19に記載の方法。
  23. 前記リモートプロセスは、暗号鍵管理プロセスの部分である請求項22に記載の方法。
  24. 前記アプリケーションコンピュータプログラムは、前記前記アプリケーションコンピュータプログラムの実行についての情報を前記リモートプロセスに伝達する請求項19に記載の方法。
  25. 前記情報は、前記アプリケーションコンピュータプログラムの変更についての情報である請求項24に記載の方法。
JP2006503479A 2003-02-11 2004-02-11 コンピュータソフトウェアの実行を管理するためのシステムおよび方法 Pending JP2006522387A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US44626003P 2003-02-11 2003-02-11
US10/774,368 US7370319B2 (en) 2003-02-11 2004-02-10 System and method for regulating execution of computer software
PCT/US2004/003957 WO2004072891A2 (en) 2003-02-11 2004-02-11 System and method for regulating execution of computer software

Publications (1)

Publication Number Publication Date
JP2006522387A true JP2006522387A (ja) 2006-09-28

Family

ID=32871980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006503479A Pending JP2006522387A (ja) 2003-02-11 2004-02-11 コンピュータソフトウェアの実行を管理するためのシステムおよび方法

Country Status (5)

Country Link
US (1) US7370319B2 (ja)
EP (1) EP1665115A4 (ja)
JP (1) JP2006522387A (ja)
HK (1) HK1095896A1 (ja)
WO (1) WO2004072891A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008532113A (ja) * 2005-02-11 2008-08-14 シンプレックス メジャー センドリアン ベルハッド ソフトウェア保護方法
JP2012008825A (ja) * 2010-06-25 2012-01-12 Nec Corp プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム
JP2013047854A (ja) * 2012-11-22 2013-03-07 Kyocera Document Solutions Inc 情報秘匿化方法および情報秘匿化装置

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103592B2 (en) 2003-10-08 2012-01-24 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf of first process
US7979911B2 (en) 2003-10-08 2011-07-12 Microsoft Corporation First computer process and second computer process proxy-executing code from third computer process on behalf of first process
US7788496B2 (en) 2003-10-08 2010-08-31 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf thereof
US8271803B2 (en) * 2003-10-08 2012-09-18 Microsoft Corporation Anti-debugging protection of binaries with proxy code execution
DE102004027033B4 (de) * 2004-03-15 2009-07-02 Dspace Digital Signal Processing And Control Engineering Gmbh Beeinflussungsgerät für Steuergeräte und Verfahren zur Beeinflussung eines Steuergeräts
US7249252B2 (en) * 2004-06-16 2007-07-24 Intel Corporation Method of replacing initialization code in a control store with main code after execution of the initialization code has completed
US8521752B2 (en) 2005-06-03 2013-08-27 Osr Open Systems Resources, Inc. Systems and methods for arbitrary data transformations
CN100385367C (zh) * 2005-08-05 2008-04-30 四零四科技股份有限公司 程序加密的方法
US7620987B2 (en) * 2005-08-12 2009-11-17 Microsoft Corporation Obfuscating computer code to prevent an attack
US8695102B2 (en) * 2006-05-01 2014-04-08 International Business Machines Corporation Controlling execution of executables between partitions in a multi-partitioned data processing system
US7512748B1 (en) 2006-08-17 2009-03-31 Osr Open Systems Resources, Inc. Managing lock rankings
US8539228B1 (en) * 2006-08-24 2013-09-17 Osr Open Systems Resources, Inc. Managing access to a resource
JP4048382B1 (ja) 2006-09-01 2008-02-20 富士ゼロックス株式会社 情報処理システムおよびプログラム
JP4766487B2 (ja) * 2006-09-08 2011-09-07 株式会社ソニー・コンピュータエンタテインメント プログラム改ざん検出装置
US8286138B2 (en) * 2007-01-30 2012-10-09 Microsoft Corporation Multi-threaded detection of a game software debugger
US8024433B2 (en) * 2007-04-24 2011-09-20 Osr Open Systems Resources, Inc. Managing application resources
US7949693B1 (en) 2007-08-23 2011-05-24 Osr Open Systems Resources, Inc. Log-structured host data storage
US8321840B2 (en) * 2007-12-27 2012-11-27 Intel Corporation Software flow tracking using multiple threads
US8239967B2 (en) * 2008-01-15 2012-08-07 Microsoft Corporation Simultaneous tamper-proofing and anti-piracy protection of software
ES2390796T3 (es) * 2009-07-27 2012-11-16 Nagravision S.A. Método de implementación de un procesador para garantizar la integridad de un software
US8312260B2 (en) * 2009-10-09 2012-11-13 Sas Institute Inc. Dynamic analytical differentiator for obfuscated functions in complex models
RU2541196C2 (ru) * 2010-07-22 2015-02-10 Награвисьон С.А. Способ обеспечения целостности программного обеспечения
US8745408B2 (en) * 2011-04-08 2014-06-03 Infineon Technologies Ag Instruction encryption/decryption arrangement and method with iterative encryption/decryption key update
US8903874B2 (en) 2011-11-03 2014-12-02 Osr Open Systems Resources, Inc. File system directory attribute correction
US9830329B2 (en) 2014-01-15 2017-11-28 W. Anthony Mason Methods and systems for data storage

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US6009543A (en) 1996-03-01 1999-12-28 Massachusetts Institute Of Technology Secure software system and related techniques
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US5940590A (en) 1997-05-31 1999-08-17 International Business Machines Corporation System and method for securing computer-executable program code using task gates
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US6701439B1 (en) * 1999-06-30 2004-03-02 Lucent Technologies Inc. Call rejection interface for internet protocols
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6983374B2 (en) * 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US6742177B1 (en) * 2000-03-31 2004-05-25 International Business Machines Corporation Method and system for secure debugging of a secure software module
FR2815723B1 (fr) * 2000-10-24 2004-04-30 Thomson Csf Procede systeme et sonde pour l'obtention d'images par l'intermediaire d'ondes emises par une antenne apres reflexion de ces ondes au niveau d'un ensemble servant de cible
US20040015958A1 (en) 2001-05-15 2004-01-22 Veil Leonard Scott Method and system for conditional installation and execution of services in a secure computing environment
US7203310B2 (en) * 2001-12-04 2007-04-10 Microsoft Corporation Methods and systems for cryptographically protecting secure content
DE10229129C1 (de) * 2002-06-28 2003-12-11 Advanced Micro Devices Inc Debug-Schnittstelle für einen Ereigniszeitgeber
US20040054901A1 (en) * 2002-09-17 2004-03-18 Microsoft Corporation Creating and verifying a sequence of consecutive data
US7149900B2 (en) * 2002-12-12 2006-12-12 Intel Corporation Method of defending software from debugger attacks

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008532113A (ja) * 2005-02-11 2008-08-14 シンプレックス メジャー センドリアン ベルハッド ソフトウェア保護方法
JP4922951B2 (ja) * 2005-02-11 2012-04-25 シンプレックス メジャー センドリアン ベルハッド ソフトウェア保護方法
JP2012008825A (ja) * 2010-06-25 2012-01-12 Nec Corp プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム
JP2013047854A (ja) * 2012-11-22 2013-03-07 Kyocera Document Solutions Inc 情報秘匿化方法および情報秘匿化装置

Also Published As

Publication number Publication date
US20040181772A1 (en) 2004-09-16
WO2004072891A3 (en) 2006-04-20
HK1095896A1 (en) 2007-05-18
EP1665115A4 (en) 2010-11-03
EP1665115A2 (en) 2006-06-07
WO2004072891A2 (en) 2004-08-26
US7370319B2 (en) 2008-05-06

Similar Documents

Publication Publication Date Title
JP2006522387A (ja) コンピュータソフトウェアの実行を管理するためのシステムおよび方法
US7237123B2 (en) Systems and methods for preventing unauthorized use of digital content
KR101054318B1 (ko) 정보 처리 시스템 및 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체
JP4464689B2 (ja) データ・アクセス制御機能を使用した、統合システム内でのセキュア動作の初期化、維持、更新および回復
US7743260B2 (en) Firewall+storage apparatus, method and system
KR100946042B1 (ko) 탬퍼-레지스턴트 애플리케이션 구동 방법 및 시스템과 컴퓨터 판독 가능 저장 매체
US8225290B2 (en) Systems and methods for regulating execution of computer software
US20080263366A1 (en) Self-verifying software to prevent reverse engineering and piracy
JP4892167B2 (ja) ディジタル・データ保護構成
CN109992987B (zh) 基于Nginx的脚本文件保护方法、装置及终端设备
CN101103584A (zh) 安全及后向兼容处理器以及在其上的安全软件的执行
AU2001292910A1 (en) Systems and methods for preventing unauthorized use of digital content
EP1352307A2 (en) Systems and methods for preventing unauthorized use of digital content
US20110271350A1 (en) method for protecting software
Suciu et al. Horizontal privilege escalation in trusted applications
AU2002219852B2 (en) Systems and methods for preventing unauthorized use of digital content
AU2002219852A1 (en) Systems and methods for preventing unauthorized use of digital content
CN116467755A (zh) 用于在计算单元中安全提供所要保护的计算机程序的方法
AU2008200472A1 (en) Systems and methods for preventing unauthorized use of digital content related applications
CA2638955C (en) Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
AU2010202883A1 (en) Systems and Methods for Preventing Unauthorized Use of Digital Content

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101214