(57)【特許請求の範囲】
【請求項１】
第１バイナリを保存するメモリと制御部とを含むバイナリ併合装置が、バイナリを併合する方法において、
前記制御部が、前記第１バイナリに注入する第２バイナリを生成する工程と、
前記制御部が、第１プログラミングインターフェースを参照するアプリケーションの第１バイナリを難読化させる工程と、
前記制御部が、前記第１バイナリに係わる第１プログラミングインターフェースを生成する工程と、
前記制御部が、前記第２バイナリに係わる第２プログラミングインターフェースを生成する工程と、
前記制御部が、前記第１プログラミングインターフェース及び前記第２プログラミングインターフェースを比較し、参照される関数が同一であるか否かということを判断する工程と、
前記判断の結果、第２プログラミングインターフェース及び第１プログラミングインターフェースが同一ではない場合、前記制御部が、前記第１プログラミングインターフェースと対応する第１アドレステーブルを、前記第２プログラミングインターフェースと対応する第２アドレステーブルに交替する工程と、
前記制御部が、前記第１バイナリ及び前記第２バイナリを併合した最終バイナリを生成し、前記最終バイナリのエントリポイントが第２バイナリになるように設定する工程と、を含むバイナリ併合方法。
【請求項２】
前記第１バイナリまたは前記第２バイナリは、モバイル環境で実行されるバイナリであることを特徴とする請求項１に記載のバイナリ併合方法。
【請求項３】
前記第２バイナリは、
前記第１バイナリを復号する関数を含むソースファイルから生成したバイナリであることを特徴とする請求項１に記載のバイナリ併合方法。
【請求項４】
前記第２バイナリは、
アセンブリ語で具現されたバイナリであることを特徴とする請求項１に記載のバイナリ併合方法。
【請求項５】
前記第２バイナリは、
前記第１バイナリのうち実行バイナリファイルに含まれるように生成されたバイナリであることを特徴とする請求項１に記載のバイナリ併合方法。
【請求項６】
前記第１アドレステーブルは、
前記第１プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含み、
前記第２アドレステーブルは、
前記第２プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含むことを特徴とする請求項１に記載のバイナリ併合方法。
【請求項７】
第１プログラミングインターフェースを参照するアプリケーションの第１バイナリを難読化させる難読化手段と、
前記第１バイナリに注入する第２バイナリを生成するコード生成手段と、
前記第１バイナリに係わる第１プログラミングインターフェースを生成する第１参照分析手段と、
前記第２バイナリに係わる第２プログラミングインターフェースを生成する第２参照分析手段と、
前記第１プログラミングインターフェース及び前記第２プログラミングインターフェースを比較し、参照される関数が同一であるか否かということを判断する判断手段と、
前記判断の結果、第２プログラミングインターフェース及び第１プログラミングインターフェースが同一ではない場合、前記第１プログラミングインターフェースと対応する第１アドレステーブルを、前記第２プログラミングインターフェースと対応する第２アドレステーブルに交替するテーブル処理手段と、
前記アプリケーションのエントリポイントが第２バイナリになるように設定する処理手段と、を含むバイナリ併合装置。
【請求項８】
前記第１バイナリまたは前記第２バイナリは、モバイル環境で実行されるバイナリであることを特徴とする請求項７に記載のバイナリ併合装置。
【請求項９】
前記第２バイナリは、
前記第１バイナリを復号する関数を含むソースファイルから生成したバイナリであることを特徴とする請求項７に記載のバイナリ併合装置。
【請求項１０】
前記第２バイナリは、
アセンブリ語で具現されたバイナリであることを特徴とする請求項７に記載のバイナリ併合装置。
【請求項１１】
前記第２バイナリは、
前記第１バイナリのうち実行バイナリファイルに含まれるように生成されたバイナリであることを特徴とする請求項７に記載のバイナリ併合装置。
【請求項１２】
前記第１アドレステーブルは、
前記第１プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含み、
前記第２アドレステーブルは、
前記第２プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含むことを特徴とする請求項７に記載のバイナリ併合装置。
【請求項１３】
コンピュータに、請求項１ないし６のうちいずれか１項に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バイナリ併合装置、その方法及び該コンピュータプログラムに係り、さらに具体的には、アプリケーションの原バイナリである第１バイナリと、アプリケーションに追加する第２バイナリとを、ソースコードの修正なしにバイナリ状態で併合させるバイナリ併合装置、その方法及び該コンピュータプログラムに関する。
【背景技術】
【０００２】
現在、ほとんどのソフトウェア開発手続き及びその開発に使用されるツールを活用した開発作業において、開発者らは、要求提起者（ビジネス実務担当者）またはソフトウェア設計者の指示を受け、ビジネスロジックを具現するためのソースコーディング作業を遂行しなければならず、かようなビジネスロジック具現に必要な一体のデータベースＩ／Ｏ、ハードウェア制御、運用体制制御、保安管理などの機能を単位モジュールごとに一つ一つ作らねばならない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、アプリケーションの原バイナリである第１バイナリと、アプリケーションに追加する第２バイナリとを、ソースコードの修正なしに、バイナリ状態で併合させるバイナリ併合装置、その方法及び該コンピュータプログラムを提供することを一目的とする。
【課題を解決するための手段】
【０００４】
本発明の実施形態による第１バイナリを保存するメモリと、制御部とを含むバイナリ併合装置がバイナリを併合する方法は、前記制御部が、前記第１バイナリに注入する第２バイナリを生成する段階と、前記制御部が第１プログラミングインターフェースを参照するアプリケーションの第１バイナリを難読化させる段階と、前記制御部が、前記第１バイナリに係わる第１プログラミングインターフェースを生成する段階と、前記制御部が、前記第２バイナリに係わる第２プログラミングインターフェースを生成する段階と、前記制御部が、前記第１プログラミングインターフェース及び前記第２プログラミングインターフェースを比較し、参照される関数が完全に同一であるか否かということを判断する段階と、前記判断結果、第２プログラミングインターフェース及び第１プログラミングインターフェースが完全に同一ではない場合、前記制御部が、前記第１プログラミングインターフェースと対応する第１アドレステーブルを、前記第２プログラミングインターフェースと対応する第２アドレステーブルに交替する段階と、及び前記制御部が、前記第１バイナリ及び前記第２バイナリを併合した最終バイナリを生成し、前記最終バイナリのエントリポイントが第２バイナリになるように設定する段階と、を含んでもよい。
【０００５】
前述のところ以外の他の側面、特徴、利点が、以下の図面、特許請求の範囲、及び発明の詳細な説明から明確になるであろう。
【発明の効果】
【０００６】
本発明によれば、アプリケーションの原バイナリである第１バイナリと、アプリケーションに追加する第２バイナリとをソースコードの修正なしにバイナリ状態で併合させることができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態によるバイナリ配布システムを示す図面である。
【図２】本発明の実施形態によるバイナリ併合装置を示すブロック図である。
【図３】制御部の構造を示す図面である。
【図４】本発明の実施形態によるバイナリ併合方法を示すフローチャートである。
【図５】バイナリ併合装置によって生成されたバイナリが実行される方法を示すフローチャートである。
【図６】バイナリ併合装置と、第１ユーザ端末機、第２ユーザ端末機とのデータ送受信及び動作を示す図面である。
【図７】バイナリ併合装置と、第１ユーザ端末機、第２ユーザ端末機とのデータ送受信及び動作を示す図面である。
【図８】ユーザ端末機の構造を示す図面である。
【図９】バイナリの構造を説明するための図面であり、（ａ）は、バイナリを併合する前の第１バイナリの構造を示す図面であり、（ｂ）は、第１バイナリ及び第２バイナリを併合した最終バイナリの構造を示す図面である。
【図１０】バイナリのコード領域と、アドレステーブルとの連結関係を示す図面である。
【発明を実施するための形態】
【０００８】
＜発明の概要＞
本発明の実施形態による第１バイナリを保存するメモリと、制御部とを含むバイナリ併合装置がバイナリを併合する方法は、前記制御部が、前記第１バイナリに注入する第２バイナリを生成する段階と、前記制御部が第１プログラミングインターフェースを参照するアプリケーションの第１バイナリを難読化させる段階と、前記制御部が、前記第１バイナリに係わる第１プログラミングインターフェースを生成する段階と、前記制御部が、前記第２バイナリに係わる第２プログラミングインターフェースを生成する段階と、前記制御部が、前記第１プログラミングインターフェース及び前記第２プログラミングインターフェースを比較し、参照される関数が完全に同一であるか否かということを判断する段階と、前記判断結果、第２プログラミングインターフェース及び第１プログラミングインターフェースが完全に同一ではない場合、前記制御部が、前記第１プログラミングインターフェースと対応する第１アドレステーブルを、前記第２プログラミングインターフェースと対応する第２アドレステーブルに交替する段階と、及び前記制御部が、前記第１バイナリ及び前記第２バイナリを併合した最終バイナリを生成し、前記最終バイナリのエントリポイントが第２バイナリになるように設定する段階と、を含んでもよい。
【０００９】
本実施形態において、前記第１バイナリまたは前記第２バイナリは、モバイル環境で実行されるバイナリでもある。
【００１０】
本実施形態において、前記第２バイナリは、前記第１バイナリを復号する関数を含むソースファイルから生成したバイナリでもある。
【００１１】
本実施形態において、前記第２バイナリは、アセンブリ語で具現されたバイナリでもある。
【００１２】
本実施形態において、前記第２バイナリは、前記第１バイナリのうち実行バイナリファイルに含まれるように生成されたバイナリでもある。
【００１３】
本実施形態において、前記第１アドレステーブルは、前記第１プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含み、前記第２アドレステーブルは、前記第２プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含んでもよい。
【００１４】
本発明の実施形態によるバイナリ併合装置は、第１プログラミングインターフェースを参照するアプリケーションの第１バイナリを難読化させる難読化部と、前記第１バイナリに注入する第２バイナリを生成するコード生成部と、前記第１バイナリに係わる第１プログラミングインターフェースを生成する第１参照分析部と、前記第２バイナリに係わる第２プログラミングインターフェースを生成する第２参照分析部と、前記第１プログラミングインターフェース及び前記第２プログラミングインターフェースを比較し、参照される関数が完全に同一であるか否かということを判断する判断部と、前記判断結果、第２プログラミングインターフェース及び第１プログラミングインターフェースが完全に同一ではない場合、前記第１プログラミングインターフェースと対応する第１アドレステーブルを、前記第２プログラミングインターフェースと対応する第２アドレステーブルに交替するテーブル処理部と、前記アプリケーションのエントリポイントが第２バイナリになるように設定する処理部と、を含んでもよい。
【００１５】
本発明の実施形態によるコンピュータプログラムは、コンピュータを利用して、本発明の実施形態によるバイナリを併合する方法のうちいずれか１つの方法を実行させるために媒体に保存される。
【００１６】
それ以外にも、本発明を具現するための他の方法、他のシステム、及び前記方法を実行するためのコンピュータプログラムを記録するコンピュータで読み取り可能な記録媒体がさらに提供される。
【００１７】
＜発明の詳細＞
本発明は、多様な変換を加えることができ、さまざまな実施形態を有することができるが、特定実施形態を図面に例示し、詳細な説明によって詳細に説明する。本発明の効果、特徴、及びそれらを達成する方法は、図面と共に詳細に説明する実施形態を参照すれば、明確になるであろう。しかし、本発明は、以下で開示される実施形態に限定されるのではなく、多様な形態に具現されるのである。
【００１８】
以下、添付された図面を参照し、本発明の実施形態について詳細に説明し、図面を参照して説明するとき、同一であるか、あるいは対応する構成要素は、同一図面符号を付し、それに係わる重複説明は省略する事にする。
【００１９】
以下の実施形態において、第１、第２のような用語は、限定的な意味ではなく、１つの構成要素を他の構成要素と区別する目的に使用されている。
【００２０】
以下の実施形態において、単数の表現は文脈上明白に違うように示されない限り、複数の表現を含む。
【００２１】
以下の実施形態において、「含む」または「有する」というような用語は、明細書上に記載された特徴または構成要素が存在するということを意味するものであり、１以上の他の特徴または構成要素が付加される可能性をあらかじめ排除するものではない。
【００２２】
ある実施形態が異なって具現可能な場合、特定の工程順序は、説明される順序と異なって遂行されもする。例えば、連続して説明される２つの工程が、実質的に同時に遂行されもし、説明される順序と反対の順序で進められもする。
【００２３】
以下の実施形態において、「回路」は、例えば、プログラム可能な回路によって実行されるインストラクションを保存するハードウェアド回路、プログラム可能な回路、状態マシン回路及び／またはファームウェアを、単独、または任意の組み合わせで含んでもよい。アプリケーションは、ホストプロセッサ、または他のプログラム可能な回路のようなプログラム可能な回路上で実行されるコードまたはインストラクションとして具現される。本願の任意の実施形態において使用されるようなモジュールは、回路としても具現される。該回路は、集積回路チップのような集積回路としても具現される。
【００２４】
以下の実施形態において、ある部分がある構成要素を「含む」とするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「…器」、「モジュール」のような用語は、少なくとも１つの機能や動作を処理する単位を意味し、それは、ハードウェアやソフトウェア、またはハードウェア及びソフトウェアの結合によっても具現される。
【００２５】
図１は、本発明の実施形態によるバイナリ配布システム１を示す図面である。
【００２６】
図１を参照すれば、本発明の実施形態によるバイナリ配布システム１は、バイナリ併合装置１００、ユーザ端末機２００，４００、通信網３００を含んでもよい。
【００２７】
バイナリ併合装置１００は、第１バイナリ及び第２バイナリを併合する機能を遂行する。バイナリ併合装置１００は、第１バイナリの難読化のための第２バイナリを生成し、第１バイナリ及び第２バイナリを併合させた最終バイナリを生成することができる。バイナリ併合装置１００によって生成されたアプリケーションの最終バイナリのエントリポイントは、第２バイナリになる。また、バイナリ併合装置１００を介して、生成された第２バイナリは、第１バイナリを復号する機能を遂行し、第２バイナリのためのアドレステーブルから、第１バイナリのためのアドレステーブルに交替する機能を遂行する。
【００２８】
また、バイナリ併合装置１００は、１以上のアプリケーションの原バイナリを管理者端末機２００，４００から受信し、原バイナリを難読化し、難読化されたバイナリ解読のための保安（又はセキュア）バイナリを生成し、最終的に、アプリケーションそれぞれの原バイナリに保安バイナリを併合した最終バイナリを生成する。ここで、管理者は、アプリケーションのバイナリを生成する者であるか、あるいはバイナリ併合装置１００を管理する者でもある。
【００２９】
ユーザは、ユーザ端末機２００，４００を介して、アプリケーションのためのバイナリをダウンロードする。ユーザ端末機２００，４００は、ダウンロードされたバイナリを実行させる。
【００３０】
複数個のユーザ端末機２００は、有無線通信環境でウェブサービスを利用することができる通信端末機を意味する。ここで、ユーザ端末機２００は、ユーザのパソコン２０１でもあり、またはユーザの携帯用端末２０２でもある。図１においては、携帯用端末機２０２がスマートフォンとして図示されているが、本発明の思想は、それに制限されるものではなく、前述のように、ウェブブラウジングが可能なアプリケーションを搭載した端末であるならば、制限なしに使用される。
【００３１】
それについてさらに詳細に説明すれば、ユーザ端末機２００は、コンピュータ（例えば、デスクトップ、ラップトップ、タブレットなど）、メディアコンピュータプラットフォーム（例えば、ケーブル、衛星セットトップボックス、デジタルビデオレコーダ）、ハンドヘルドコンピュータデバイス（例えば、ＰＤＡ（personal  digital  assistant）、電子メールクライアントなど）、携帯電話の任意形態、または他種のコンピュータ、またはコミュニケーションプラットフォームの任意の形態を含んでもよいが、本発明は、それらに限定されるものではない。
【００３２】
一方、通信網３００は、複数個のユーザ端末機２００とバイナリ併合装置１００とを連結する役割を行う。すなわち、通信網３００は、ユーザ端末機２００が、バイナリ併合装置１００に接続した後、データを送受信することができるように、接続経路を提供する通信網を意味する。通信網３００は、例えば、ＬＡＮｓ（local  area  networks）、ＷＡＮｓ（wide  area  networks）、ＭＡＮｓ（metropolitan  area  networks）、ＩＳＤＮｓ（integrated  service  digital  networks）などの有線ネットワーク；無線ＬＡＮｓ、ＣＤＭＡ（code  division  multiple  access）、ブルートゥース（登録商標（Bluetooth））、衛星通信などの無線ネットワークを網羅することができるが、本発明の範囲は、それらに限定されるものではない。
【００３３】
図２は、本発明の実施形態によるバイナリ併合装置１００を示すブロック図である。
【００３４】
図２を参照すれば、バイナリ併合装置１００は、通信部１１０、データベース１２０、制御部１３０を含んでもよい。
【００３５】
通信部１１０は、バイナリ併合装置１００と、少なくとも１つのユーザ端末機２００との通信を可能にする１以上の構成要素を含んでもよい。例えば、通信部１１０は、ブルートゥース（Bluetooth）通信部、ＢＬＥ（Bluetooth  low  energy）通信部、近距離無線通信部（near  field  communication  unit）、ＷＬＡＮ（wireless  local  area  network）（Ｗｉ−Ｆｉ（wireless  fidelity））通信部、ジグビー（Zigbee）通信部、赤外線（ＩｒＤＡ：infra  red  data  association）通信部、ＷＦＤ（Ｗｉ−Ｆｉdirect）通信部、ＵＷＢ（ultra  wide  band）通信部、Ａｎｔ＋通信部などを含むか、あるいは移動通信網上で、基地局、外部の端末、サーバのうち少なくとも一つと無線信号を送受信する通信部を含んでもよいが、それらに限定されるものではない。ここで、該無線信号は、音声コール信号、画像通話コール信号、または文字／マルチメディアメッセージ送受信による多様な形態のデータを含んでもよい。
【００３６】
データベース１２０は、バイナリ併合装置１００が受信して伝送しなければならないバイナリ、及びバイナリ関連データを保存管理する機能を遂行する。図２には、データベース１２０が、バイナリ併合装置１００の内部に具備されているように図示されているが、それは、説明の便宜のためのものであり、データベース１２０は、バイナリ併合装置１００の外部装置にも具備される。データベース１２０は、フラッシュメモリタイプ、ハードディスクタイプ、マルチメディアカードマイクロタイプ、カードタイプのメモリ（例えば、ＳＤメモリまたはＸＤメモリなど）、ＲＡＭ（random  access  memory）、ＳＲＡＭ（static  random  access  memory）、ＲＯＭ（read-only  memory）、ＥＥＰＲＯＭ（electrically  erasable  programmable  read-only  memory）、ＰＲＯＭ（programmable  read-only  memory）、磁気メモリ、磁気ディスク、光ディスクのうち少なくとも１つのタイプの記録媒体を含んでもよい。また、バイナリ併合装置１００は、インターネット上において、データベース１２０の保存機能を遂行するウェブストレージまたはクラウドサーバを運用することもできる。
【００３７】
制御部１３０は、一般的に、バイナリ併合装置１００の全般的な動作を制御する。例えば、制御部１３０は、データベース１２０に保存されたプログラムを実行することにより、通信部１１０、データベース１２０などを全般的に制御することができる。制御部１３０は、プロセッサのように、データを処理することができる全種の装置を含んでもよい。ここで、「プロセッサ」は、例えば、プログラム内に含まれたコードまたは命令によって表現された機能を遂行するために、物理的に構造化された回路を有する、ハードウェアに内蔵されたデータ処理装置を意味する。かように、ハードウェアに内蔵されたデータ処理装置の一例として、マイクロプロセッサ、中央処理装置（ＣＰＵ：central  processing  unit）、プロセッサコア、マルチプロセッサ、ＡＳＩＣ（application-specific  integrated  circuit）、ＦＰＧＡ（field  programmable  gate  array）などの処理装置を網羅することができるが、本発明の範囲は、それらに限定されるものではない。
【００３８】
制御部１３０の構造について詳細に説明した図３を参照すれば、制御部１３０は、アプリケーションの原バイナリである第１バイナリと、追加モジュールに係わる第２バイナリとを併合する機能を遂行するために、難読化部１３１、コード生成部１３２、第１参照分析部１３３、第２参照分析部１３４、判断部１３５、テーブル処理部１３６、処理部１３７を含んでもよい。ここで、併合される第１バイナリ及び第２バイナリは、モバイル環境、例えば、スマートフォン、携帯電話などで実行されるバイナリでもある。
【００３９】
コード生成部１３１は、アプリケーションの原バイナリである第１バイナリに注入する第２バイナリを生成する。ここで、該第２バイナリは、アプリケーションの原バイナリである第１バイナリを復号するためのソースファイルをビリングしたファイルであり、第１バイナリを復号する関数、第２バイナリのためのアドレステーブルを、第１バイナリのためのアドレステーブルに交替することができる関数を含んでも具現される。第２バイナリは、第１バイナリのためのプログラミングインターフェースと異なるプログラミングインターフェースを参照することができ、第２バイナリのプログラミングインターフェースの正しい参照のために、プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含むアドレステーブルを生成することができ、第１バイナリのためのアドレステーブルに復元する機能が具現される。また、第２バイナリは、アドレステーブルの交替及び復元に係わるコードを含んでもよい。さらに具体的には、第２バイナリは、アプリケーションの原バイナリである第１バイナリの実行前、第１バイナリと対応するアドレステーブルに復元するコードを含んでもよい。特に、第２バイナリは、コンピュータでの機能を遂行するプログラムを作成するために使用される記号体系によって作成され、アセンブリ語、Fortran、Ｃ、Ｃ＋＋、ＪＡＶＡ（登録商標）などの言語でも具現されるが、それらに限定されるものではない。
【００４０】
難読化部１３２は、アプリケーションの原バイナリである第１バイナリを難読化させる。ここで、該難読化は、プログラム変換の一種であり、コードを読み難くすることにより、逆行分析（reverse  engineering）を介した攻撃を防ぐための目的とする。難読化技術は、区画難読化（layout  obfuscation）、データ難読化（data  obfuscation）、集合難読化（aggregation  obfuscation）、制御難読化（control  obfuscation）がある。それぞれの難読化技術は、当該技術分野で当業者であるならば、一般的な事柄であり、対称キーを利用した難読化、非対称キーを利用した難読化のうち１つの方法によって遂行されるであろう。
【００４１】
第１参照分析部１３３は、前記第１バイナリに係わる第１プログラミングインターフェースを抽出する。第１バイナリのソースである第１ソースファイルに含まれた１以上の関数は、呼び出される位置と、定義される位置とが異なることがあるが、そのとき、呼び出されるファイル内に定義されていない第１関数実行のために、第１ソースファイルは、第１関数が定義されたファイルを参照しなければならない。第１関数実行のために、定義されたファイルを参照することをプログラミングインターフェースという。第１関数の参照関係を有する第１ソースファイルをビルド（コンパイル）した第１バイナリは、第１関数が定義されたファイルを迅速に呼び出すために、第１関数が定義された領域の位置を、アドレス値でテーブル（以下、アドレステーブル）にして含む。第１参照分析部１３３は、第１バイナリに含まれたアドレステーブルを活用し、第１バイナリに係わる第１プログラミングインターフェースを抽出する。
【００４２】
第２参照分析部１３４は、前記第２バイナリに係わる第２プログラミングインターフェースを抽出する。第２プログラミングインターフェースは、第２バイナリに含まれた１以上の第２関数が、外部のファイルから定義されることにより、第２関数が定義されたファイルを、第２関数が呼び出されるファイルが参照しなければならない参照関係をいう。第２参照分析部１３４は、第２バイナリに含まれたアドレステーブルを活用し、第２バイナリのプログラミングインターフェースを抽出することができる。ここで、該プログラミングインターフェースは、関数名、関数が定義された領域のアドレス値をマッチングさせて含んでおり、関数名及びアドレス値は、二進値からなる。
【００４３】
判断部１３５は、抽出した第１プログラミングインターフェースと第２プログラミングインターフェースとを比較し、第１プログラミングインターフェース及び第２プログラミングインターフェースが完全に同一であるか否かということを判断する。判断部１３５は、第１プログラミングインターフェースに含まれた関数名及びアドレス値を順次に抽出し、抽出された関数名及びアドレス値が、第２プログラミングインターフェースに含まれているか否かということを個別に比較することにより、第１プログラミングインターフェース及び第２プログラミングインターフェース間の同一いかんを判断することができる。
【００４４】
テーブル処理部１３６は、前記判断結果、第１プログラミングインターフェース及び第２プログラミングインターフェースが完全に同一ではない場合、前記第１プログラミングインターフェースと対応する第１アドレステーブルを、前記第２プログラミングインターフェースと対応する第２アドレステーブルに交替する。それを介して、本発明の実施形態によるバイナリ併合装置１００は、ビルドされたバイナリのソースファイルなしに、追加するモジュールを追加することができ、追加されたモジュールのアドレステーブル及びバイナリを、原バイナリに併合することにより、原バイナリにモジュール追加が可能になる。特に、本発明の実施形態によるバイナリ併合装置１００は、原バイナリに、バイナリの難読化及び復号のための追加モジュールのバイナリを併合することにより、アプリケーションが、ハッカの攻撃、ウイルスの攻撃などを受けることを防止することができる。また、本発明の実施形態によるバイナリ併合装置１００は、技術流出、機密保護などの理由で、ソースファイルの公開が困難である状況で、アプリケーションのバイナリに対して、保安モジュールを追加することができる。
【００４５】
処理部１３７は、前記第１バイナリ及び前記第２バイナリを併合した最終バイナリを生成し、前記最終バイナリのエントリポイントが第２バイナリになるように設定する。
【００４６】
他の実施形態において、バイナリ併合装置１００は、第１参照分析部１３３及び判断部１３５の実行なしに、アプリケーションのアドレステーブルを、第２バイナリと対応する第２プログラミングインターフェースと対応する第２アドレステーブルに交替することができる。それを介して、本発明の実施形態によるバイナリ併合装置１００は、比較手続きなしに、バイナリ併合という本来の目的を追い求めることができる。
【００４７】
また、選択的実施形態において、バイナリ併合装置１００は、１以上のアプリケーションのバイナリを保存管理し、ユーザ端末機２００，４００からのダウンロード要請と対応し、アプリケーションの最終バイナリを伝送するバイナリ送信部（図示せず）をさらに含んでもよい。また、バイナリ併合装置１００は、１以上の管理者のユーザ端末機２００，４００から、アプリケーションの原バイナリを受信するバイナリ受信部（図示せず）をさらに含んでもよい。バイナリ併合装置１００は、管理者のユーザ端末機２００，４００から受信したアプリケーションの原バイナリである第１バイナリに、保安関連モジュールである第２バイナリを併合し、前記アプリケーションに対するダウンロード要請を行ったユーザ端末機に、併合した最終バイナリを伝送することができる。
【００４８】
図４は、本発明の実施形態によるバイナリ併合方法を示すフローチャートである。
【００４９】
図４を参照すれば、本発明の実施形態によるバイナリ併合方法は、難読化段階（Ｓ１１０、バイナリ生成段階（Ｓ１２０）、第１プログラミングインターフェース生成段階（Ｓ１３０、第２プログラミングインターフェース生成段階（Ｓ１４０）、判断段階（Ｓ１５０）、テーブル処理部（Ｓ１６０）を含んでもよい。
【００５０】
Ｓ１１０においては、バイナリ併合装置１００は、アプリケーションの原バイナリである第１バイナリに注入する第２バイナリを生成する。
【００５１】
Ｓ１２０においては、バイナリ併合装置１００は、アプリケーションの原バイナリである第１バイナリを難読化させる。ここで、該難読化は、プログラム変換の一種でもってコードを読み難くすることにより、逆行分析を介した攻撃を防ぐことを目的とする。
【００５２】
Ｓ１３０においては、バイナリ併合装置１００は、前記第１バイナリに係わる第１プログラミングインターフェースを抽出する。
【００５３】
Ｓ１４０においては、バイナリ併合装置１００は、前記第２バイナリに係わる第２プログラミングインターフェースを抽出する。
【００５４】
Ｓ１５０においては、バイナリ併合装置１００は、抽出した第１プログラミングインターフェースと、第２プログラミングインターフェースとを比較し、第１プログラミングインターフェース及び第２プログラミングインターフェースが完全に同一であるか否かということを判断する。
【００５５】
Ｓ１６０においては、バイナリ併合装置１００は、前記判断結果、第１プログラミングインターフェース及び第２プログラミングインターフェースが完全に同一ではない場合、前記第１プログラミングインターフェースと対応する第１アドレステーブルを、前記第２プログラミングインターフェースと対応する第２アドレステーブルに交替する。
【００５６】
図５は、バイナリ併合装置１００によって生成されたバイナリが実行される方法を示すフローチャートである。
【００５７】
バイナリ併合装置１００によって生成されたバイナリは、ユーザ端末機２００，４００に伝送されて実行されるが、図５を参照すれば、バイナリが実行される方法は、第２バイナリ実行段階（Ｓ２１０）、第１バイナリ復号段階（Ｓ２２０）、アドレステーブル交替段階（Ｓ２３０）、第１バイナリ実行段階（Ｓ２４０）を含んでもよい。
【００５８】
Ｓ２１０段階に先立ち、ユーザ端末機２００，４００は、バイナリ併合装置１００に、アプリケーションに対するバイナリダウンロード要請を伝送し、前記バイナリダウンロード要請の応答として、前記バイナリ併合装置１００から、前記アプリケーションに係わるバイナリを受信する。
【００５９】
Ｓ２１０においては、ユーザ端末機２００，４００は、ユーザのアプリケーションに対する実行入力と対応し、前記アプリケーションのバイナリを実行させる。このとき、バイナリ併合装置１００によって受信されたバイナリのコードによって、バイナリのエントリポイントである第２バイナリを実行させる。
【００６０】
Ｓ２２０においては、ユーザ端末機２００，４００の制御部は、第１バイナリを復号する。ここで、復号過程は、第１バイナリの難読化を解読する過程として、難読化の方法に係わる方法によって遂行される。例えば、対称キーを利用して、第１バイナリが難読化されるならば、対称キーを利用して第１バイナリが復号される過程が遂行され、非対称キーを利用して第１バイナリが難読化されるならば、難読化過程で利用された個人キーと対をなす公開キーを利用して第１バイナリが復号される。第２バイナリは、図３に図示されているように、第１バイナリを難読化させたアルゴリズムと対をなす復号アルゴリズムを含んでおり、第１バイナリの復号に利用される。復号ロジックは、特定暗号化アルゴリズムに限られるものではなく、本発明の実施形態によるバイナリ併合装置及びその方法は、復号時間を短縮させるために、エンコーディング技法を利用した難読化を行う。
【００６１】
Ｓ２３０においては、ユーザ端末機２００，４００の制御部は、バイナリに含まれたアドレステーブルを、第１バイナリと対応する第１アドレステーブルに交替する。第１アドレステーブルは、第１バイナリに含まれた１以上の関数の定義領域に係わる情報を含んでおり、関数名、関数が定義された領域のアドレス値を含んでもよい。
【００６２】
Ｓ２４０においては、ユーザ端末機２００，４００の制御部は、第１バイナリを実行する。
【００６３】
図６及び図７は、バイナリ併合装置１００と、第１ユーザ端末機２００、第２ユーザ端末機４００とのデータ送受信及び動作を示す図面である。
【００６４】
図６に開示された実施形態によれば、バイナリ併合装置１００は、アプリケーションの配布バイナリを保存管理する機能だけでなく、アプリケーションの配布バイナリを生成する機能を遂行する。
【００６５】
バイナリ併合装置１００は、第１ユーザ端末機２００から、第１アプリケーションに係わるバイナリアップロード信号を受信する（Ｓ３１０）。ここで、第１アプリケーションに係わるバイナリアップロード信号は、第１アプリケーションを配布するために、第１アプリケーションのバイナリをアップロードするための信号として、第１アプリケーションに係わる情報、第１アプリケーションのバイナリを含んでもよく、また、ユーザに提供する説明である第１アプリケーションの詳細説明、開発者、開発企業、用途、ユーザレビュ、評点、価格情報、関連コンテンツなどを含んでもよい。
【００６６】
バイナリ併合装置１００は、バイナリアップロード信号と対応し、第１アプリケーションの原バイナリである第１バイナリに追加機能を有する第２バイナリを併合した最終バイナリを生成する（Ｓ３２０）。特に、第２バイナリは、保安関連機能を有することができる。それを介して、バイナリ併合装置１００は、原バイナリのデコーディングなしに原バイナリを難読化し、復号することができる追加バイナリを併合させることができる。バイナリ併合装置１００は、第１アプリケーションの最終バイナリを直接保存管理したり、第１アプリケーションの最終バイナリを、アプリケーションの配布バージョンを管理するバイナリ配布装置に伝送したりすることができる。
【００６７】
バイナリの配布過程について説明すれば、バイナリ併合装置１００は、第２ユーザ端末機４００から、第１アプリケーションに係わるダウンロード要請を受信し（Ｓ３３０）、前記ダウンロード要請と対応し、第２ユーザ端末機４００に、第１アプリケーションの最終バイナリを伝送する（Ｓ３４０）。
【００６８】
受信した最終バイナリを受信した第２ユーザ端末機４００は、第１アプリケーションに係わる最終バイナリを実行する（Ｓ３５０）。第２ユーザ端末機４００は、最終バイナリに含まれた第２バイナリを実行し、最終バイナリのアドレステーブルを、第１バイナリのためのアドレステーブルに交替し（Ｓ３６０）、第１バイナリを実行する（Ｓ３７０）。
【００６９】
かように、本発明の実施形態によるバイナリ配布システム１０は、開発者または管理者の端末機から受信した１以上のバイナリを、アプリケーション別に保存管理し、受信した１以上のバイナリの偽造・変造を防止するための保安関連モジュールである保安バイナリを併合することができる。併合された保安バイナリを介して、ユーザ端末機２００，４００にダウンロードされた最終バイナリは、暗号化された状態を維持し、リアルタイムで行われる悪性コードまたはウイルスの攻撃から保護される。
【００７０】
図７に開示された実施形態によれば、バイナリ併合装置１００は、アプリケーションの配布バイナリを生成する機能を遂行し、別途のバイナリ配布装置が、アプリケーションの配布バイナリを配布する機能を遂行する。
【００７１】
バイナリ併合装置１００は、第１ユーザ端末機２００から、第２アプリケーションに係わるバイナリアップロード信号を受信する（Ｓ４１０）。
【００７２】
バイナリ併合装置１００は、バイナリアップロード信号と対応し、第２アプリケーションの原バイナリである第１バイナリに追加機能を有する第２バイナリを併合した最終バイナリを生成する（Ｓ４２０）。
【００７３】
バイナリの配布過程について説明すれば、バイナリ併合装置１００は、バイナリ配布サーバ１０１に、第２アプリケーションの最終バイナリを伝送する（Ｓ４３０）。バイナリ配布サーバ１０１は、第２ユーザ端末機４００から、第２アプリケーションに対するダウンロード要請を受信し（Ｓ４４０）、前記ダウンロード要請と対応し、第２ユーザ端末機４００に、第１アプリケーションの最終バイナリを伝送する（Ｓ４５０）。
【００７４】
受信した最終バイナリを受信した第２ユーザ端末機４００は、第１アプリケーションに係わる最終バイナリを実行する（Ｓ４６０）。第２ユーザ端末機４００は、最終バイナリに含まれた第２バイナリを実行し、最終バイナリのアドレステーブルを、第１バイナリのためのアドレステーブルに交替し（Ｓ４７０）、第１バイナリを実行する（Ｓ４８０）。ここで、第１ユーザ端末機及び第２ユーザ端末機は、ユーザ端末機が互いに区別される装置であるということを示すための意味であり、図６の第１ユーザ端末機及び第２ユーザ端末機と同一端末機を指すものではない。
【００７５】
図８は、ユーザ端末機の構造を示す図面である。
【００７６】
図８を参照すれば、本発明の一実施形態によるユーザ端末機２００は、センシング部２１０、通信部２２０、出力部２３０及び制御部２４０、ユーザ入力部２５０、Ａ／Ｖ（audio/video）入力部２６０、メモリ２７０を含んでもよい。
【００７７】
以下、前述の構成要素について順に説明する。
【００７８】
センシング部２１０は、ユーザ端末機２００の位置情報を獲得する。センシング部２１０は、ユーザ端末機２００が移動する場合、移動速度情報及び移動時間情報などを獲得し、変更されるユーザ端末機２００の位置情報を決定することができる。
【００７９】
センシング部２１０は、地磁気センサ２１１、加速度センサ２１２、温度／湿度センサ２１３、赤外線センサ２１４、ジャイロスコープセンサ２１５、位置センサ（例えば、ＧＰＳ（global  position  system））２１６、気圧センサ２１７、近接センサ２１８及びＲＧＢセンサ（illuminance  sensor）２１９のうち少なくとも一つを含んでもよいが、それらに限定されるものではない。各センサの機能は、その名称から、当業者が直観的に推論することができるので、具体的な説明は省略する。
【００８０】
センシング部２１０は、ユーザ端末機２００の状態情報を獲得することができる。センシング部２１０は、ユーザ端末機２００の勾配、ユーザ端末機２００が位置した方向、及びユーザ端末機２００の動きのうち少なくとも一つに係わる情報を獲得することができる。
【００８１】
また、センシング部２１０は、ユーザ入力を感知することができる。センシング部２１０は、感知されるユーザ入力の時間長、及びユーザ入力の類型のうち少なくとも一つに係わる情報を獲得することができる。
【００８２】
通信部２２０は、ユーザ端末機２０１と異なるユーザ端末機２０２との通信、またはユーザ端末機２００とショッピングサービス提供装置１００との通信を可能にする１以上の構成要素を含んでもよい。例えば、通信部２２０は、近距離通信部２２１、移動通信部２２２、放送受信部２２３を含んでもよい。
【００８３】
近距離通信部（short-range  wireless  communication  unit）２２１は、ブルートゥース（Bluetooth）通信部、ＢＬＥ通信部、近距離無線通信部、ＷＬＡＮ（Ｗｉ−Ｆｉ）通信部、ジグビー（ZigBee）通信部、赤外線（ＩｒＤＡ）通信部、ＷＦＤ通信部、ＵＷＢ通信部、Ａｎｔ＋通信部などを含んでもよいが、それらに限定されるものではない。
【００８４】
移動通信部２２２は、移動通信網上において、基地局、外部の端末、サーバのうち少なくとも一つと無線信号を送受信する。ここで、該無線信号は、音声コール信号、画像通話コール信号、または文字／マルチメディアメッセージ送受信による多様な形態のデータを含んでもよい。
【００８５】
放送受信部２２３は、放送チャンネルを介して、外部から放送信号及び／または放送に係わる情報を受信する。該放送チャンネルは、衛星チャネル、地上波チャネルを含んでもよい。一具現例によって、ユーザ端末機２００が放送受信部２２３を含まないこともある。
【００８６】
出力部２３０には、ディスプレイ部２３１、音響出力部２３２、振動モータ２３３などが含まれてもよい。
【００８７】
ディスプレイ部２３１は、ユーザ端末機２００で処理される情報を出力する。ディスプレイ部２３１を介して、ユーザは、ショッピングサービス提供装置１００が提供する画面を見ることができる。
【００８８】
なお、ディスプレイ部２３１とタッチパッドとがレイヤ構造をなしてタッチスクリーンとして構成される場合、ディスプレイ部２３１は、出力装置以外に、入力装置としても使用される。ディスプレイ部２３１は、液晶ディスプレイ、薄膜トランジスタ液晶ディスプレイ、有機発光ダイオード、フレキシブルディスプレイ、三次元ディスプレイ（３Ｄ  display）、電気泳動ディスプレイのうち少なくとも一つを含んでもよい。そして、ユーザ端末機２００の具現形態により、ユーザ端末機２００は、ディスプレイ部２３１を２個以上含んでもよい。そのとき、２個以上のディスプレイ部２３１は、ヒンジ（hinge）を利用して、対向するようにも配置される。
【００８９】
音響出力部２３２は、通信部２２０から受信されたり、メモリ２７０に保存されたりするオーディオデータを出力する。また、音響出力部２３２は、ユーザ端末機２００で遂行される機能（例えば、ショッピングアプリケーションの実行時に出力される背景音、ショッピングアプリケーションで動作を遂行するたびに生じる効果音）に係わる音響信号を出力する。かような音響出力部２３２には、スピーカ、ブザーなどが含まれてもよい。
【００９０】
振動モータ２３３は、振動信号を出力することができる。例えば、振動モータ２３３は、オーディオデータまたはイメージデータ（例えば、ゲームアプリケーションで動作を遂行するたびに生じる効果音、ゲームアプリケーションで動作を遂行した結果、変更されるイメージ）の出力に対応する振動信号を出力することができる。また、振動モータ２３３は、タッチスクリーンにタッチが入力される場合、振動信号を出力することもできる。
【００９１】
制御部２４０は、一般的に、ユーザ端末機２００の全般的な動作を制御する。例えば、制御部２４０は、メモリ２７０に保存されたプログラムを実行することにより、センシング部２１０、通信部２２０、出力部２３０、ユーザ入力部２５０、Ａ／Ｖ入力部２６０、メモリ２７０などを全般的に制御することができる。
【００９２】
ユーザ入力部２５０は、ユーザが、ユーザ端末機２００を制御するためのデータを入力する手段を意味する。例えば、ユーザ入力部２５０には、キーパッド、ドームスイッチ、タッチパッド（接触式静電容量方式、圧力式抵抗膜方式、赤外線感知方式、表面超音波伝導方式、積分式張力測定方式、ピエゾ効果方式など）、ジョグホイール、ジョグスイッチなどがあるが、それらに限定されるものではない。
【００９３】
Ａ／Ｖ入力部２６０は、オーディオ信号またはビデオ信号入力のためのものであり、それには、カメラ２６１やマイクロフォン２６２などが含まれてもよい。カメラ２６１は、画像通話モードまたは撮影モードで、イメージセンサを介して、静止映像または動画などの画像フレームを得ることができる。イメージセンサを介してキャプチャされたイメージは、制御部２４０、または別途のイメージ処理部（図示せず）を介しても処理される。
【００９４】
カメラ２６１で処理された画像フレームは、メモリ２７０に保存されたり、通信部２２０を介して外部に伝送されたりする。カメラ２６１は、端末機の構成様態により、２個以上が具備されてもよい。
【００９５】
マイクロフォン２６２は、外部の音響信号を入力され、電気的な音声データに処理する。例えば、マイクロフォン２６２は、外部デバイスまたは話者から、音響信号を受信することができる。マイクロフォン２６２は、外部の音響信号を入力される過程で生じるノイズを除去するための多様なノイズ除去アルゴリズムを利用することができる。
【００９６】
メモリ２７０は、制御部２４０の処理及び制御のためのプログラムを保存することもでき、入出力されるデータ（例えば、複数のメニュー、複数のメニューそれぞれに対応する複数の第１階層サブメニュー、複数の第１階層サブメニューそれぞれに対応する複数の第２階層サブメニューなど）を保存することもできる。
【００９７】
メモリ２７０は、ショッピングアプリケーションに係わるメタデータをあらかじめ保存することができる。また、メモリ２７０は、獲得したユーザ入力の長さ及び類型についての情報を保存することができる。メモリ２７０は、ユーザ端末機２００の状態情報を保存することもできる。
【００９８】
メモリ２７０は、フラッシュメモリタイプ、ハードディスクタイプ、マルチメディアカードマイクロタイプ、カードタイプのメモリ（例えば、ＳＤメモリまたはＸＤメモリなど）、ＲＡＭ、ＳＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＰＲＯＭ、磁気メモリ、磁気ディスク、光ディスクのうち少なくとも１つのタイプの記録媒体を含んでもよい。また、ユーザ端末機２００は、インターネット上においてメモリ２７０の保存機能を遂行するウェブストレージまたはクラウドサーバを運用することもできる。
【００９９】
メモリ２７０に保存されたプログラムは、その機能によって、複数個のモジュールに分類することができるが、例えば、ＵＩ（user  interface）モジュール２７１、タッチスクリーンモジュール２７２、お知らせモジュール２７３などに分類される。
【０１００】
ＵＩモジュール２７１は、ゲームアプリケーション別に、ユーザ端末機２００と連動される特化されたＵＩ、ＧＵＩ（graphic  user  interface）などを提供することができる。タッチスクリーンモジュール２７２は、ユーザのタッチスクリーン上のタッチジェスチャを感知し、タッチジェスチャに係わる情報を制御部２４０に伝達することができる。本発明の一実施形態によるタッチスクリーンモジュール２７２は、タッチコードを認識して分析することができる。タッチスクリーンモジュール２７２は、コントローラを含む別途のハードウェアでも構成される。
【０１０１】
該タッチスクリーンのタッチまたは近接タッチを感知するために、該タッチスクリーンの内部または近傍に多様なセンサが具備される。タッチスクリーンのタッチを感知するためのセンサの一例として、触覚センサがある。該触覚センサは、人が感じるほど、またはそれ以上に特定物体の接触を感知するセンサをいう。該触覚センサは、接触面の粗度、接触物体の硬度、接触地点の温度などの多様な情報を感知することができる。また、タッチスクリーンのタッチを感知するためのセンサの一例として、近接センサがある。該近接センサは、所定検出面に接近する物体、あるいは近傍に存在する物体の有無を電子系の力、または赤外線を利用して、機械的接触なしに検出するセンサをいう。近接センサの例としては、透過型光電センサ、直接反射型光電センサ、ミラー反射型光電センサ、高周波発振型近接センサ、静電容量型近接センサ、磁気型近接センサ、赤外線近接センサなどがある。ユーザのタッチジェスチャには、タップ、タッチ＆ホールド、ダブルタップ、ドラッグ、パンニング、フリック、ドラッグアンドドロップ、スワイプなどがある。
【０１０２】
お知らせモジュール２７３は、ユーザ端末機２００のイベント発生を知らせるための信号を発することができる。お知らせモジュール２７３は、ディスプレイ部２３１を介して、ビデオ信号形態でお知らせ信号を出力することもでき、音響出力部２３２を介して、オーディオ信号形態でお知らせ信号を出力することもでき、振動モータ２３３を介して、振動信号形態でお知らせ信号を出力することもできる。
【０１０３】
図９は、バイナリの構造を説明するための図面であり、（ａ）は、バイナリを併合する前の第１バイナリの構造を示す図面であり、（ｂ）は、第１バイナリ及び第２バイナリを併合した最終バイナリの構造を示す図面である。
【０１０４】
図９（ａ）に図示されているように、本発明の実施形態によるアプリケーションのバイナリは、Ｅｌｆのフォーマットによっても具現される。Ｅｌｆフォーマットの場合、アプリケーションのバイナリは、Ｅｌｆ  header、Program  header  table、．text、．rodata、．data、Import  table、Export  table、injected  code、section  header  tableを含んでもよい。
【０１０５】
（１）Ｅｌｆ  header：オフセット（offset）、フィールド値（field）、サイズ（size）の３種領域に区分される。
【０１０６】
（２）Program  header  table：実行可能または共有可能な目的ファイル（オブジェクトファイル（object  file））のプログラムヘッダをいう。
【０１０７】
（３）．text：プログラムのテキストまたは実行可能な命令語を含む領域をいう。
【０１０８】
（４）。rodata：プロセスのイメージにおいて、書き込み不可能なセグメントに典型的に使用される読み取り専用データを含む領域をいう。
【０１０９】
（５）．data：プログラムメモリ領域に提供される初期化されたデータを含む領域をいう。
【０１１０】
（６）section  header  table：バイナリのセクション集合をリストとして含む領域をいう。
【０１１１】
Import  table：バイナリが使用している外部関数の位置及び名称を保存している領域をいう。
【０１１２】
Export  table：バイナリで使用することができるライブラリ関数の位置及び名称を保存している領域をいう。
【０１１３】
図１０は、バイナリのコード領域と、アドレステーブルとの連結関係を示す図面である。
【０１１４】
本発明の実施形態によるバイナリ併合装置は、併合されたバイナリの正常な動作のために、併合されたバイナリと対応するアドレステーブル９０２に交替していて、さらに原バイナリのアドレステーブル９０１に復元させる過程を遂行することができる。このとき、アドレステーブル９０２は、ライブラリに定義された領域のアドレス値を介して、関数の定義を呼び出すことができる。
【０１１５】
前述の本発明による実施形態は、コンピュータ上で多様な構成要素を介して実行されるコンピュータプログラムの形態に具現され、かようなコンピュータプログラムは、コンピュータで読み取り可能な媒体にも記録される。このとき、該媒体は、ハードディスク、フロッピィーディスク及び磁気テープのような磁気媒体；ＣＤ−ＲＯＭ（compact  disc  read  only  memory）及びＤＶＤ（digital  versatile  disc）のような光記録媒体；フロプティカルディスク（floptical  disk）のような磁気・光媒体（magneto-optical  medium）；及びＲＯＭ（read-only  memory）、ＲＡＭ（random  access  memory）、フラッシュメモリのような、プログラム命令語を保存して実行するように特別に構成されたハードウェア装置を含んでもよい。さらに、該媒体は、ネットワーク上で伝送可能な形態に具現される無形の媒体を含んでもよく、例えば、ソフトウェア形態またはアプリケーション形態に具現され、ネットワークを介して、伝送及び流通が可能な形態の媒体でもある。
【０１１６】
なお、前記コンピュータプログラムは、本発明のために特別に設計されて構成されたものでもあり、コンピュータソフトウェア分野の当業者に公知されて使用可能なものでもある。該コンピュータプログラムの例としては、コンパイラによって作われるような機械語コードだけではなく、インタープリタなどを使用して、コンピュータによって実行される高級言語コードも含まれる。
【０１１７】
本発明で説明する特定実行は、一実施形態であり、いかなる方法によっても、本発明の範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前記システムの他の機能的な側面の記載は省略される。また、図面に図示された構成要素間の線の連結または連結部材は、機能的な連結、及び／または物理的または回路的な連結を例示的に示したものであり、実際の装置では、代替体可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結としても示される。また、「必須な」、「重要に」のような具体的な言及がなければ、本発明の適用のために、必ずしも必要な構成要素ではないこともある。
【０１１８】
本発明の明細書（特に、特許請求の範囲）において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数のいずれにも該当する。また、本発明において、範囲を記載した場合、前記範囲に属する個別的な値を適用した発明を含み（それに反する記載がなければ）、発明の詳細な説明において、前記範囲を構成する各個別的な値を記載した通りである。最後に、本発明による方法を構成する段階について、明白に順序を記載したり、それに反したりする記載がなければ、前記段階は、適切な順序で行われる。必ずしも前記段階の記載順序によって、本発明が限定されるものではない。本発明において、全ての例または例示的な用語（例えば、など）の使用は、単に本発明について詳細に説明するためのものであり、特許請求の範囲によって限定されるものではない以上、前述の例または例示的な用語によって、本発明の範囲が限定されるものではない。また、当業者は、多様な修正、組み合わせ及び変更が付加された特許請求の範囲またはその均等物の範疇内で、設計条件及びファクタによっても構成されるということが分かるであろう。
【図１】
0006698707.tif 000002
【図２】
0006698707.tif 000003
【図３】
0006698707.tif 000004
【図４】
0006698707.tif 000005
【図５】
0006698707.tif 000006
【図６】
0006698707.tif 000007
【図７】
0006698707.tif 000008
【図８】
0006698707.tif 000009
【図９（ａ）】
0006698707.tif 000010
【図９（ｂ）】
0006698707.tif 000011
【図１０】
0006698707.tif 000012