(57)【要約】  本発明は、ソフトウェア保護に関する。実行環境によりコンピュータ装置において走ることの可能な元の実行ファイルが、代替えの実行環境においてラップされこれにより新しい実行ファイルを形成し、これにより、コンピュータ装置のオペレーティングシステムに対する元の実行ファイルからの呼び出しが、検査又は操作されないようにした方法が開示される。これによって、実行可能ファイルは、検査及びリバースエンジニアリングに対して保護される。
2008535117.tif 000002
【特許請求の範囲】
【請求項１】
検査及び／又は操作に対してコンピュータ装置における実行ファイルを保護するための方法であって、前記コンピュータ装置は、前記実行ファイルの実行のための実行環境を有し、
・オペレーティングシステム呼び出しの実現を有する代替えの実行環境を発生するステップと、
・当該元の実行ファイルと前記代替えの実行環境とを組み合わせて新しい実行ファイルにするステップと、
を有する方法。
【請求項２】
請求項１に記載の方法であって、前記元の実行ファイルにおける呼び出しを前記代替えの実行環境において実現される対応の呼び出しに変換するステップをさらに有する方法。
【請求項３】
請求項１又は２に記載の方法であって、前記代替えの実行環境は、仮想オペレーティングシステムを有する、方法。
【請求項４】
請求項３に記載の方法であって、前記代替えの実行環境はさらに、仮想ファイルシステム、仮想レジストリ、仮想プロセスマネージャ、仮想リソースマネージャのうちの１つ又は複数の構成部を有する、方法。
【請求項５】
請求項１ないし４のうちいずれか１つに記載の方法であって、前記組み合わせるステップは、前記新しい実行ファイルをブートストラップコードと組み合わせることを有する、方法。
【請求項６】
請求項１ないし５のうちいずれか１つに記載の方法であって、
前記元の実行ファイルにおける呼び出しを識別し、これにより前記代替えの実行環境を発生するステップは、前記元の実行ファイルにおいて識別される呼び出しについてのみ実現を生じることを有するようにする前置ステップをさらに有する、方法。
【請求項７】
請求項１ないし６のうちいずれか１つに記載の方法であって、前記代替えの実行環境は、最も一般的なオペレーティングシステム呼び出しの実現を有するように発生される、方法。
【請求項８】
データ処理装置に、請求項１ないし７のうちいずれか１つに記載の方法のステップを実行させることを、当該コンピュータプログラムが前記データ処理装置において実行されるときになすよう構成されるプログラムコード手段を有するコンピュータプログラム。
【請求項９】
請求項１ないし７のうちいずれか１つに記載の方法を行うように構成された第１の処理回路を有するデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検査及び／又は操作に対してコンピュータ装置にける実行ファイルを保護するための方法に関し、特にそのコンピュータ装置が当該実行ファイルの実行環境を有するものに関する。
【背景技術】
【０００２】
コンピュータ上のソフトウェアが不正な検査や改竄、リバースエンジニアリングなどにかけられる可能性があることは、よく知られた問題である。この問題は、コンピュータが益々少なくとも時としてエクストラネットやイントラネット、インターネットなどのネットワークを介して他のコンピュータと接続されるにつれて益々厳しいものとなりつつある。
【０００３】
実行ファイルをパックしそれを伸長コードと組み合わせるよう圧縮アルゴリズムを用いるシェルパッケージャユーティリティ（shell packager utility）がある。結果としての実行ファイルは、先ずメモリにおけるその圧縮された実行ファイルを伸長するブートストラップコードを有し当該実行ファイルのエントリポイントを呼び出す。しかしながら、実行ファイルはコンピュータのメモリ媒体において利用可能になるので、現在のパッケージャユーティリティを介して実行ファイルが圧縮されると、リバースエンジニアリングが可能となる。さらに、実行ファイルからオペレーティングシステム（ＯＳ）、レジストリ又はメモリへの呼び出しのスパイ行為は、それらの伸長の後に現在の圧縮された実行ファイルで可能となる。
【０００４】
米国特許出願に係る文献のＵＳ６００６３２８は、盗聴、改竄、検査、追跡及びなりすましに対するソフトウェアの保護について記述している。この保護は、暗号化、難文化、追跡防止、改竄防止、自己検証、実行時間自己監視及び視聴覚認証技術の組み合わせによって得られる。しかしながら、これは、これら技術の処理の比較的に大規模なロギングを必要とする複雑な組み合わせである。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって本発明の目的は、検査及び／又は操作に対するソフトウェア保護を強固にする代替えの方法を提供することである。
【課題を解決するための手段】
【０００６】
この目的は、冒頭の段落の方法が、・オペレーティングシステム呼び出しの実現を有する代替えの実行環境を発生するステップと、・当該元の実行ファイルと前記代替えの実行環境とを組み合わせて新しい実行ファイルにするステップと、を有するときに達成される。
【０００７】
これにより、元の実行ファイルは、当該代替えの実行環境を有する新しい実行ファイルの中へパック／ラップされ、元の実行ファイルからコンピュータ装置のオペレーティングシステムへの呼び出しは、もはや検査又は操作されることができない。これは、どのタイプの検査及び操作に対しても実行ファイルの保護をなす。現在のオペレーティングシステム及びコンパイラは、通常はオペレーティングシステムにより提供されるＡＰＩ（Application Program Interface）を呼び出すためのいわゆるダイナミックリンキング法（dynamic linking method）を用いているので、元の実行ファイルは、オペレーティングシステムへの呼び出しを有するのが普通である。このような呼び出しは、当該オペレーティングシステムのＡＰＩサービスを実現するライブラリ又は機能への呼び出しとすることができる。
【０００８】
この明細書を通じて、「検査及び／又は操作」なる文言は、盗聴、改竄、調査、リバースエンジニアリング、ＡＰＩハイジャック、ＡＰＩ導入及びＡＰＩスパイ行為のいずれかをカバーすることを意味するものである。さらに、「実行ファイル」なる文言は、プログラムを含むソフトウェア又はファイル、すなわちコンピュータ装置におけるプログラムとして実行させ又は走らせることの可能なソフトウェア又はファイルをカバーすることを意味する。「ＯＳ呼び出しの実現」なる文言は、元の実行ファイルにおけるＯＳ呼び出しに対応する呼び出しを行う方法を含むことを意味する。最後に、「呼び出し」なる文言は、「コマンド」又は「リクエスト」と同義語であることを意味する。
【０００９】
好ましくは、本方法は、前記元の実行ファイルにおける呼び出しを前記代替えの実行環境において実現される対応の呼び出しに変換するステップをさらに有する。本方法のこの変換ステップにおいて、例えばダイナミックにリンクづけされるライブラリへの当該元の実行ファイルにおける参照又は呼び出しは、代替えの実行環境において実現される呼び出しにより置換され又は当該呼び出しに変換される。これにより、新しい実行ファイルの機能が元の実行ファイルの機能と対応することが保証される。元の実行ファイルにおける呼び出しを変換するステップは、ダイナミックにリンクづけされるライブラリへの参照を含む元の実行ファイルにおけるテーブルを通じて動作し代替えの実行環境において実現される呼び出しへのこうした参照を置換することによって行うことができる。
【００１０】
好適実施例において、前記代替えの実行環境は、仮想オペレーティングシステムを有する。この仮想オペレーティングシステムは、元の実行ファイルにおける呼び出しが仮想オペレーティングシステムにおける対応の呼び出しに変換されたときに、元の実行ファイルに関連づけてオペレーティングシステムのタスクを実行するように構成される。但し、仮想オペレーティングシステムにおけるこのような呼び出しは、仮想オペレーティングシステムの外において検出可能とはならない。
【００１１】
本発明による方法の他の好適実施例においては、前記代替えの実行環境はさらに、仮想ファイルシステム、仮想レジストリ、仮想プロセスマネージャ、仮想リソースマネージャのうちの１つ又は複数の構成部を有する。これら構成部の各々が代替えの実行環境に含まれるべきかどうかは、元の実行ファイルにおいてどの構成部が呼び出されるかによることになるので、元の実行ファイルにおいて呼び出されない構成部は、代替えの実行環境に含まれる必要はなく、逆に、代替えの実行環境に含まれる必要がある場合は元の実行ファイルにおいて構成部が呼び出されるものとなる。
【００１２】
好ましくは、本発明による方法における組み合わせのステップは、前記新しい実行ファイルをブートストラップコードと組み合わせることを有する。これにより、新しい実行ファイルを、コンピュータ装置の中へロードし、ブートストラップコードを用いることにより当該コンピュータ上で実行することができる。
【００１３】
本方法の好適実施例において、さらに、元の実行ファイルにおける呼び出しを識別する前置ステップを有し、これにより、代替えの実行環境を発生するステップは、元の実行ファイルにおいて識別される呼び出しについてのみ実現を生じさせることを含む。これにより、過度に複雑又は大規模な代替えの実行環境を発生することが回避される。
【００１４】
本方法のまた別の好適実施例において、当該代替えの実行環境は、最も一般的なオペレーティングシステム（ＯＳ）呼び出しの実現を有するように発生される。こうした最も一般的なオペレーティングシステム（ＯＳ）呼び出しには、例えば、ファイルシステム呼び出し、レジストリ呼び出し、処理マネージメント呼び出し及びリソースマネージメント呼び出しがある。これにより、元の実行ファイルにおける呼び出しの識別が回避される。
以下、本発明を、好適な実施例について図面を参照しつつ詳細に説明する。
【発明を実施するための最良の形態】
【００１５】
図の説明全体を通して、その構成部は、コンピュータ装置において実現可能なハードウェア、ソフトウェア又はミドルウェアの一部であると理解されたい。さらに、当該コンピュータ装置は、例えばコンピュータ装置内へ初期時にロードされた後にそのコンピュータ装置における他の全てのプログラムを管理するプログラムなどのオペレーティングシステム（ＯＳ）を有することも理解されたい。他のプログラムは、実行ファイル又はアプリケーションプログラムと呼ばれる。実行ファイル又はアプリケーションプログラムは、規定されたアプリケーションプログラムインターフェース（ＯＳ ＡＰＩ）を通じたサービスのために呼び出し又はリクエストをなすことによってオペレーティングシステムを用いる。このＯＳ ＡＰＩは、図において水平線として示され、ＯＳ ＡＰＩへの呼び出しは、これを指し示す矢印により示される。オペレーティングシステム（ＯＳ）への直接の呼び出しは、この水平線の下に位置づけられる要素を指し示す矢印として示される。
【００１６】
また、このコンピュータ装置は、レジストリ、記憶手段、プロセッサユニット、入力／出力手段、表示手段などの適切な構成部を有するのが普通であると理解されたい。但し、図にはこれらは示されていない。
【００１７】
図１は、従来技術の実行環境の構成部の概略図である。示されているのは、元の実行ファイル１０である。この実行ファイルは、矢印１０ａにより示されるＯＳ ＡＰＩへ呼び出しをなすことができる。付加的実行ファイル２０は、元の実行ファイル１０の実行に関与させられるようにすることができる。これら付加的実行ファイル２０は、それら自身が、矢印２０ａにより示されるＯＳ ＡＰＩへの呼び出しをなしうる。矢印３０ａは、ファイルシステムにおいて元の実行ファイル１０又は付加的実行ファイル２０からファイル及び／又はディレクトリ３０への呼び出しを示す。矢印４０ａは、例えばレジストリ設定４０を読み取るために元の実行ファイル１０又は付加的実行ファイル２０からレジストリへの呼び出しを示す。最後に、矢印５０ａは、元の実行ファイル１０又は付加的実行ファイル２０から付加的リソース５０への呼び出しを示す。このような呼び出し３０ａ，４０ａ，５０ａは、オペレーティングシステムＯＳにより処理され、例えば、当該ファイル、ディレクトリ、リソースなどへのアクセスを管理するＯＳへ送られる。
【００１８】
図１のこれまでの説明から、元の実行ファイルは、例えばＡＰＩハイジャック又はＡＰＩ導入法によりＯＳ ＡＰＩ及びＯＳへの呼び出し１０ａ〜５０ａを暴くようにリバースエンジニアリングにかけられうる。元の実行ファイル１０がコンピュータ装置におけるメモリ装置のファイルをアクセスし又はコンピュータ装置におけるレジストリにおけるキーをアクセスしようとする場合、ＡＰＩスパイツールを当該呼び出しを監視しスパイ対象とするよう用いることができる。
【００１９】
図２は、本発明による代替えの実行環境１００の構成部の概略図である。代替えの実行環境１００は、仮想オペレーティングシステム１０１、仮想ファイルシステム１１０、仮想レジストリ１２０並びに仮想プロセス及びリソースマネージャ１３０を有する。仮想ＯＳ１０１は、「ファイル作成」（Create File）、「ファイルオープン」（Open File）、「ファイル読み出し」（Read File）などのファイルＩ／Ｏについて仮想ファイルシステム１１０に呼び出し１１１をなすことができる。さらに、仮想ＯＳ１０１は、「キー開放」（Open Key）、「キー読み出し」（Read Key）などのレジストリＩ／Ｏに関して仮想レジストリ１２０への呼び出し１２１をなすことができる。最後に、仮想ＯＳは、「プロセス作成」（Create Process）、「ライブラリロード」（Load Library）、「リソース取得」（Get Resource）など、プロセスマネージメントに関する呼び出し及び／又はリソースマネージメント１３２に関する呼び出しを、仮想プロセス及びリソースマネージャ１３０に対して行うことができる。
【００２０】
図２に示される代替えの実行環境の構成部は、模範例に過ぎず、他の又は代替えの構成部を元の実行ファイルにおける呼び出しに応じて代替えの実行環境の一部とすることができる。
【００２１】
図３は、本発明による新しい実行ファイル１０００の概略図である。新しい実行ファイル１０００は、代替えの実行環境１００において元の実行ファイル１０を処理しラッピングしたことの結果である。したがって、新しい実行ファイル１０００は、図１に示される元の実行ファイル１０、付加的実行ファイル２０、付加的ファイル及びディレクトリ３０、レジストリ設定４０並びに付加的リソース５０を含む。さらに、新しい実行ファイル１０００は、図２に示される仮想ＯＳ１００、仮想ファイルシステム１１０、仮想レジストリ１２０並びに仮想プロセス及びリソースマネージャ１３０と、呼び出し１１１，１２１，１３１及び１３２とを含む。さらに、図３に示されるように、新しい実行ファイル１０００は、新しい実行ファイル１０００をメモリにロードしそれが実行を開始することを可能にするためのブートストラップコード１０１０を有する。
【００２２】
なお、図１及び図３における元の実行ファイル１０は、圧縮可能である。
【００２３】
図４は、本発明の模範的方法のフローチャートである。図示の方法は、ステップＡにおいて開始する。後続のステップにおいて、ステップＢでは、元の実行ファイルにおける呼び出しが識別される。これら呼び出しは、通常はオペレーティングシステムへの呼び出しである。その後、ステップＣにおいて、代替えの実行環境が発生される。この代替えの実行環境は、オペレーティングシステム呼び出しの実現を有するのがよい。代替えの実行環境は、仮想オペレーティングシステムと、恐らくは仮想ファイルシステム、仮想レジストリ、仮想プロセスマネージャ、仮想リソースマネージャのうちの１つ又は複数とを有することができる。その後、ステップＤにおいて、ステップＢにおいて識別された元の実行ファイルにおける呼び出しは、代替えの実行環境において実現される対応の呼び出しに変換される。この方法は、ステップＥへ継続し、そこで元の実行ファイル及び代替えの実行環境が組み合わされて新しい実行ファイルとなる。好ましくは、この新しい実行ファイルも、ブートストラップコードと組み合わされる。このフローはステップＦにおいて終了する。
【００２４】
なお、この明細書において用いられる場合に「有する」，「有し」なる文言は、記述した特徴、整数、ステップ又は構成部の存在を特定するために使われているが、１つ又は複数の他の特徴、整数、ステップ、構成部又はそれらのグループの存在又は追加を排除するものではないことに留意されたい。単に或る特定の方策が相互に異なる従属請求項に挙げられているという点又は異なる実施例において説明されているという点は、これら方策の組み合わせが活用できないことを示すものではない。
【図面の簡単な説明】
【００２５】
【図１】従来技術の実行環境の構成部の概略図。
【図２】本発明による代替えの実行環境の構成部の概略図。
【図３】本発明による新しい実行ファイルの概略図。
【図４】本発明の模範的方法のフローチャート。
【図１】
2008535117.tif 000003
【図２】
2008535117.tif 000004
【図３】
2008535117.tif 000005
【図４】
2008535117.tif 000006
【国際調査報告】
2008535117.tif 000007