説明

ソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラム

【課題】難読化技術の一つである、プログラム中の変数を演算装置によって線形変換して符号化を施す符号化方法において、ソフトウェアに含まれるバイト長の異なる複数の変数を同時に符号化できるようにする。
【解決手段】ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割し、分割された変数を含むソフトウェアを変換する。これにより、バイト長が長い変数を複数の変数に分割できるため、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェアに含まれる任意変数の符号化を行うソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラムに関する。
【背景技術】
【0002】
ソフトウェアには、価値のあるアルゴリズムおよびコンテンツの暗号鍵等、利用者に対して秘密にすべき情報が含まれる場合がある。一方では、ソフトウェアを解析するための技術(RE:Reverse Engineering)が数多く開発されている。このため、これらの技術によりソフトウェアが解析されると、不正者が秘密情報を入手するという脅威が考えられる。この脅威に対し、ソフトウェアの仕様を保ったまま、ソフトウェアの解析を困難にする難読化という技術がある。
【0003】
この一例として、プログラム中の変数を演算装置によって線形変換して符号化を施す符号化方法であって、符号化を施すn個(但し、nは正整数)の変数を任意に選択し、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する。そして、生成した行列およびベクトルを変換鍵として前記n個の変数を線形変換して同時にm個の整数に符号化する。これにより、元のプログラムで用いられている変数の個数、ならびに当該変数間の参照・代入関係を秘匿し、かつ、秘密鍵の候補数を多くして耐性の高いプログラムの難読化を行う技術が開示されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−079347号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の方式では、符号化の対象が同じバイト長の変数のみに限られるという制約がある。このため、例えば整数型(int型)変数と倍精度浮動小数型(doule型)変数を同時に符号化することは不可能であるといった問題があった。(ここで、double型変数は8バイト、int型は4バイトであるものとする。また、処理系のエンディアンは、リトルエンディアンとする。)
【0006】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ソフトウェアに含まれるバイト長の異なる複数の変数を同時に符号化するソフトウェアの難読化装置、ソフトウェアの難読化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【0008】
(1)本発明は、ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置であって、前記ソフトウェアに含まれる変数のうちバイト長が異なる複数の変数を同時に符号化することを特徴とするソフトウェアの難読化装置を提案している。
【0009】
この発明によれば、ソフトウェアに含まれる変数のうちバイト長が異なる複数の変数を同時に符号化する。任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。このことにより、セマンティクスが異なる複数のデータまとめて変換できるようになり、従来の技術よりも安全性が向上する。
【0010】
(2)本発明は、ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置であって、前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する分割手段(例えば、図1の分割部100に相当)と、該分割された変数を含むソフトウェアを変換する変換手段(例えば、図1の変換部200に相当)と、を備えたことを特徴とするソフトウェアの難読化装置を提案している。
【0011】
この発明によれば、分割手段は、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する。変換手段は、分割された変数を含むソフトウェアを変換する。したがって、分割手段により、バイト長が長い変数を複数の変数に分割できるため、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。なお、ここで、共用体とは、複数の変数が同一のメモリ領域を共有する構造を指し、共用体を用いることで、バイト長が大きな変数を複数の変数に分割して、既存方式で符号化できる.例えば、倍精度浮動小数点型変数(double)型変数は、2つの整数(int)型変数に分割できる。
【0012】
(3)本発明は、(2)のソフトウェアの難読化装置について、前記変換手段が、符号化の対象となる変数を選択する選択手段(例えば、図3の選択部210に相当)と、該選択した符号化変数からm個の符号化変数を決定する符号化変数決定手段(例えば、図3の符号化変数決定部220に相当)と、符号化ルールおよび復号化ルールを決定するルール決定手段(例えば、図3のルール決定部230に相当)と、ソフトウェア内の符号化変数を他の符号化変数に置き換える置き換え手段(例えば、図3の置き換え部240に相当)と、変換したソフトウェアを正しく実行できるように修正する修正手段(例えば、図3の修正部250に相当)と、を備えたことを特徴とするソフトウェアの難読化装置を提案している。
【0013】
この発明によれば、選択手段は、符号化の対象となる変数を選択し、符号化変数決定手段は、選択した符号化変数からm個の符号化変数を決定する。そして、ルール決定手段が、符号化ルールおよび復号化ルールを決定し、置き換え手段が、ソフトウェア内の符号化変数を他の符号化変数に置き換え、修正手段が変換したソフトウェアを正しく実行できるように修正する。したがって、ソフトウェアを変換することによって、ソフトウェアの難読化を実現することができる。
【0014】
(4)本発明は、(3)のソフトウェアの難読化装置について、前記置き換え手段が、代入が行われている対象変数を置換する第1の置換手段(例えば、図4の第1の置換部241に相当)と、参照が行われている対象変数を置換する第2の置換手段(例えば、図4の第2の置換部242に相当)と、を備えたことを特徴とするソフトウェアの難読化装置を提案している。
【0015】
この発明によれば、第1の置換手段は、代入が行われている対象変数を置換し、第2の置換手段は、参照が行われている対象変数を置換する。これにより、効果的に難読化を実行することができる。
【0016】
(5)本発明は、(4)のソフトウェアの難読化装置について、前記修正手段が、符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加する追加手段(例えば、図5の追加部251に相当)と、前記第1の置換手段で置換した代入命令を実行できる命令列に変換する変換手段(例えば、図5の変換部252に相当)と、を備えたことを特徴とするソフトウェアの難読化装置を提案している。
【0017】
この発明によれば、追加手段は、符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加し、変換手段は、第1の置換手段で置換した代入命令を実行できる命令列に変換する。したがって、この処理により、難読化を図りつつ、実行可能なソフトウェアとすることができる。
【0018】
(6)本発明は、ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法であって、前記ソフトウェアに含まれる変数のうちバイト長が異なる複数の変数を同時に符号化することを特徴とするソフトウェアの難読化方法を提案している。
【0019】
この発明によれば、ソフトウェアに含まれる変数のうちバイト長が異なる複数の変数を同時に符号化する。任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。このことにより、セマンティクスが異なる複数のデータまとめて変換できるようになり、従来の技術よりも安全性が向上する。
【0020】
(7)本発明は、ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法であって、前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する第1のステップ(例えば、図6のステップS101に相当)と、該分割された変数を含むソフトウェアを変換する第2のステップ(例えば、図6のステップS102に相当)と、を備えたことを特徴とするソフトウェアの難読化方法を提案している。
【0021】
この発明によれば、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割し、分割された変数を含むソフトウェアを変換する。したがって、バイト長が長い変数を複数の変数に分割できるため、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。なお、ここで、共用体とは、複数の変数が同一のメモリ領域を共有する構造を指し、共用体を用いることで、バイト長が大きな変数を複数の変数に分割して、既存方式で符号化できる.例えば、倍精度浮動小数点型変数(double)型変数は、2つの整数(int)型変数に分割できる。
【0022】
(8)本発明は、(7)のソフトウェアの難読化方法について、前記第2のステップが、符号化の対象となる変数を選択する変数選択ステップと、該選択した符号化変数からm個の符号化変数を決定する符号化変数決定ステップと、符号化ルールおよび復号化ルールを決定するルール決定ステップと、ソフトウェア内の符号化変数を他の符号化変数に置き換える置き換えステップと、変換したソフトウェアを正しく実行できるように修正する修正ステップと、を備えたことを特徴とするソフトウェアの難読化方法を提案している。
【0023】
この発明によれば、符号化の対象となる変数を選択し、選択した符号化変数からm個の符号化変数を決定して、符号化ルールおよび復号化ルールを決定する。そして、ソフトウェア内の符号化変数を他の符号化変数に置き換え、変換したソフトウェアを正しく実行できるように修正する。したがって、ソフトウェアを変換することによって、ソフトウェアの難読化を実現することができる。
【0024】
(9)本発明は、(8)のソフトウェアの難読化方法について、前記置き換えステップが、代入が行われている対象変数を置換するステップと、参照が行われている対象変数を置換するステップと、を備えたことを特徴とするソフトウェアの難読化方法を提案している。
【0025】
この発明によれば、代入が行われている対象変数を置換し、参照が行われている対象変数を置換する。これにより、効果的に難読化を実行することができる。
【0026】
(10)本発明は、(8)のソフトウェアの難読化方法について、前記修正ステップが、符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加するステップと、前記置換した代入命令を実行できる命令列に変換するステップと、を備えたことを特徴とするソフトウェアの難読化方法を提案している。
【0027】
この発明によれば、符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加し、置換した代入命令を実行できる命令列に変換する。したがって、この処理により、難読化を図りつつ、実行可能なソフトウェアとすることができる。
【0028】
(11)本発明は、ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法をコンピュータに実行させるためのプログラムであって、前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する第1のステップ(例えば、図6のステップS101に相当)と、該分割された変数を含むソフトウェアを変換する第2のステップ(例えば、図6のステップS102に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0029】
この発明によれば、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割し、分割された変数を含むソフトウェアを変換する。したがって、バイト長が長い変数を複数の変数に分割できるため、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。なお、ここで、共用体とは、複数の変数が同一のメモリ領域を共有する構造を指し、共用体を用いることで、バイト長が大きな変数を複数の変数に分割して、既存方式で符号化できる.例えば、倍精度浮動小数点型変数(double)型変数は、2つの整数(int)型変数に分割できる。
【発明の効果】
【0030】
本発明によれば、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。このことにより、セマンティクスが異なる複数のデータまとめて変換できるようになり、従来の技術よりも安全性が向上するという効果がある。
【図面の簡単な説明】
【0031】
【図1】本発明のソフトウェアの難読化装置の構成を示す図である。
【図2】共用体を説明するための図である。
【図3】本発明の変換部の詳細な構成を示す図である。
【図4】本発明の置き換え部の詳細な構成を示す図である。
【図5】本発明の修正部の詳細な構成を示す図である。
【図6】本発明のソフトウェアの難読化装置の処理フローである。
【図7】実施例に係る元のソフトウェアのソースコードを例示した図である。
【図8】実施例に係る変数変換されたソフトウェアのソースコードを例示した図である。
【図9】実施例に係る難読化後のソフトウェアのソースコードを例示した図である。
【発明を実施するための形態】
【0032】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0033】
<ソフトウェアの難読化装置の構成>
本実施形態に係るソフトウェアの難読化装置は、図1に示すように、分割部100と、変換部200とから構成されている。
【0034】
分割部100は、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する。変換部200は、分割された変数を含むソフトウェアを変換する。
【0035】
<共用体について>
分割部100で用いられる共用体について説明する。
共用体とは、複数の変数が同一のメモリ領域を共有する構造を指す。共用体を用いることで、バイト長が大きな変数を複数の変数に分割して、既存方式で符号化できる。例えば、倍精度浮動小数点型変数(double)型変数は、2つの整数(int)型変数に分割できる。図2に、共用体の例を示す。定義されたDATA型変数datは、そのメンバ変数dat.dをdouble型変数として利用できる。一方で、メンバ変数dat.i[0]をこのdouble型変数の下位4バイトを操作するためのint型変数として利用できる。また、dat.i[1]も同様に、上位4バイトを操作するためのint型変数として利用できる。
【0036】
<変換部の内部構成>
図3に示すように、変換部200は、さらに、選択部210と、符号化変数決定部220と、ルール決定部230と、置き換え部240と、修正部250とから構成されている。
【0037】
なお、以下では、対象ソフトウェアには、N個の変数、x、x、・・・、xが含まれているものとし、変数xに格納される値が実行結果として出力されているものと仮定して、一般性を失わないものとする。また、実行結果を格納する変数が複数存在する場合も、1つの変数に実行結果を格納するソフトウェアが複数存在するものとみなすことで、個々のソフトウェアについて同様に扱うことができる。
【0038】
選択部210は、符号化の対象とするn個の変数x、x、・・・、xを選択する。ここで、実行結果が格納される変数xは、符号化対象として選択する必要がある。また、個数nは、任意であり、安全性を高くする場合には、より大きな値を選択し、実行効率を高くする場合には、より小さな値を選択する。但し、以下の変数は、符号化対象から除外するものとする。1)利用者の入力が直接書き込まれる変数。2)アドレス演算子により当該変数のアドレスが取得されている変数。
【0039】
符号化変数決定部220は、m個の符号化変数y、y、・・・、yを決定する。ここで、個数mは、符号化対象変数の個数nよりも大きく設定する。なお、安全性を高くする場合には、より大きな値を選択し、実行効率を高くする場合には、より小さな値を選択する。
【0040】
ルール決定部230は、m行n列のプール行列Aとm次元の整数型ベクトルbを任意に決定する。但し、行列Aは、ランクがnとなるように選択する。行列Aと整数型ベクトルbとにより、以下の関係式数1を構成する。
【0041】
【数1】

【0042】
上式の各行を符号化ルールとすると、数2のようになる。
【0043】
【数2】

【0044】
次に、符号化ルールを未知変数x、x、・・・、xに対する連立方程式とみなし、解くことにより、数3を得る。
【0045】
【数3】

【0046】
この各式を復号ルールとする。なお、上記の連立方程式を解く過程では、n個の符号化ルールが使われる。使われなかった符号化ルールに含まれる変数x、x、・・・、xを復号ルールを用いて符号化変数に置き換えることで、m−n個の非自明な関係式が得られる。ここで、符号化変数y、y、・・・、yは、常にこれらの関係式をみたす。
【0047】
置き換え部240は、プログラム内の符号化対象変数x、x、・・・、xを、符号化変数y、y、・・・、yで置き換える、まず、代入が行われている変数を符号化変数に置き換え、次に、参照が行われている変数を符号化変数に置き換える。
【0048】
具体的には、図4に示す第1の置換部241が代入命令x←fを以下、数4に示す命令に置き換える。
【0049】
【数4】

【0050】
これにより、右辺の関数e、e、・・・、eにおいては、代入が行われる対象変数xが、式fに置換されている。
【0051】
また、図4に示す第2の置換部242は、上記の処理で得られた命令列において、参照されている対象変数x、x、・・・、xを、それぞれ、復号ルールd、d、・・・、dで置き換え、式を整理する。
【0052】
修正部250は、変換したソフトウェアを正しく実行できるようにするため、修正する。具体的には、図5に示す追加部251が符号化変数y、y、・・・、yおよびこれらの変数の値を退避するための一時変数t、t、・・・、tの定義を追加する。
【0053】
また、図5に示す変換部252は、第1の置換部241で変換した命令を逐次実行できる命令列に変換する。つまり、数5に示す命令列を数6に示す命令列に変更する。このように、更新前の符号化変数の値を一時変数に退避しておくことで、更新後の符号化変数の値を順次計算できる。ここで、関数e´、e´、・・・、e´は、それぞれ、関数e、e、・・・、eにおいて、符号化変数y、y、・・・、yを一時変数t、t、・・・、tで置き換えたものである。
【0054】
【数5】

【0055】
【数6】

【0056】
<ソフトウェアの難読化装置の処理>
図6を用いて、本実施形態に係るソフトウェアの難読化装置の処理について説明する。
【0057】
まず、分割部100が、ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する(ステップS101)。そして、変換部200が分割された変数を含むソフトウェアを変換する(ステップS102)。
【0058】
なお、変換部200においては、上述のように、選択処理、符号化変数決定処理、ルール決定処理、置き換え処理、修正処理が行われる。
【0059】
したがって、本実施形態によれば、任意のデータ長の変数、すなわち、すべての型の変数を符号化することが可能となる。このことにより、セマンティクスが異なる複数のデータまとめて変換できるようになり、従来の技術よりも安全性が向上する。
【0060】
<実施例>
図7は、難読化前のソースコードであり、本実施例では、区分求積により、関数fの区間[a;b]における定積分を求める関数の変換例を示す。
【0061】
ここで、変数の符号化に用いたルールは、数7に示すとおりである。但し、sumは、sumの上位4バイトを、sumは下位4バイトを意味する。図8に変数変換を導入したソースコードを、図9に難読化後のソースコードを示す。
【0062】
【数7】

【0063】
なお、ソフトウェアの難読化装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをソフトウェアの難読化装置に読み込ませ、実行することによって本発明のソフトウェアの難読化装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0064】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0065】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0066】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0067】
100;分割部
200;変換部
210;選択部
220;符号化変数決定部
230;ルール決定部
240;置き換え部
241;第1の置換部
242;第2の置換部
250;修正部
251;追加部
252;変換部

【特許請求の範囲】
【請求項1】
ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置であって、
前記ソフトウェアに含まれる変数のうちバイト長が異なる複数の変数を同時に符号化することを特徴とするソフトウェアの難読化装置。
【請求項2】
ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置であって、
前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する分割手段と、
該分割された変数を含むソフトウェアを変換する変換手段と、
を備えたことを特徴とするソフトウェアの難読化装置。
【請求項3】
前記変換手段が、
符号化の対象となる変数を選択する選択手段と、
該選択した符号化変数からm個の符号化変数を決定する符号化変数決定手段と、
符号化ルールおよび復号化ルールを決定するルール決定手段と、
ソフトウェア内の符号化変数を他の符号化変数に置き換える置き換え手段と、
変換したソフトウェアを正しく実行できるように修正する修正手段と、
を備えたことを特徴とする請求項3に記載のソフトウェアの難読化装置。
【請求項4】
前記置き換え手段が、
代入が行われている対象変数を置換する第1の置換手段と、
参照が行われている対象変数を置換する第2の置換手段と、
を備えたことを特徴とする請求項4に記載のソフトウェアの難読化装置。
【請求項5】
前記修正手段が、
符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加する追加手段と、
前記第1の置換手段で置換した代入命令を実行できる命令列に変換する変換手段と、
を備えたことを特徴とする請求項4に記載のソフトウェアの難読化装置。
【請求項6】
ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法であって、
前記ソフトウェアに含まれる変数のうちバイト長が異なる複数の変数を同時に符号化することを特徴とするソフトウェアの難読化方法。
【請求項7】
ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法であって、
前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する第1のステップと、
該分割された変数を含むソフトウェアを変換する第2のステップと、
を備えたことを特徴とするソフトウェアの難読化方法。
【請求項8】
前記第2のステップが、
符号化の対象となる変数を選択する変数選択ステップと、
該選択した符号化変数からm個の符号化変数を決定する符号化変数決定ステップと、
符号化ルールおよび復号化ルールを決定するルール決定ステップと、
ソフトウェア内の符号化変数を他の符号化変数に置き換える置き換えステップと、
変換したソフトウェアを正しく実行できるように修正する修正ステップと、
を備えたことを特徴とする請求項7に記載のソフトウェアの難読化方法。
【請求項9】
前記置き換えステップが、
代入が行われている対象変数を置換するステップと、
参照が行われている対象変数を置換するステップと、
を備えたことを特徴とする請求項8に記載のソフトウェアの難読化方法。
【請求項10】
前記修正ステップが、
符号化変数およびこれらの変数の値を退避するための一次変数の定義を追加するステップと、
前記置換した代入命令を実行できる命令列に変換するステップと、
を備えたことを特徴とする請求項8に記載のソフトウェアの難読化方法。
【請求項11】
ソフトウェアに含まれるデータを符号化し、ソフトウェアの解析を困難にするソフトウェアの難読化装置におけるソフトウェアの難読化方法をコンピュータに実行させるためのプログラムであって、
前記ソフトウェアに含まれる変数のうちバイト長が長い変数を共用体を用いて複数の変数に分割する第1のステップと、
該分割された変数を含むソフトウェアを変換する第2のステップと、
をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−209801(P2011−209801A)
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願番号】特願2010−74319(P2010−74319)
【出願日】平成22年3月29日(2010.3.29)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】