JP2009524879A - プロテクトされたアプリケーションプログラムとシェルコードとの結合 - Google Patents

プロテクトされたアプリケーションプログラムとシェルコードとの結合 Download PDF

Info

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
Application number
JP2008552367A
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 JP2009524879A publication Critical patent/JP2009524879A/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

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で例示されるコンピュータ環境で実行されるソフトウエアの形態をとることが出来る。
コンピュータシステム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の開発者によって提供されたあらかじめ決められた値であることができる。
シェルモジュール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.結論
本発明のいくつかの実施例が、上に記載されているが、例としてだけ提示されており、本発明を制限する意味ではないことを理解すべきである。添付の請求項で定義されるように、本発明の目的と精神から離れることなく、形状と細部において様々な変更がその中に成されることができることが、当業者によって理解されるであろう。それ故に、本発明の範囲と幅とは、上記の典型的な実施例によって制限されるべきではなく、以下の請求項およびそれと等価なものに従ってのみ定義されるべきである。
従来のシェルモジュールが添付されたアプリケーションプログラムを示す。 本発明の実施例に係る、本発明を実行することが出来るコンピュータのプラットフォームである。 アプリケーションが後でアクセスを試みるメモリ上の位置を、シェルモジュールが割り当てる、本発明の実施例の示す構成図である。 図3の実施例に関連する処理を示すフローチャートである。 アプリケーションが後でアクセスを試みるミューテックス(mutex)を、シェルモジュールが作成する本発明の実施例を示す構成図である。 図5の実施例に関係する処理を示すフローチャートである。
符号の説明
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 ミューテックス

Claims (25)

  1. セキュリティコードのシェルモジュールをアプリケーションに結合する方法であって、
    a. リソースを作成することが、前記シェルモジュールによって実行され、
    b. 前記リソースにアクセスすることを試みることが、前記アプリケーションによって実行され、
    c. 前記アクセスが成功しない場合、前記アプリケーションを終了する、
    セキュリティコードのシェルモジュールをアプリケーションに結合する方法。
  2. 前記リソースが、割り当てられたメモリを備え、
    d. 前記割り当てられたメモリに取り決められた値を保存し;
    e. 前記割り当てられたメモリのアドレスの表示を保存することが、シェルモジュールによって、ステップa.の後、かつ、ステップb.の前に行われる、
    ことを更に備える請求項1に記載の方法。
  3. 前記アドレスの表示が、前記割り当てられたメモリのアドレスを備える、
    請求項2に記載の方法。
  4. 前記アドレスの表示が、前記アプリケーションと前記シェルモジュールとの両方に知られた定数と結合された前記割り当てられたメモリのアドレスを備える、
    請求項2に記載の方法。
  5. 前記定数の少なくとも一部が、前記アプリケーションの開発者によって提供される、
    請求項4に記載の方法。
  6. 前記定数と前記割り当てられたメモリの前記アドレスとの結合が、知られた前記定数と前記アドレスとのビットごとの排他的論理和を備える、
    請求項4に記載の方法。
  7. 前記取り決められた値の少なくとも一部が、前記アプリケーションの開発者によって提供される、
    請求項2に記載の方法。
  8. 前記割り当てられたメモリの前記アドレスの表示が、前記アプリケーションの実行可能なヘッダに保存される、
    請求項2に記載の方法。
  9. 前記ステップb.が、
    i. 前記実行可能なヘッダから前記アドレスの表示を取り出すことを試み、前記実行可能なヘッダから前記アドレスの表示を取り出すことが出来なかったことが、前記リソースへの不成功なアクセスを示す、
    ことを備える請求項8に記載の方法。
  10. 前記ステップb.が、
    ii. 前記割り当てられたメモリの内容を読み、
    iii. 読み込んだ内容が、前記取り決められた値と一致するかどうか決定し、前記取り決められた値と一致しないことが、前記リソースへの不成功なアクセスを示す、
    ことを更に備える、請求項9に記載の方法。
  11. 前記リソースが、名付けられたリソースを備える、請求項1に記載の方法。
  12. 前記名付けられたリソースが、ミューテックスを備える、請求項11に記載の方法。
  13. 名付けられたリソースが、セマフォを備える、請求項11に記載の方法。
  14. 前記ステップが、前記名付けられたリソースの名前を引き出すことを備える、
    請求項11に記載の方法。
  15. 前記名付けられたリソースの名前についての前記引き出すことが、
    i. 名前情報を取得し、
    ii. 名前情報に基づいて前記名前を作成すること、
    を備え、
    前記ステップb.が、
    i. 前記名前情報を取り出し、
    ii. 前記名前情報に基づいて前記名前を作成し、
    iii. 作成された名前を使用して前記名付けられたリソースにアクセスすることを試みること、
    を備える、請求項14に記載の方法。
  16. 前記名前情報が、前記アプリケーションの開発者によって提供される情報を備える、
    請求項15に記載の方法。
  17. 前記名前情報が、プロセスの特定の値を備える、請求項15に記載の方法。
  18. 前記プロセスの特定の値が、プロセスのスタート時間を備える、請求項17に記載の方法。
  19. 前記プロセスの特定の値が、プロセスIDを備える、請求項17に記載の方法。
  20. コンピュータプログラム製品であって、
    コンピュータで使用可能な媒体を備え、前記媒体は、記録されたコンピュータプログラムロジックを有し、コンピュータ上で実行されたとき、セキュリティコードのシェルモジュールをアプリケーションに結びつけ、
    前記コンピュータプログラムロジックは、
    コンピュータにリソースを作成させる、前記シェルモジュール中の、第1のコンピュータプログラムロジック;
    コンピュータに前記リソースへのアクセスを試みさせる、前記アプリケーション中の、第2のコンピュータプログラムロジック;
    前記アクセスが成功しない場合に、コンピュータにアプリケーションを終了させる、第3のコンピュータプログラムロジック、
    を備える、コンピュータプログラム製品。
  21. 前記リソースは、割り当てられたメモリを備え、
    前記コンピュータはプログラム製品は、
    コンピュータに、取り決められた値を割り当てられたメモリ中に保存させる、第4のコンピュータプログラムロジックと、
    コンピュータに、前記割り当てられたメモリのアドレスの表示を保存させる、第5のコンピュータプログラムロジックと、
    を備え、
    前記第1のコンピュータプログラムロジックの後で、かつ、前記第2のコンピュータプログラムロジックの前に、前記第4と前記第5のコンピュータプログラムロジックが実行される、
    請求項20に記載のコンピュータプログラム製品。
  22. 前記割り当てられたメモリのアドレスの表示が、前記アプリケーションの実行可能なヘッダに保存される、
    請求項21に記載のコンピュータプログラム製品。
  23. 前記第2のコンピュータプログラムロジックが、
    i. コンピュータに、実行可能なヘッダから前記アドレスの表示を取り出すことを試みさせ、前記アドレスの表示を取り出すこと出来なかったことが、前記リソースへのアクセスの不成功を示す、コンピュータプログラムロジックと、
    ii. コンピュータに、割り当てられたメモリの内容を読ませる、コンピュータプログラムロジックと、
    iii. コンピュータに、読み込まれた前記内容が、前記取り決められた値と一致するかどうか決定させ、前記取り決められた値と一致しなかったことが、前記リソースへのアクセスの不成功を示すコンピュータプログラムロジックと、
    を備える、請求項22に記載のコンピュータプログラム製品。
  24. 前記リソースが、名付けられたリソースを備える、請求項20に記載のコンピュータプログラム製品。
  25. 前記第1のコンピュータプログラムロジックが、
    i. コンピュータに、名前情報を取得させるコンピュータプログラムロジックと、
    ii. コンピュータに、前記名前情報に基づいて前記リソースの名前を作成させるコンピュータプログラムロジックと、
    を備え、
    前記第2のコンピュータプログラムロジックが、
    i. コンピュータに、前記名前情報を取り出させる、コンピュータプログラムロジックと、
    ii. コンピュータに、前記名前情報に基づいて名前を作成させる、コンピュータプログラムロジックと、
    iii. コンピュータに、作成された前記名前を使用して前記名付けられたリソースにアクセスすることを試みさせ、作成された前記名前を使用して前記名付けられたリソースにアクセス出来なかったことが、前記リソースへのアクセスの不成功を示す、コンピュータプログラムロジックと、
    を備える、請求項24に記載のコンピュータプログラム製品。
JP2008552367A 2006-01-25 2007-01-23 プロテクトされたアプリケーションプログラムとシェルコードとの結合 Pending JP2009524879A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013507671A (ja) * 2009-10-12 2013-03-04 セーフネット インコーポレイテッド シェル・コードに埋め込まれたソフトウェア・ライセンス

Families Citing this family (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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