JP2009524879A - プロテクトされたアプリケーションプログラムとシェルコードとの結合 - Google Patents
プロテクトされたアプリケーションプログラムとシェルコードとの結合 Download PDFInfo
- Publication number
- JP2009524879A JP2009524879A JP2008552367A JP2008552367A JP2009524879A JP 2009524879 A JP2009524879 A JP 2009524879A JP 2008552367 A JP2008552367 A JP 2008552367A JP 2008552367 A JP2008552367 A JP 2008552367A JP 2009524879 A JP2009524879 A JP 2009524879A
- Authority
- JP
- Japan
- Prior art keywords
- computer program
- application
- resource
- computer
- address
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000004590 computer program Methods 0.000 claims description 35
- 238000004891 communication Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
プロテクトされたアプリケーションをシェルモジュールと結合するための方法とシステム。シェルモジュールは、アプリケーションに付加される。シェルモジュールは、アプリケーションが実行される前に実行され、最初にリソースを作成する。シェルモジュールが実行を終了した後、アプリケーションは、作成されたりソースにアクセスすることを試みる。アクセスが成功した場合は、アプリケーションは、続行することが許される。さもなければ、アプリケーションは終了する。リソースにアクセスすることのアプリケーションにとっての不能は、シェルモジュールが実際にリソースを作成しなかったことを示す。これは、シェルモジュールが実行されなかったことを示し、シェルモジュールは、除去されたか、アプリケーションから機能的に切り離されたかのどちらかであるかもしれない。これは、シェルモジュールのセキュリティ機能が、実行されなかったことをさらに暗示する。シェルのセキュリティチェックが、おそらく実行されていないので、このアプリケーションは、それ故、実行することが許可されない。
Description
ここに記載されている本発明は、デジタル権利管理に関し、更に特定すればソフトウエアの不正な使用を防ぐことに関する。
ソフトウエアの商品流通での積年の問題の一つは、ソフトウエアの使用の管理である。ソフトウエア開発者の考え方から言えば、ソフトウエアを購入した、または、ソフトウエアの許諾を受けたグループのみがそのソフトウエアの使用をすることができる。他の規制が同様に適切にあるかもしれない。例えば、ソフトウエア開発者は、特定のマシン上でのソフトウエアの使用を制限することを望むかもしれない。ソフトウエア開発者は、そのソフトウエアが使用されても良い時間間隔を制限することも望むかもしれない。そのような制限は、もし強制的であるならば、ソフトウエアパッケージが使用される条件を制限する。ソフトウエアパッケージの使用、即ち、例えば上記のような制限で定められた境界の外での使用は、未許可の使用を表す。ソフトウエア開発者の考え方から言えば、購入者またはライセンサと合意して、ソフトウエアは、ソフトウエア開発者によって特定された条件でのみ使用されるべきである。これらの条件の外でのソフトウエアパッケージの使用は、お金を払わない使用である。そのような未許可の使用は、それ故に、ソフトウエア開発者にとって失われたお金を表す。
ソフトウエアの未許可使用の問題の1つの解決法は、シェルとして知られる追加のソフトウエアモジュールのを使用することを含む。これは、図1に示される。アプリケーションプログラム110は、ヘッダ120と、次にコード130と、データ140とを備える。アプリケーション110の末尾に付加されたのはシェルモジュールであり、シェルランタイムコード150である。ポインタ160は、ヘッダ120の中に存在する。ポインタ160は、シェルランタイムコード150がアプリケーション110の前に実行されることを保証する。
シェルモジュール150は、1つ又はそれ以上のセキュリティチェックを実行する。これらのチェックは、ソフトウエアの使用のための条件が満たされているか否かを決定する。例えば、シェルモジュール150は、アプリケーション110が認可されたマシン上で実行されているかどうかを決定することが出来る。加えて、シェルモジュール150は、アプリケーション110が、認可された時間帯で実行されているるかどうかを決定することが出来る。シェルモジュール150は、もし要求されるならば、セキュリティトークンが所定の位置にあるかどうかもチェックすることが出来る。シェルモジュール150での全てのチェックが通った場合に限り、アプリケーション110は、実行を開始することが出来る。
しかしながら、そのようなシェルモジュールの使用は、必ずしも十分ではない。ハッカーは、例えば、そのシェルをアプリケーションから分離するかもしれない。セキュリティチェックがなされないように、そのシェルモジュールが除去され、または、機能的にアプリケーションから切り離されるかもしれない。それ故に、もし、シェルモジュールが削除され、又は、機能的にアプリケーションから切り離された場合は、アプリケーションが使用できないような、シェルモジュールがアプリケーションに結合することを通したメカニズムが必要である。
ここに記載されている発明は、プロテクトされるアプリケーションをシェルモジュールと結合するためのシステムと方法である。シェルモジュールは、アプリケーションに付加される。そのシェルモジュールは、アプリケーションの実行の前に実行され、最初にリソースを作成する。そのシェルモジュールが実行を終了した後、アプリケーションは、その作成されたリソースにアクセスを試みる。もし、アクセスが成功したならば、そのアプリケーションは、続行することが許される。さもなくば、アプリケーションは、終了される。アプリケーションがリソースにアクセスできないことは、シェルモジュールが実際にリソースを作成しなかったことを示す。これは、シェルモジュールが実行されなかったことを示し、シェルモジュールは、除去されたか、機能的にアプリケーションから切り離されたかどちらかであろう。これは、更に、シェルモジュールのセキュリティ機能が実行されなかったことを示す。それ故に、シェルのセキュリティチェックは、おそらく実行されてないので、アプリケーションは、実行することを許可されない。
本発明の様々な実施例の構成と作用のみならず、本発明の、更なる実施形態、特徴、利点は、添付の図を参照して以下に示される。
本発明の好ましい実施例は、図を参照して記載され、同等の参照番号は、同一、または、機能的に似たエレメントを示す。図において、それぞれの参照番号の最も左の桁は、参照番号が最初に使用される図と一致する。特定の構成と配置が論じられるが、単に例証目的でなされたことが理解されるべきである。当業者は、本発明の目的と精神から離れることなく他の構成と配置が使用されることを認識するであろう。本発明は、種々の他のシステムとアプリケーションにも採用されることが出来ることも、当業者にとって明白であろう。
I. 概観
ここで述べられている発明は、プロテクトされたアプリケーションをシェルモジュールと結合するためのシステムと方法である。シェルモジュールは、アプリケーションに付加される。シェルモジュールは、アプリケーションの実行前に実行され、最初にリソースを作成する。シェルモジュールの実行が終了後、アプリケーションは、作成されたリソースにアクセスすることを試みる。もし、アクセスが成功するならば、アプリケーションは、続行することを認められる。さもなくば、アプリケーションは、終了する。アプリケーションがリソースにアクセスできないことは、シェルモジュールが実際にリソースを作成しなかったことを示す。これは、シェルモジュールが実行されなかったことを示し、シェルモジュールは、除去されたか、機能的にアプリケーションから切り離されたかどちらかであろう。これは、更に、シェルモジュールのセキュリティ機能が実行されなかったことを示す。それ故に、シェルのセキュリティチェックは、おそらく実行されてないので、アプリケーションは、実行することを許可されない。
ここで述べられている発明は、プロテクトされたアプリケーションをシェルモジュールと結合するためのシステムと方法である。シェルモジュールは、アプリケーションに付加される。シェルモジュールは、アプリケーションの実行前に実行され、最初にリソースを作成する。シェルモジュールの実行が終了後、アプリケーションは、作成されたリソースにアクセスすることを試みる。もし、アクセスが成功するならば、アプリケーションは、続行することを認められる。さもなくば、アプリケーションは、終了する。アプリケーションがリソースにアクセスできないことは、シェルモジュールが実際にリソースを作成しなかったことを示す。これは、シェルモジュールが実行されなかったことを示し、シェルモジュールは、除去されたか、機能的にアプリケーションから切り離されたかどちらかであろう。これは、更に、シェルモジュールのセキュリティ機能が実行されなかったことを示す。それ故に、シェルのセキュリティチェックは、おそらく実行されてないので、アプリケーションは、実行することを許可されない。
II. システム
ここに述べられている発明は、例えば図2で例示されるコンピュータ環境で実行されるソフトウエアの形態をとることが出来る。
ここに述べられている発明は、例えば図2で例示されるコンピュータ環境で実行されるソフトウエアの形態をとることが出来る。
コンピュータシステム200の例は、図2で示される。コンピュータシステム200は、例えばプロセッサ204のように1つ以上のプロセッサを含むことが出来る。プロセッサ204は、通信インフラストラクチャ206(例えば、通信バスやネットワーク)に接続されても良い。この記載を読んだ後、他のコンピュータシステム、そして/又は、コンピュータアーキテクチャに対して本発明をどのように導入するかが、当業者にとって明白になるであろう。
コンピュータシステム200はディスプレイインタフェース202含むことができ、このインタフェースは、グラフィックス、テキスト、そして他のデータを通信インフラストラクチャ206からディスプレイユニット230のディスプレイに転送することが出来る。
コンピュータシステム200は、メインメモリ208、例えばランダムアクセスメモリ(RAM)も含むことができ、第2のメモリ210も含むことができる。第2のメモリ210は、例えば、ハードディスクドライブ212、そして/または、磁気テープ装置、光ディスク装置、その他、を表すがそれに限定されないリムーバブル記憶装置214を含むことができる。リムーバブル記憶装置214は、周知の方法でリムーバブル記憶ユニット218、に書き込み、そして/または、から読み込みをすることができる。リムーバブル記憶ユニット218は、リムーバブル記憶装置214によって、読み込みされ、そして/または書き込みされることができる、フロッピー(登録商標)ディスク、磁気テープ、光ディスク、その他、を表すことができる。ありがたいことに、リムーバブル記憶ユニット218は、その中にコンピュータソフト、そして/または、データを保存しているコンピュータで使用できる記憶媒体を含むことができる。
別の実施形態において、第2のメモリ210は、コンピュータシステム200に、コンピュータプログラムや他の命令がロードされることを可能にするための他の似た手段を含んでも良い。そのような手段は、例えば、リムーバブル記憶ユニット222とインタフェース220とを含むことができる。そのようなものの例は、それに限定されない、リムーバブルメモリチップ(例えば、EPROMやPROM)そして関連したソケット、そして/または、他のリムーバブル記憶ユニット222とリムーバブル記憶ユニット222からコンピュータシステム200にソフトウエアとデータとを転送することを可能にすることができるインタフェース220とを含むことができる。
コンピュータシステム200は、通信インタフェース224も含むことができる。通信インタフェース224は、ソフトウエアとデータとがコンピュータシステム200と外部デバイスとの間で転送されることを可能にすることができる。通信インタフェース224の例は、これに限定されない、モデム、ネットワークインタフェース(例えばイーサネット(登録商標)カード)、通信ポート、PCMCIAスロットそしてカード、その他を含むことができる。通信インタフェース224を経由して転送されるソフトウエアとデータは、例えば、電子、電磁気、光信号、又は、通信インタフェース224によって受信可能な他の信号であってもよい信号228の形である。これらの信号228は、通信パス(即ち、チャネル)226を経由して通信インタフェース224に提供されることができる。このチャネル226は、信号228を運ぶことができ、ワイヤやケーブル、光ファイバ、電話線、携帯電話リンク、RFリンク、そして/または、他の通信チャネルを使用することを導入されることができる。
このドキュメントにおいて、用語「コンピュータプログラム媒体」と「コンピュータで使用可能な媒体」とは、一般的にメディア、例えば、それに限定されない、リムーバブル記憶ユニット218、ハードディスクドライブ212にインストールされるハードディスク、そして/または、信号228を参照するために使用される。これらのコンピュータプログラムメディアは、コンピュータシステム200にプログラムを提供するための手段である。
コンピュータプログラム(コンピュータコントロールロジックとも言われる)は、メインメモリ208そして/または第2のメモリ210に保存されても良い。コンピュータプログラムは、通信インタフェース224を経由して受信されても良い。そのようなコンピュータプログラムは、実行されたとき、コンピュータシステム200が、ここで述べられているように、本発明の要件を実行することを可能にする。特に、コンピュータシステムは、実行されたとき、プロセッサ204が、以下に述べられている実施形態に従って、本発明を実行することを可能にすることができる。よって、そのようなコンピュータプログラムは、コンピュータシステム200のコントローラを意味する。
本発明を具体化するソフトウエアは、コンピュータプログラム製品に保存されることができ、例えば、リムーバブル記憶装置214、ハードディスクドライブ212、インタフェース220、または、通信インタフェース224を使用するコンピュータシステム200にロードされる事ができる。コントロールロジック(ソフトウエア)は、プロセッサ204によって実行されたとき、プロセッサ204に、ここで述べられているように、本発明の機能を実行させる。
III. 方法
本発明の一実施例の処理は、図3、4に示される。図3において、プロテクトされたアプリケーション310は、ヘッダ320、コード330、そしてデータ340を備えるように示される。アプリケーション310に付加されたものは、シェルランタイムコード350である。その全体の処理は、アプリケーション310の実行の前にシェルモジュール350が実行される点において図1の処理といくつかの類似性を有する。その他の関連した機能に共通して、シェルモジュール350は、メモリ位置360を割り当てる。メモリ位置360は、アドレス370に位置する。メモリ360を割り当てることに加えて、シェルモジュール350は、メモリ位置360に、取り決められた値380も保存する。本発明の実施例において、取り決められた値380は、アプリケーション310の開発者によって提供されたあらかじめ決められた値であることができる。
本発明の一実施例の処理は、図3、4に示される。図3において、プロテクトされたアプリケーション310は、ヘッダ320、コード330、そしてデータ340を備えるように示される。アプリケーション310に付加されたものは、シェルランタイムコード350である。その全体の処理は、アプリケーション310の実行の前にシェルモジュール350が実行される点において図1の処理といくつかの類似性を有する。その他の関連した機能に共通して、シェルモジュール350は、メモリ位置360を割り当てる。メモリ位置360は、アドレス370に位置する。メモリ360を割り当てることに加えて、シェルモジュール350は、メモリ位置360に、取り決められた値380も保存する。本発明の実施例において、取り決められた値380は、アプリケーション310の開発者によって提供されたあらかじめ決められた値であることができる。
シェルモジュール350は、それから、アプリケーションによってすぐにアクセス可能な位置にアドレス370を保存する。図示された実施例において、アドレス370は、ヘッダ320内に位置する日付/時間スタンプ390で、またはそれと共に保存される。
いったん、アプリケーションが実行を始めると、アプリケーションは、アドレス370を検索し、そのアドレス即ち、メモリ位置360に行く、そして、取り決められた値380を読み出すことを試みる。もし、その読み出された値が取り決められた値380と合致するならば、それから、アプリケーションは続行する。もし、その値が、合致しないならば、アプリケーション310は終了する。さらに、もしアドレス370がアプリケーション310によって見つけられなかったならば、それから、アプリケーションは終了する。
もし、ハッカーがシェルモジュール350を除去することに成功し、または、そうでなければ、アプリケーションからシェル350を機能的に切り離すことに成功するならば、それで、日付/時間スタンプ390は、アドレスを受信しないであろう、そして、アプリケーションは、メモリ位置360にアクセスすることに失敗するであろう。あるいは、アプリケーションは、日付/時間スタンプ領域390にいくつかアドレスを有することができる。しかし、そのアドレスで見つけられる値は、取り決められた値380とおそらく合致しないであろう。
このチェックシーケンスを回避するために、ハッカーは、シェルモジュール350の振る舞いをシミュレートするであろう。ハッカーは、アプリケーションによって実行される位置、即ち、日付/時間スタンプフィールド390にアドレスを置かなければならないであろう。これは、ハッカーにとってすることが困難であろう。
その上、これは、保存されたアドレス370をわかりにくくすることによって、より困難にされることができる。シェルモジュール350は、例えば、アドレス370を取得することができ、そして、それを、決定論的で可逆的な方法で、ある既知の定数と結合することができる。例えば、アドレス370は、ビットごとに排他的論理和をとる操作を使用して、その定数と結合されることができる。アプリケーション310は、それから、日付/時間スタンプ390から分かりにくくされたアドレスを読み、それから、実際のアドレス370を再生するためにその定数を分かりにくくされたアドレスに適用する。本発明の実施例において、全ての定数のいくつかは、アプリケーションの開発者によって供給される。
図3の実施例と関係のある処理は、図4のフローチャートに表されている。そのプロセスは、ステップ405から始まる。ステップ410において、シェルモジュールは、メモリの位置を割り当てる。ステップ415において、シェルモジュールは、割り当てられたメモリ位置に取り決められた値を保存する。上述したように、取り決められた値は、アプリケーションのソフトウエア開発者によって提供されることが出来る。ステップ420において、割り当てられたメモリのアドレスは、アプリケーションの実行可能なヘッダに保存される。そのアドレスの保存のための1つの可能な位置は、上述したように、ヘッダの日付/時間スタンプであろう。
ステップ425において、アプリケーションは、ヘッダからそのアドレスを回収することを試みる。ステップ430において、この回収が成功したかどうかに関して決定がされる。もし、回収が成功しないならば、アプリケーションは、ステップ440で終了する。もし、回収が成功するならば、それから、プロセスは、435で継続する。ここで、メモリの内容が読まれる。ステップ445において、正しい値が、割り当てられたメモリ位置で見つかるかどうかに関して決定される。もし、見つからなかった場合は、アプリケーションは、ステップ440で終了する。もし、ステップ445で決定されるように、正しい値が見つけられる場合は、それから、アプリケーションは継続し、プロセスはステップ450で完了する。
本発明の他の実施例は、図5で示される。前回の図と同様、アプリケーションは、ヘッダ520、データ540とともにコード530から成る。また一方、シェルモジュール550は、シェルモジュール550が、リソースを作成するために使用される所に添付される。この実施例において、シェルモジュール550は、相互排除オブジェクト、または、「ミューテックス」560を作成する。ミューテックスはプログラムスレッドによって使用される、たとえば、ファイルなどのデータ構造へのアクセスを共有するプログラムオブジェクトである。そのファイルを必要とするどのスレッドも、そのファイルを使用している間、他のスレッドに対してミューテックスをロックしなければならない。ミューテックスは、そのファイルがもはや使用されない、または、そのルーチンが完了するときに、ロックを解除される。
ここで、作成されたミューテックス560は、シェルモジュール550によって名前を与えられる。そのミューテックスの名前は、名前情報に基づく。名前情報の一つの例は、プロセスIDである。ミューテックスの名前は、それ故に、プロセスIDであることができ、または、プロセスIDに基づくことができる。図示された実施例において、ミューテックス560のための名前は、ファンクションf(プロセスID)の値である。シェルモジュール550が実行を完了したあと、制御は、コード530に戻る。
コード530は、それから、ミューテックス560の名前を再作成することを試みる。示された実施例でそうするために、もしその名前がIDのファンクションであるならば、コード530は、プロセスIDに基づいて名前を形成しなければならない。もし、名前が単純にプロセスIDであるならば、コード530は、単純にプロセスIDを得る。いずれにしても、コード530は、それから、名前をつけられたミューテックス560にアクセスすることを試みる。ミューテックス560にアクセスできないと言うことは、シェルモジュール550が削除されたか、無効にされたか、または、機能的にアプリケーション510から切り離されたかを示す。もし、シェルモジュール550が存在しなかったか、無効にされていた場合は、プロセスIDに基づく名前を持つミューテックスはシェルモジュール550によって作成されなかったであろう。コード530は、それから、作成されなかったリソースにアクセスを試み、そして、明らかにそうすることができなかったであろう。
本発明のこの実施例の処理は、図6のフローチャートに示される。このプロセスは、ステップ605から始まる。ステップ610において、シェルモジュールは、名前情報、即ち、作成されるミューテックスを名付けるために使用される情報を得る。図示された実施例において、プロセスIDは、名前情報として使用される。ステップ615において、シェルモジュールは、例えば、プロセスIDの16進数表記などの名前の文字列を作成する。ステップ620において、シェルモジュールは、名前の文字列によって識別される、例えばミューテックスなどの、名付けられたリソースを作成する。ステップ625において、アプリケーションは、名前情報を読み出す。ステップ630において、アプリケーションは、名前情報に基づく名前の文字列を作成する。ステップ635において、アプリケーションは、その名前がついているリソースにアクセスすることを試みる。ステップ640において、名付けられたリソースへのアクセスが成功したかどうかについて決定される。もし、成功しなかった場合は、ステップ645でアプリケーションは終了する。もし、名付けられたリソースへのアクセスの試みが成功した場合は、それから、プロセスは、ステップ650で続行する。
本発明の他の実施例において、名前情報は、いくつかの出所からくることができる点に注意すべきである。図示された実施例において、名前情報は、プロセスIDである。あるいは、他のプロセス特定情報は、ミューテックスの名前を引き出すために用いられることができる。一つの可能性は、プロセスのためのスタート時間である。名前は、それから、スタート時間、または、その機能である。更にもう一つの他の実施例において、名前は、アプリケーションのソフトウエア開発者によって提供される名前情報に基づくことができる。
他の実施例において、ミューテックス以外のものがシェルモジュールによって作成される事ができる点にも注意すべきである。シェルモジュールは、セマフォ、または、例えば他の名付けられたリソースのようなものを作成することができる。ミューテックスの実施例の場合において、リソースは、プロセスに由来する名前、または、アプリケーション開発者によって提供される名前に基づいて名付けられることができる。アプリケーションは、その名前を使用しているリソースにアクセスすることを試みる事によってシェルモジュールの動作を確かめることができる。
IV.結論
本発明のいくつかの実施例が、上に記載されているが、例としてだけ提示されており、本発明を制限する意味ではないことを理解すべきである。添付の請求項で定義されるように、本発明の目的と精神から離れることなく、形状と細部において様々な変更がその中に成されることができることが、当業者によって理解されるであろう。それ故に、本発明の範囲と幅とは、上記の典型的な実施例によって制限されるべきではなく、以下の請求項およびそれと等価なものに従ってのみ定義されるべきである。
本発明のいくつかの実施例が、上に記載されているが、例としてだけ提示されており、本発明を制限する意味ではないことを理解すべきである。添付の請求項で定義されるように、本発明の目的と精神から離れることなく、形状と細部において様々な変更がその中に成されることができることが、当業者によって理解されるであろう。それ故に、本発明の範囲と幅とは、上記の典型的な実施例によって制限されるべきではなく、以下の請求項およびそれと等価なものに従ってのみ定義されるべきである。
110 アプリケーション
120 ヘッダ
130 コード
140 データ
150 シェルモジュール
160 ポインタ
200 コンピュータシステム
204 プロセッサ
206 通信インフラストラクチャ
208 メインメモリ
210 メモリ
212 ハードディスクドライブ
214 リムーバブル記憶装置
218 リムーバブル記憶ユニット
220 インタフェース
222 リムーバブル記憶ユニット
224 通信インタフェース
226 通信パス
228 信号
230 ディスプレイユニット
310 アプリケーション
320 ヘッダ
330 コード
340 データ
350 シェルモジュール
360 メモリ
370 アドレス
380 取り決められた値
390 日付/時間スタンプ
510 アプリケーション
520 ヘッダ
530 コード
540 データ
550 シェルモジュール
560 ミューテックス
120 ヘッダ
130 コード
140 データ
150 シェルモジュール
160 ポインタ
200 コンピュータシステム
204 プロセッサ
206 通信インフラストラクチャ
208 メインメモリ
210 メモリ
212 ハードディスクドライブ
214 リムーバブル記憶装置
218 リムーバブル記憶ユニット
220 インタフェース
222 リムーバブル記憶ユニット
224 通信インタフェース
226 通信パス
228 信号
230 ディスプレイユニット
310 アプリケーション
320 ヘッダ
330 コード
340 データ
350 シェルモジュール
360 メモリ
370 アドレス
380 取り決められた値
390 日付/時間スタンプ
510 アプリケーション
520 ヘッダ
530 コード
540 データ
550 シェルモジュール
560 ミューテックス
Claims (25)
- セキュリティコードのシェルモジュールをアプリケーションに結合する方法であって、
a. リソースを作成することが、前記シェルモジュールによって実行され、
b. 前記リソースにアクセスすることを試みることが、前記アプリケーションによって実行され、
c. 前記アクセスが成功しない場合、前記アプリケーションを終了する、
セキュリティコードのシェルモジュールをアプリケーションに結合する方法。 - 前記リソースが、割り当てられたメモリを備え、
d. 前記割り当てられたメモリに取り決められた値を保存し;
e. 前記割り当てられたメモリのアドレスの表示を保存することが、シェルモジュールによって、ステップa.の後、かつ、ステップb.の前に行われる、
ことを更に備える請求項1に記載の方法。 - 前記アドレスの表示が、前記割り当てられたメモリのアドレスを備える、
請求項2に記載の方法。 - 前記アドレスの表示が、前記アプリケーションと前記シェルモジュールとの両方に知られた定数と結合された前記割り当てられたメモリのアドレスを備える、
請求項2に記載の方法。 - 前記定数の少なくとも一部が、前記アプリケーションの開発者によって提供される、
請求項4に記載の方法。 - 前記定数と前記割り当てられたメモリの前記アドレスとの結合が、知られた前記定数と前記アドレスとのビットごとの排他的論理和を備える、
請求項4に記載の方法。 - 前記取り決められた値の少なくとも一部が、前記アプリケーションの開発者によって提供される、
請求項2に記載の方法。 - 前記割り当てられたメモリの前記アドレスの表示が、前記アプリケーションの実行可能なヘッダに保存される、
請求項2に記載の方法。 - 前記ステップb.が、
i. 前記実行可能なヘッダから前記アドレスの表示を取り出すことを試み、前記実行可能なヘッダから前記アドレスの表示を取り出すことが出来なかったことが、前記リソースへの不成功なアクセスを示す、
ことを備える請求項8に記載の方法。 - 前記ステップb.が、
ii. 前記割り当てられたメモリの内容を読み、
iii. 読み込んだ内容が、前記取り決められた値と一致するかどうか決定し、前記取り決められた値と一致しないことが、前記リソースへの不成功なアクセスを示す、
ことを更に備える、請求項9に記載の方法。 - 前記リソースが、名付けられたリソースを備える、請求項1に記載の方法。
- 前記名付けられたリソースが、ミューテックスを備える、請求項11に記載の方法。
- 名付けられたリソースが、セマフォを備える、請求項11に記載の方法。
- 前記ステップが、前記名付けられたリソースの名前を引き出すことを備える、
請求項11に記載の方法。 - 前記名付けられたリソースの名前についての前記引き出すことが、
i. 名前情報を取得し、
ii. 名前情報に基づいて前記名前を作成すること、
を備え、
前記ステップb.が、
i. 前記名前情報を取り出し、
ii. 前記名前情報に基づいて前記名前を作成し、
iii. 作成された名前を使用して前記名付けられたリソースにアクセスすることを試みること、
を備える、請求項14に記載の方法。 - 前記名前情報が、前記アプリケーションの開発者によって提供される情報を備える、
請求項15に記載の方法。 - 前記名前情報が、プロセスの特定の値を備える、請求項15に記載の方法。
- 前記プロセスの特定の値が、プロセスのスタート時間を備える、請求項17に記載の方法。
- 前記プロセスの特定の値が、プロセスIDを備える、請求項17に記載の方法。
- コンピュータプログラム製品であって、
コンピュータで使用可能な媒体を備え、前記媒体は、記録されたコンピュータプログラムロジックを有し、コンピュータ上で実行されたとき、セキュリティコードのシェルモジュールをアプリケーションに結びつけ、
前記コンピュータプログラムロジックは、
コンピュータにリソースを作成させる、前記シェルモジュール中の、第1のコンピュータプログラムロジック;
コンピュータに前記リソースへのアクセスを試みさせる、前記アプリケーション中の、第2のコンピュータプログラムロジック;
前記アクセスが成功しない場合に、コンピュータにアプリケーションを終了させる、第3のコンピュータプログラムロジック、
を備える、コンピュータプログラム製品。 - 前記リソースは、割り当てられたメモリを備え、
前記コンピュータはプログラム製品は、
コンピュータに、取り決められた値を割り当てられたメモリ中に保存させる、第4のコンピュータプログラムロジックと、
コンピュータに、前記割り当てられたメモリのアドレスの表示を保存させる、第5のコンピュータプログラムロジックと、
を備え、
前記第1のコンピュータプログラムロジックの後で、かつ、前記第2のコンピュータプログラムロジックの前に、前記第4と前記第5のコンピュータプログラムロジックが実行される、
請求項20に記載のコンピュータプログラム製品。 - 前記割り当てられたメモリのアドレスの表示が、前記アプリケーションの実行可能なヘッダに保存される、
請求項21に記載のコンピュータプログラム製品。 - 前記第2のコンピュータプログラムロジックが、
i. コンピュータに、実行可能なヘッダから前記アドレスの表示を取り出すことを試みさせ、前記アドレスの表示を取り出すこと出来なかったことが、前記リソースへのアクセスの不成功を示す、コンピュータプログラムロジックと、
ii. コンピュータに、割り当てられたメモリの内容を読ませる、コンピュータプログラムロジックと、
iii. コンピュータに、読み込まれた前記内容が、前記取り決められた値と一致するかどうか決定させ、前記取り決められた値と一致しなかったことが、前記リソースへのアクセスの不成功を示すコンピュータプログラムロジックと、
を備える、請求項22に記載のコンピュータプログラム製品。 - 前記リソースが、名付けられたリソースを備える、請求項20に記載のコンピュータプログラム製品。
- 前記第1のコンピュータプログラムロジックが、
i. コンピュータに、名前情報を取得させるコンピュータプログラムロジックと、
ii. コンピュータに、前記名前情報に基づいて前記リソースの名前を作成させるコンピュータプログラムロジックと、
を備え、
前記第2のコンピュータプログラムロジックが、
i. コンピュータに、前記名前情報を取り出させる、コンピュータプログラムロジックと、
ii. コンピュータに、前記名前情報に基づいて名前を作成させる、コンピュータプログラムロジックと、
iii. コンピュータに、作成された前記名前を使用して前記名付けられたリソースにアクセスすることを試みさせ、作成された前記名前を使用して前記名付けられたリソースにアクセス出来なかったことが、前記リソースへのアクセスの不成功を示す、コンピュータプログラムロジックと、
を備える、請求項24に記載のコンピュータプログラム製品。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/338,690 US20070174571A1 (en) | 2006-01-25 | 2006-01-25 | Binding a protected application program to shell code |
PCT/US2007/001800 WO2007087316A2 (en) | 2006-01-25 | 2007-01-23 | Binding a protected application program to shell code |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009524879A true JP2009524879A (ja) | 2009-07-02 |
Family
ID=38286953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008552367A Pending JP2009524879A (ja) | 2006-01-25 | 2007-01-23 | プロテクトされたアプリケーションプログラムとシェルコードとの結合 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070174571A1 (ja) |
EP (1) | EP1977551B1 (ja) |
JP (1) | JP2009524879A (ja) |
WO (1) | WO2007087316A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013507671A (ja) * | 2009-10-12 | 2013-03-04 | セーフネット インコーポレイテッド | シェル・コードに埋め込まれたソフトウェア・ライセンス |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8132266B2 (en) * | 2006-03-28 | 2012-03-06 | Emc Corporation | Methods, systems, and computer program products for identifying and enforcing software feature limits across different hardware platforms, software releases, and tiers |
CN107480476B (zh) * | 2017-06-15 | 2020-05-19 | 西北大学 | 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030046671A1 (en) * | 2001-01-29 | 2003-03-06 | Matt Bowen | System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures |
JP2003527653A (ja) * | 1999-06-25 | 2003-09-16 | テレフォンアクチーボラゲット エル エム エリクソン(パブル) | データ処理デバイスと方法 |
JP2005085188A (ja) * | 2003-09-11 | 2005-03-31 | Fujitsu Ltd | プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 |
US20050149615A1 (en) * | 2003-12-17 | 2005-07-07 | Nedimyer Joseph P. | System and method for processing resource registry updates without regard to chronological order |
US20050177812A1 (en) * | 1999-12-01 | 2005-08-11 | Microsoft Corporation | External resource files for application development and management |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5850518A (en) * | 1994-12-12 | 1998-12-15 | Northrup; Charles J. | Access-method-independent exchange |
US5689638A (en) * | 1994-12-13 | 1997-11-18 | Microsoft Corporation | Method for providing access to independent network resources by establishing connection using an application programming interface function call without prompting the user for authentication data |
US5857102A (en) * | 1995-03-14 | 1999-01-05 | Sun Microsystems, Inc. | System and method for determining and manipulating configuration information of servers in a distributed object environment |
DE19701166A1 (de) * | 1997-01-15 | 1998-07-23 | Siemens Ag | Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen |
US6067637A (en) * | 1997-05-16 | 2000-05-23 | At&T Corp | Data reduction technique for rule based systems |
US7290288B2 (en) * | 1997-06-11 | 2007-10-30 | Prism Technologies, L.L.C. | Method and system for controlling access, by an authentication server, to protected computer resources provided via an internet protocol network |
US6628965B1 (en) * | 1997-10-22 | 2003-09-30 | Dynamic Mobile Data Systems, Inc. | Computer method and system for management and control of wireless devices |
US6172676B1 (en) * | 1998-07-17 | 2001-01-09 | International Business Machines Corporation | Method and computer program product for implementing multiple drag and drop operations for large objects without blocking an operating system interface |
AU7623600A (en) * | 1999-11-16 | 2001-05-30 | Intel Corporation | A method of providing secure linkage of program modules |
US7111285B2 (en) * | 2001-07-17 | 2006-09-19 | Liquid Machines, Inc. | Method and system for protecting software applications against static and dynamic software piracy techniques |
US7143288B2 (en) * | 2002-10-16 | 2006-11-28 | Vormetric, Inc. | Secure file system server architecture and methods |
DE60306952T2 (de) * | 2002-11-18 | 2007-02-08 | Arm Ltd., Cherry Hinton | Zuordnung von virtuellen zu physischen speicheradressen in einem system mit einem sicheren bereich und einem nicht sicheren bereich |
CA2433527A1 (en) * | 2003-06-26 | 2004-12-26 | Ibm Canada Limited - Ibm Canada Limitee | System and method for object-oriented graphically integrated command sh ell |
US7546641B2 (en) * | 2004-02-13 | 2009-06-09 | Microsoft Corporation | Conditional access to digital rights management conversion |
-
2006
- 2006-01-25 US US11/338,690 patent/US20070174571A1/en not_active Abandoned
-
2007
- 2007-01-23 WO PCT/US2007/001800 patent/WO2007087316A2/en active Application Filing
- 2007-01-23 EP EP07716933.2A patent/EP1977551B1/en active Active
- 2007-01-23 JP JP2008552367A patent/JP2009524879A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003527653A (ja) * | 1999-06-25 | 2003-09-16 | テレフォンアクチーボラゲット エル エム エリクソン(パブル) | データ処理デバイスと方法 |
US20050177812A1 (en) * | 1999-12-01 | 2005-08-11 | Microsoft Corporation | External resource files for application development and management |
US20030046671A1 (en) * | 2001-01-29 | 2003-03-06 | Matt Bowen | System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures |
JP2005085188A (ja) * | 2003-09-11 | 2005-03-31 | Fujitsu Ltd | プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置 |
US20050149615A1 (en) * | 2003-12-17 | 2005-07-07 | Nedimyer Joseph P. | System and method for processing resource registry updates without regard to chronological order |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013507671A (ja) * | 2009-10-12 | 2013-03-04 | セーフネット インコーポレイテッド | シェル・コードに埋め込まれたソフトウェア・ライセンス |
Also Published As
Publication number | Publication date |
---|---|
EP1977551B1 (en) | 2014-01-01 |
WO2007087316A2 (en) | 2007-08-02 |
US20070174571A1 (en) | 2007-07-26 |
WO2007087316A3 (en) | 2008-04-24 |
EP1977551A2 (en) | 2008-10-08 |
EP1977551A4 (en) | 2012-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7721114B2 (en) | Method for using shared library in tamper resistant microprocessor | |
CN110310205B (zh) | 一种区块链数据监控方法、装置、设备和介质 | |
CN111427707B (zh) | 一种基于共享内存池的ipc通信方法 | |
CN103136468B (zh) | 协助用于硬件保护的应用程序的系统服务请求交互 | |
US8340297B2 (en) | Method and apparatus for efficiently providing location of contents encryption key | |
US7805758B2 (en) | Information processing apparatus | |
US20110271350A1 (en) | method for protecting software | |
CN109670312A (zh) | 安全控制方法及计算机系统 | |
JP2010510574A (ja) | セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法 | |
EP3552093B1 (en) | Application piracy prevention with secure enclave protection of automatically modularized functions | |
CN106599629A (zh) | 一种安卓应用程序加固方法及装置 | |
CN107832589A (zh) | 软件版权保护方法及其系统 | |
JP4591163B2 (ja) | バスアクセス制御装置 | |
KR20110013192A (ko) | 실행형 컨텐츠의 분리 실행이 가능한 저장 장치 및 그의 네이티브 실행 환경 구현 장치 | |
US20070136204A1 (en) | Apparatus and method for implementing digital rights management systems in low-efficiency storage device | |
CN101551838B (zh) | 一种存储卡身份认证方法及其系统 | |
JP2009524879A (ja) | プロテクトされたアプリケーションプログラムとシェルコードとの結合 | |
US20110145596A1 (en) | Secure Data Handling In A Computer System | |
CN107092517B (zh) | 一种sdk工具包的生成方法及装置 | |
US11500982B2 (en) | Systems and methods for reliably injecting control flow integrity into binaries by tokenizing return addresses | |
KR20200017120A (ko) | 코스 스프레잉을 이용한 코드 보호 방법 및 시스템 | |
CN110110506B (zh) | 基于应用程序安装包的程序加固方法及装置 | |
Bouffard et al. | Accessing secure information using export file fraudulence | |
KR20200017121A (ko) | 원타임 코드를 이용한 코드 보호 방법 및 시스템 | |
CN112131612B (zh) | 一种cf卡数据防篡改方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110426 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110726 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110802 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110920 |