(57)【要約】      （修正有）【課題】メモリ上で実行されるプログラムの変数値が変造されることを探知するメモリハッキング探知方法およびシステムを提供する。【解決手段】変数属性情報を含む保護ライブラリを利用してプログラムに含まれた変数に属性を付与し４２０、第１属性が付与された第１変数のタイプおよび演算子を保護ライブラリを利用して再定義し、第１変数の値が変更された場合、再定義された演算子以外の演算子によって第１変数の値が変更されたかまたは第１変数の値が再定義されたタイプの範囲を脱するかに基づいて第１変数に対するメモリハッキングを探知する４３０。また、第２属性が付与された第２変数の値の変化を周期的にモニタリングし、第２変数の値の変化が第２属性によって設定された変化制限を脱するかに基づいて第２変数に対するメモリハッキングを探知する４４０。【選択図】図４
2017073132.tif 000002
【特許請求の範囲】
【請求項１】
メモリ上で実行されるプログラムの変数値が変造されることを探知するメモリハッキング探知方法であって、
変数属性情報を含む保護ライブラリを利用して前記プログラムに含まれた変数に属性を付与するステップ、
第１属性が付与された第１変数のタイプおよび演算子を前記保護ライブラリを利用して再定義し、前記第１変数の値が変更された場合、前記再定義された演算子以外の演算子によって前記第１変数の値が変更されたかまたは前記第１変数の値が前記再定義されたタイプの範囲を脱するかに基づいて前記第１変数に対するメモリハッキングを探知するステップ、および
第２属性が付与された第２変数の値の変化を周期的にモニタリングし、前記第２変数の値の変化が前記第２属性によって設定された変化制限を脱するかに基づいて前記第２変数に対するメモリハッキングを探知するステップ
を含むことを特徴とする、メモリハッキング探知方法。
【請求項２】
前記第２属性は、値が変更されない変更不可（ｕｎｃｈａｎｇｅａｂｌｅ）属性を含み、
前記第２変数に対するメモリハッキングを探知するステップは、
前記変更不可属性が付与された前記第２変数の値を読み取り専用属性のデータファイルを利用して管理し、前記第２変数の値が前記読み取り専用属性のデータファイルに格納された値とは異なる場合、前記第２変数に対するメモリハッキングを探知することを特徴とする、請求項１に記載のメモリハッキング探知方法。
【請求項３】
前記第２属性は、値が増加だけする増加（ｉｎｃｒｅａｓｅ）属性または値が減少だけする減少（ｄｅｃｒｅａｓｅ）属性を含み、
前記第２変数に対するメモリハッキングを探知するステップは、
周期的にモニタリングされた前記増加属性が付与された前記第２変数の値が以前の値に比べて増加していないか、周期的にモニタリングされた前記減少属性が付与された前記第２変数の値が以前の値に比べて減少していない場合、前記第２変数に対するメモリハッキングを探知することを特徴とする、請求項１に記載のメモリハッキング探知方法。
【請求項４】
前記保護ライブラリを利用して前記プログラムに含まれた変数に識別子パラメータを付与するステップ、および
前記メモリハッキングが探知された場合、前記メモリハッキングの探知の可否に関する情報および前記メモリハッキングに対応する変数の識別子パラメータが含まれたメッセージを提供するステップ
をさらに含むことを特徴とする、請求項１に記載のメモリハッキング探知方法。
【請求項５】
前記メモリハッキングが探知された場合、前記メモリハッキングの探知の可否に関する情報および前記メモリハッキングに対応する変数の属性に関する情報が含まれたメッセージを提供するステップ
をさらに含むことを特徴とする、請求項１に記載のメモリハッキング探知方法。
【請求項６】
前記プログラムの１つの変数に対して変数の値を格納するための複数の格納位置を割り当て、前記１つの変数の値が変更された場合、前記複数の格納位置のうち順に選択された格納位置に前記変更された変数の値を格納し、前記変更された変数の値が格納された前記複数の格納位置それぞれに対する指示情報を管理するステップ
をさらに含むことを特徴とする、請求項１に記載のメモリハッキング探知方法。
【請求項７】
前記指示情報に対する操作をモニタリングして前記メモリハッキングの可否を探知するステップ
をさらに含むことを特徴とする、請求項６に記載のメモリハッキング探知方法。
【請求項８】
前記プログラムの変数の値に対するフィッシング（ｆｉｓｈｉｎｇ）値を格納するためのフィッシング格納位置を割り当て、前記変数の値が変更された場合、前記フィッシング格納位置に格納されたフィッシング値を予め設定された値に変更するステップ、および
前記フィッシング格納位置に格納された予め設定された値の変造の可否に基づいて前記メモリハッキングを探知するステップ
をさらに含むことを特徴とする、請求項１に記載のメモリハッキング探知方法。
【請求項９】
前記プログラムの変数の値が変更された場合、前記変更された変数の値を複数の格納位置に重複格納するステップ、および
前記複数の格納位置に重複格納された値を比べて前記変更された変数の値に対する変造を探知するステップ
をさらに含むことを特徴とする、請求項１に記載のメモリハッキング探知方法。
【請求項１０】
前記保護ライブラリは、前記プログラムのインストールのためのファイルの配布過程で前記ファイルに追加されることを特徴とする、請求項１に記載のメモリハッキング探知方法。
【請求項１１】
請求項１〜１０のいずれか一項に記載の方法を実行するためのプログラムが記録されていることを特徴とする、コンピュータで読み取り可能な記録媒体。
【請求項１２】
メモリ上で実行されるプログラムの変数値が変造されることを探知するメモリハッキング探知システムであって、
コンピュータで読み取り可能な命令を実行するように実現された少なくとも１つのプロセッサ
を含み、
前記少なくとも１つのプロセッサは、
変数属性情報を含む保護ライブラリを利用して前記プログラムに含まれた変数に属性を付与する属性付与部、
第１属性が付与された第１変数のタイプおよび演算子を前記保護ライブラリを利用して再定義し、前記第１変数の値が変更された場合、前記再定義された演算子以外の演算子によって前記第１変数の値が変更されたかまたは前記第１変数の値が前記再定義されたタイプの範囲を脱するかに基づいて前記第１変数に対するメモリハッキングを探知する第１メモリハッキング探知部、および
第２属性が付与された第２変数の値の変化を周期的にモニタリングし、前記第２変数の値の変化が前記第２属性によって設定された変化制限を脱するかに基づいて前記第２変数に対するメモリハッキングを探知する第２メモリハッキング探知部
を備えることを特徴とする、メモリハッキング探知システム。
【請求項１３】
前記第２属性は、値が変更されない変更不可属性を含み、
前記第２メモリハッキング探知部は、
前記変更不可属性が付与された前記第２変数の値を読み取り専用属性のデータファイルを利用して管理し、前記第２変数の値が前記読み取り専用属性のデータファイルに格納された値とは異なる場合、前記第２変数に対するメモリハッキングを探知することを特徴とする、請求項１２に記載のメモリハッキング探知システム。
【請求項１４】
前記第２属性は、値が増加だけする増加属性または値が減少だけする減少属性を含み、
前記第２メモリハッキング探知部は、
周期的にモニタリングされた前記増加属性が付与された前記第２変数の値が以前の値に比べて増加していないか、周期的にモニタリングされた前記減少属性が付与された前記第２変数の値が以前の値に比べて減少していない場合、前記第２変数に対するメモリハッキングを探知することを特徴とする、請求項１２に記載のメモリハッキング探知システム。
【請求項１５】
前記少なくとも１つのプロセッサは、
前記保護ライブラリを利用して前記プログラムに含まれた変数に識別子パラメータを付与する識別子パラメータ付与部、および
前記メモリハッキングが探知された場合、前記メモリハッキングの探知の可否に関する情報および前記メモリハッキングに対応する変数の識別子パラメータが含まれたメッセージを提供するメッセージ提供部
をさらに備えることを特徴とする、請求項１２に記載のメモリハッキング探知システム。
【請求項１６】
前記少なくとも１つのプロセッサは、
前記メモリハッキングが探知された場合、前記メモリハッキングの探知の可否に関する情報および前記メモリハッキングに対応する変数の属性に関する情報が含まれたメッセージを提供するメッセージ提供部
をさらに備えることを特徴とする、請求項１２に記載のメモリハッキング探知システム。
【請求項１７】
前記少なくとも１つのプロセッサは、
前記プログラムの１つの変数に対して変数の値を格納するための複数の格納位置を割り当て、前記１つの変数の値が変更された場合、前記複数の格納位置のうち順に選択された格納位置に前記変更された変数の値を格納し、前記変更された変数の値が格納された前記複数の格納位置それぞれに対する指示情報を管理する変数値管理部
をさらに備えることを特徴とする、請求項１２に記載のメモリハッキング探知システム。
【請求項１８】
前記少なくとも１つのプロセッサは、
前記指示情報に対する操作の可否をモニタリングして前記メモリハッキングを探知する第３メモリハッキング探知部
をさらに備えることを特徴とする、請求項１７に記載のメモリハッキング探知システム。
【請求項１９】
前記少なくとも１つのプロセッサは、
前記プログラムの変数の値に対するフィッシング（ｆｉｓｈｉｎｇ）値を格納するためのフィッシング格納位置を割り当て、前記変数の値が変更された場合、前記フィッシング格納位置に格納されたフィッシング値を予め設定された値に変更するフィッシング値管理部、および
前記フィッシング格納位置に格納された予め設定された値の変造の可否に基づいて前記メモリハッキングを探知する第４メモリハッキング探知部
をさらに備えることを特徴とする、請求項１２に記載のメモリハッキング探知システム。
【請求項２０】
前記プログラムの変数の値が変更された場合、前記変更された変数の値を複数の格納位置に重複格納する変数値管理部、および
前記複数の格納位置に重複格納された値を比べて前記変更された変数の値に対する変造を探知する第５メモリハッキング探知部
をさらに備えることを特徴とする、請求項１２に記載のメモリハッキング探知システム。
【発明の詳細な説明】
【技術分野】
【０００１】
下記の説明は、メモリハッキング探知方法およびシステムに関する。
【背景技術】
【０００２】
メモリハッキング（Ｍｅｍｏｒｙ  Ｈａｃｋｉｎｇ）とは、メモリに格納されているデータを偽造または変造する行為を意味する。例えば、電子機器にインストールされたアプリケーションに関し、ハッカーは、実行されたアプリケーション上で特定の操作によって変更された変数値をメモリから検索することによって所望する変数値を得たり偽造・変造したりする。
【０００３】
このようなメモリハッキングを防ぐための方法は、大きく２つに分けられる。
【０００４】
１つ目の方法は、変数の値を暗号化してメモリに格納するという方法である。例えば、１つ目の方法では、スカラ値（４バイト値）をストリング値（３２バイト値）に変換してメモリに格納し、使用するときに復号化するという単純な暗号化方法が利用されたりする。しかし、このような方法は、データの暗号化および復号化のための追加費用（ｃｏｓｔ）が発生するという問題に加え、最新のチートツールでは単純な暗号化アルゴリズムに対して暗号化された値を検索する機能を提供するなど、ハッキング攻撃に弱いという問題がある。
【０００５】
２つ目の方法は、メモリに格納される値を多様な位置に分けて格納するという方法である。例えば、韓国登録特許第１０−０９５５７２５号（メモリハッキング遮断方法およびシステム）は、プログラム変数が使用されるたびにプログラム変数が格納されるメモリアドレスをランダムに選択し、選択されたアドレスに格納する技術を開示している。しかし、このような方法も、多様な位置に格納された変数に対するポインタを固定させる攻撃技法により、変数の検索が可能になるという問題がある。
【０００６】
このように、従来技術では、メモリハッキングに対応するために検索を遮断するための多様な方式が利用されてきた。しかし、上述したように、変数の検索がより困難にはなったが、最終的には検索が可能になるということが分かる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】ＰＣＴ／ＫＲ／２０１４／０１０１６７
【特許文献２】ＵＳ２０１４／００１９５４０Ａ１
【特許文献３】ＵＳ２０１３／０３３２５４３Ａ１
【特許文献４】ＵＳ２０１３／０２６０８９３
【発明の概要】
【発明が解決しようとする課題】
【０００８】
段階別にメモリハッキングを探知することによってハッカー（またはチートユーザ）の水準とその行為を正確に探知することができる、メモリハッキング探知方法およびシステムを提供する。
【０００９】
メモリ上で実行されるプログラムの変数に対してそれぞれ属性を付与し、付与された属性に応じて互いに異なる方式でメモリハッキングを探知することができる方法およびシステムを提供する。
【００１０】
メモリ上で実行されるプログラムの変数に対してそれぞれ名前（識別子パラメータ）を付与し、メモリハッキングの探知の可否に関する情報だけではなく、探知されたメモリハッキングに対応する変数の名前をさらに提供することにより、どのような変数に変造が試されたかを把握することができる方法およびシステムを提供する。
【００１１】
開発過程ではプログラムの変数が一般の変数と同じように動作し、プログラムの配布および実際のメモリ上での実行時に保護ライブラリを利用しながら変数に対して属性の付与、タイプおよび演算子の再定義、または名前付与などの保護機能を実行することにより、プログラムの開発およびデバッギングなどの過程に追加費用を発生させずにメモリハッキングを探知することができる方法およびシステムを提供する。
【課題を解決するための手段】
【００１２】
メモリ上で実行されるプログラムの変数値が変造されることを探知するメモリハッキング探知方法であって、変数属性情報を含む保護ライブラリを利用して前記プログラムに含まれた変数に属性を付与するステップ、第１属性が付与された第１変数のタイプおよび演算子を前記保護ライブラリを利用して再定義し、前記第１変数の値が変更された場合、前記再定義された演算子以外の演算子によって前記第１変数の値が変更されたかまたは前記第１変数の値が前記再定義されたタイプの範囲を脱するかに基づいて前記第１変数に対するメモリハッキングを探知するステップ、および第２属性が付与された第２変数の値の変化を周期的にモニタリングし、前記第２変数の値の変化が前記第２属性によって設定された変化制限を脱するかに基づいて前記第２変数に対するメモリハッキングを探知するステップを含むことを特徴とする、メモリハッキング探知方法を提供する。
【００１３】
メモリ上で実行されるプログラムの変数値が変造されることを探知するメモリハッキング探知システムであって、コンピュータで読み取り可能な命令を実行するように実現された少なくとも１つのプロセッサを含み、前記少なくとも１つのプロセッサは、変数属性情報を含む保護ライブラリを利用して前記プログラムに含まれた変数に属性を付与する属性付与部、第１属性が付与された第１変数のタイプおよび演算子を前記保護ライブラリを利用して再定義し、前記第１変数の値が変更された場合、前記再定義された演算子以外の演算子によって前記第１変数の値が変更されたかまたは前記第１変数の値が前記再定義されたタイプの範囲を脱するかに基づいて前記第１変数に対するメモリハッキングを探知する第１メモリハッキング探知部、および第２属性が付与された第２変数の値の変化を周期的にモニタリングし、前記第２変数の値の変化が前記第２属性によって設定された変化制限を脱するかに基づいて前記第２変数に対するメモリハッキングを探知する第２メモリハッキング探知部を備えることを特徴とする、メモリハッキング探知システムを提供する。
【発明の効果】
【００１４】
段階別にメモリハッキングを探知することによってハッカー（またはチートユーザ）の水準とその行為を正確に探知することができる。
【００１５】
メモリ上で実行されるプログラムの変数に対してそれぞれ属性を付与し、付与された属性に応じて互いに異なる方式でメモリハッキングを探知することができる。
【００１６】
メモリ上で実行されるプログラムの変数に対してそれぞれ名前（識別子パラメータ）を付与し、メモリハッキングの探知の可否に関する情報だけではなく、探知されたメモリハッキングに対応する変数の名前をさらに提供することにより、どのような変数に変造が試されたかを把握することができる。
【００１７】
開発過程ではプログラムの変数が一般の変数と同じように動作し、プログラムの配布および実際のメモリ上での実行時に保護ライブラリを利用しながら変数に対して属性の付与、タイプおよび演算子の再定義、または名前付与などの保護機能を実行することにより、プログラムの開発およびデバッギングなどの過程に追加費用を発生させずにメモリハッキングを探知することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【図２】本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。
【図３】本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示した図である。
【図４】本発明の一実施形態における、電子機器が実行することのできるメモリハッキング探知方法の例を示したフローチャートである。
【図５】本発明の一実施形態における、第２属性が付与された変数のモニタリング過程を説明するための図である。
【図６】本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の他の例を示した図である。
【図７】本発明の一実施形態における、電子機器が実行することのできるメモリハッキング探知方法の他の例を示したフローチャートである。
【図８】本発明の一実施形態における、変数の値が複数の格納位置に格納される例を示した図である。
【発明を実施するための形態】
【００１９】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【００２０】
図１は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図１のネットワーク環境は、複数の電子機器１１０、１２０、１３０、１４０、複数のサーバ１５０、１６０、およびネットワーク１７０を含む例を示している。このような図１は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が図１のように限定されることはない。
【００２１】
複数の電子機器１１０、１２０、１３０、１４０は、コンピュータ装置によって実現される固定型端末や移動型端末であってもよい。複数の電子機器１１０、１２０、１３０、１４０の例としては、スマートフォン（ｓｍａｒｔ  ｐｈｏｎｅ）、携帯電話、ナビゲーション、コンピュータ、ノート型パンコン、デジタル放送用端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、ＰＭＰ（Ｐｏｒｔａｂｌｅ  Ｍｕｌｔｉｍｅｄｉａ  Ｐｌａｙｅｒ）、タブレットＰＣなどがある。一例として、電子機器１（１１０）は、無線または有線通信方式を利用し、ネットワーク１７０を介して他の電子機器１２０、１３０、１４０および／またはサーバ１５０、１６０と通信してもよい。
【００２２】
通信方式が制限されることはなく、ネットワーク１７０が含むことのできる通信網（一例として、移動通信網、有線インターネット、無線インターネット、放送網）を活用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク１７０は、ＰＡＮ（ｐｅｒｓｏｎａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＣＡＮ（ｃａｍｐｕｓ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＭＡＮ（ｍｅｔｒｏｐｏｌｉｔａｎ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＢＢＮ（ｂｒｏａｄｂａｎｄ  ｎｅｔｗｏｒｋ）、インターネットなどのネットワークのうちの１つ以上の任意のネットワークを含んでもよい。さらに、ネットワーク１７０は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター−バスネットワーク、ツリーまたは階層的（ｈｉｅｒａｒｃｈｉｃａｌ）ネットワークなどを含むネットワークトポロジのうちの任意の１つ以上を含んでもよいが、これに制限されることはない。
【００２３】
サーバ１５０、１６０それぞれは、複数の電子機器１１０、１２０、１３０、１４０とネットワーク１７０を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供するコンピュータ装置または複数のコンピュータ装置によって実現されてもよい。
【００２４】
一例として、サーバ１６０は、ネットワーク１７０を介して接続した電子機器１（１１０）にアプリケーションのインストールのためのファイルを提供してもよい。この場合、電子機器１（１１０）は、サーバ１６０から提供されたファイルを利用してアプリケーションをインストールしてもよい。また、電子機器１（１１０）が含むオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：ＯＳ）および少なくとも１つのプログラム（一例として、ブラウザや前記インストールされたアプリケーション）の制御にしたがってサーバ１５０に接続し、サーバ１５０が提供するサービスやコンテンツの提供を受けてもよい。例えば、電子機器１（１１０）がアプリケーションの制御にしたがってネットワーク１７０を介してサービスリクエストメッセージをサーバ１５０に送信すると、サーバ１５０はサービスリクエストメッセージに対応するコードを電子機器１（１１０）に送信してもよく、電子機器１（１１０）はアプリケーションの制御にしたがってコードに基づいた画面を構成して表示することにより、ユーザにコンテンツを提供してもよい。他の例として、サーバ１５０は、メッセージングサービスのための通信セッションを設定し、設定された通信セッションを通じて複数の電子機器１１０、１２０、１３０、１４０間のメッセージ送受信をルーティングしてもよい。
【００２５】
図２は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。図２では、１つの電子機器に対する例として電子機器１（１１０）を、１つのサーバに対する例としてサーバ１５０の内部構成を説明する。他の電子機器１２０、１３０、１４０やサーバ１６０も、同一または類似の内部構成を備えてもよい。
【００２６】
電子機器１（１１０）とサーバ１５０は、メモリ２１１、２２１、プロセッサ２１２、２２２、通信モジュール２１３、２２３、および入力／出力インタフェース２１４、２２４を含んでもよい。メモリ２１１、２２１は、コンピュータで読み取り可能な記録媒体であって、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、およびディスクドライブのような永久大容量記憶装置（ｐｅｒｍａｎｅｎｔ  ｍａｓｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）を含んでよい。また、メモリ２１１、２２１には、オペレーティングシステムと、少なくとも１つのプログラムコード（一例として、電気機器１（１１０）にインストールされ駆動するブラウザや上述したアプリケーションなどのためのコード）が格納されてよい。このようなソフトウェア構成要素は、ドライブメカニズム（ｄｒｉｖｅ  ｍｅｃｈａｎｉｓｍ）を利用してメモリ２１１、２２１とは別のコンピュータで読み取り可能な記録媒体からロードされてもよい。このような別のコンピュータで読み取り可能な記録媒体は、フロッピーディスク、ディスク、テープ、ＤＶＤ／ＣＤ−ＲＯＭ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール２１３、２２３を利用してメモリ２１１、２２１にロードされてもよい。例えば、少なくとも１つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム（一例として、上述したサーバ１６０）がネットワーク１７０を介して提供するファイルによってインストールされるプログラム（一例として、上述したアプリケーション）に基づいてメモリ２１１、２２１にロードされてもよい。
【００２７】
プロセッサ２１２、２２２は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ２１１、２２１または通信モジュール２１３、２２３によって、プロセッサ２１２、２２２に提供されてよい。例えば、プロセッサ２１２、２２２は、メモリ２１１、２２１のような記録装置に格納されたプログラムコードにしたがって受信される命令を実行するように構成されてもよい。
【００２８】
通信モジュール２１３、２２３は、ネットワーク１７０を介して電子機器１（１１０）とサーバ１５０とが互いに通信するための機能を提供してもよいし、他の電子機器（一例として、電子機器２（１２０））または他のサーバ（一例として、サーバ１６０）と通信するための機能を提供してもよい。一例として、電子機器１（１１０）のプロセッサ２１２がメモリ２１１のような記録装置に格納されたプログラムコードにしたがって生成したリクエスト（一例として、コンテンツに対するストリーミングサービスリクエスト）が、通信モジュール２１３の制御にしたがってネットワーク１７０を介してサーバ１５０に伝達されてもよい。これとは逆に、サーバ１５０のプロセッサ２２２の制御にしたがって提供される制御信号や命令、コンテンツ、ファイルなどが、通信モジュール２２３とネットワーク１７０を経て電子機器１（１１０）の通信モジュール２１３を通じて電子機器１（１１０）に受信されてもよい。例えば、通信モジュール２１３を通じて受信されたサーバ１５０の制御信号や命令などはプロセッサ２１２やメモリ２１１に伝達されてもよく、コンテンツやファイルなどは電子機器１（１１０）がさらに含むことのできる格納媒体に格納されてもよい。
【００２９】
入力／出力インタフェース２１４、２２４は、入力／出力装置２１５とのインタフェースのための手段であってもよい。例えば、入力装置は、キーボードまたはマウスなどの装置を、また出力装置はアプリケーションの通信セッションを表示するためのディスプレイのような装置を含んでもよい。他の例として、入力／出力インタフェース２１４は、タッチスクリーンのように入力と出力のための機能が１つに統合された装置とのインタフェースのための手段であってもよい。より具体的な例として、電子機器１（１１０）のプロセッサ２１２は、メモリ２１１にロードされたコンピュータプログラムの命令を処理するにあたり、サーバ１５０や電子機器２（１２０）が提供するデータを利用して構成されるサービス画面やコンテンツが、入力／出力インタフェース２１４を通じてディスプレイに表示されてもよい。
【００３０】
また、他の実施形態において、電子機器１（１１０）およびサーバ１５０は、図２の構成要素よりもさらに多くの構成要素を含んでもよい。しかし、大部分の従来技術の構成要素を明確に図に示す必要はない。例えば、電子機器１（１１０）は、上述した入力／出力装置２１５のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ（ｔｒａｎｓｃｅｉｖｅｒ）、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）モジュール、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。
【００３１】
図３は、本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示した図であり、図４は、本発明の一実施形態における、電子機器が実行することのできるメモリハッキング探知方法の例を示したフローチャートである。電子機器１（１１０）はメモリハッキング探知システムを構成してもよく、このために、図３に示すように電子機器１（１１０）のプロセッサ２１２は、属性付与部３１０、第１メモリハッキング探知部３２０、および第２メモリハッキング探知部３３０を備えてもよい。このようなプロセッサ２１２およびプロセッサ２１２の構成要素は、図４のメモリハッキング探知方法が含むステップ４１０〜ステップ４４０を実行するように電子機器１（１１０）を制御してもよく、このような制御のためにメモリ２１１が含むオペレーティングシステムのコードと少なくとも１つのプログラム（アプリケーション）のコード（コンピュータで読み取り可能な命令）を実行するように実現されてもよい。
【００３２】
ステップ４１０で、プロセッサ２１２は、メモリハッキング探知方法のためのプログラムのファイルに格納されたプログラムコードをメモリ２１１にロードしてもよい。例えば、プログラムのプログラムファイルは、ファイル配布サーバによってネットワークを介して提供されてもよく、電子機器１（１１０）にプログラムをインストール（ｉｎｓｔａｌｌ）するために利用されてもよい。電子機器１（１１０）にインストールされたプログラムが実行される場合、プロセッサ２１２はプログラムコードをメモリ２１１にロードしてもよい。
【００３３】
ここで、プロセッサ２１２およびプロセッサ２１２が備える属性付与部３１０、第１メモリハッキング探知部３２０、および第２メモリハッキング探知部３３０それぞれは、メモリ２１１にロードされたプログラムコードのうち対応する部分を実行して以後のステップ４２０〜ステップ４４０を実行してもよい。ここで、プロセッサ２１２およびプロセッサ２１２の構成要素は、ハッキング探知方法を実行するにあたって電子機器１（１１０）を制御してもよい。例えば、プロセッサ２１２は、電子機器１（１１０）が含むメモリ２１１に特定のデータ（一例として、変数の値）を格納するように電子機器１（１１０）を制御してもよい。
【００３４】
ステップ４２０で、属性付与部３１０は、変数属性情報を含む保護ライブラリを利用してプログラムに含まれた変数に属性を付与してもよい。
【００３５】
例えば、演算子によってのみ値が変更される変数の場合、この変数には、オペレータ属性として第１属性が付与されてもよい。以下で説明するが、このような変数に対しては、変数のタイプおよび演算子の再定義によってメモリハッキングが探知されてもよい。
【００３６】
さらに他の例として、演算子の再定義によってはメモリハッキングの保護や探知が困難な変数が存在する。このような変数には第２属性が付与されてもよい。より具体的な例として、値が変わらない固定値を有する変数や、値が増加だけしたり減少だけしたりする変数が存在する。ここで、固定値を有する変数には変更不可（ｕｎｃｈａｎｇｅａｂｌｅ）属性が、値が増加だけする変数には増加（ｉｎｃｒｅａｓｅ）属性が、値が減少だけする変数には減少（ｄｅｃｒｅａｓｅ）属性がそれぞれ第２属性として付与されてもよい。
【００３７】
保護ライブラリは、プログラムのインストールのためのファイルの配布過程でファイルに追加されてもよい。例えば、開発者はメモリハッキングに対して別段考慮せずにプログラムを開発したりもするし、プログラムのインストールのためのファイルを配布したりもする。このとき、ファイルが配布される過程でファイル（一例として、アンドロイド応用プログラムパッケージ（Ａｎｄｒｏｉｄ  ａｐｐｌｉｃａｔｉｏｎ  Ｐａｃｋａｇｅ：ＡＰＫ）ファイル）に保護ライブラリが追加されてもよい。このような保護ライブラリは、開発者のシステム、プログラムのダウンロードを管理するアプリストアなどのファイル配布システム、またはその他の保護システムを通じてプログラムのファイルに追加されてもよい。
【００３８】
ステップ４３０で、第１メモリハッキング探知部３２０は、第１属性が付与された第１変数のタイプおよび演算子を保護ライブラリを利用して再定義し、第１変数の値が変更された場合、再定義された演算子以外の演算子によって第１変数の値が変更されたかまたは第１変数の値が再定義されたタイプの範囲を脱するかに基づいて第１変数に対するメモリハッキングを探知してもよい。
【００３９】
基本的に、変数のタイプと演算子は、プログラムが駆動するオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）またはプログラム言語（Ｐｒｏｇｒａｍ  Ｌａｎｇｕａｇｅ）によって定義される。例えば、「ＩＮＴ」タイプの変数は定数値を有するように定義され、「ＦＬＯＡＴ」タイプの変数は実数値を有するように定義される。さらに、演算子「＋」は左右の変数値を足した値を生成するように定義され、演算子「−」は左右の変数値の差値を生成するように定義される。
【００４０】
ここで、第１メモリハッキング探知部３２０は、変数のうちで第１属性が付与された変数（第１変数）に対しては、このような変数のタイプと演算子を再定義してもよい。例えば、第１メモリハッキング探知部３２０は、「ＩＮＴ」タイプの変数が定数値ではない正の定数値を有するように、そして「ＦＬＯＡＴ」タイプの変数が実数値ではない正の実数値を有するようにタイプを再定義してもよい。また、第１メモリハッキング探知部３２０は、演算子「＋」は左右の変数値を足した値の絶対値を生成するように、そして演算子「−」は左右の変数値の差値の絶対値を生成するように演算子を再定義してもよい。
【００４１】
この場合、第１メモリハッキング探知部３２０は、再定義された演算子によって第１変数の値が変更されない場合、第１変数に対するメモリハッキングを探知してもよい。また、第１メモリハッキング探知部３２０は、第１変数の値が再定義されたタイプの範囲を脱するかに基づいて第１変数に対するメモリハッキングを探知してもよい。例えば、再定義された「ＩＮＴ」タイプの第１変数が負数の値を有する場合、第１メモリハッキング探知部３２０はメモリハッキングを探知してもよい。
【００４２】
ステップ４４０で、第２メモリハッキング探知部３３０は、第２属性が付与された第２変数の値の変化を周期的にモニタリングし、前記第２変数の値の変化が第２属性によって設定された変化制限を脱するかに基づいて第２変数に対するメモリハッキングを探知してもよい。
【００４３】
上述した第１属性において、変数のタイプによって変数が有することのできる値の範囲に対する属性であれば、第２属性は変数自体の属性であってもよい。上述したように、第２属性は、変数でありながらも値が固定ではなければならない変数の変更不可属性、値が常に増加しなければならない変数の増加属性、または値が常に減少しなければならない変数の減少属性などが第２属性に含まれてもよい。
【００４４】
例えば、第２メモリハッキング探知部３３０は、ステップ４４０で、変更不可属性が付与された第２変数の値を読み取り専用属性のデータファイルを利用して管理し、第２変数の値が読み取り専用属性のデータファイルに格納された値とは異なる場合、第２変数に対するメモリハッキングを探知してもよい。読み取り専用属性のデータファイルは、格納されたデータの変更が不可能であるため、第２メモリハッキング探知部３３０は、該当のデータファイルに変更不可属性が付与された第２変数の値を格納しておき、これを第２変数の値と比較することによって第２変数が変更されたかを確認してもよい。ここで、変更不可属性が付与された第２変数の値が変更されたということは、メモリハッキングが発生したことを意味することができるため、第２メモリハッキング探知部３３０はメモリハッキングを探知することができるようになる。
【００４５】
他の例として、第２メモリハッキング探知部３３０は、ステップ４４０で、周期的にモニタリングされた増加属性が付与された第２変数の値が以前の値に比べて増加していないか、周期的にモニタリングされた減少属性が付与された第２変数の値が以前の値に比べて減少していない場合、第２変数に対するメモリハッキングを探知してもよい。例えば、ゲーム上の時間と関連する第２変数には、増加属性または減少属性が付与されることがある。このような第２変数は、時間の流れに応じて持続的に増加または減少しなければならないが、第２変数が増加したり減少したりしない場合、第２メモリハッキング探知部３３０はメモリハッキングを探知してもよい。
【００４６】
ステップ４３０とステップ４４０の実行順序は互いに変更されてもよいし、互いに同時に行われてもよい。
【００４７】
図５は、本発明の一実施形態における、第２属性が付与された変数のモニタリング過程を説明するための図である。第２属性が付与された第２変数５１０の値は、ヒープ（Ｈｅａｐ）５２０やスタック（ｓｔａｃｋ）のように第２変数５１０に割り当てられたメモリの記憶領域に格納されてもよい。メモリハッキングは、このような第２変数５１０が格納されたメモリの記憶領域を検索して行われるようになる。図３および図４を参照しながら説明した第２メモリハッキング探知部３３０は、第２変数５１０に第２属性が付与されて登録されると、値変造をモニタリングするためのスレッド（Ｔｈｒｅａｄ）５３０を生成し、記憶領域（図５のヒープ５２０）に格納された第２変数５１０の値を周期的にモニタリングすることによってメモリハッキングを探知してもよい。例えば、図５の第２変数５１０が変更不可属性が付与された変数であると仮定するとき、第２変数５１０の登録時に読み取り専用属性のデータファイル５４０が生成されて第２変数５１０の値が格納されてもよい。このとき、スレッド５３０は、ヒープ５２０に格納された値と読み取り専用属性のデータファイル５４０に格納された値とを比べることによって第２変数５１０に対するメモリハッキングを探知してもよい。
【００４８】
ここで、第２変数５１０は、プログラムの開発段階で設定（一例として、ＳＤＫ（Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔを利用して）され、第２変数５１０の値の格納や属性の付与、モニタリングなどは、保護ライブラリを利用して処理されることが分かる。したがって、開発者がメモリハッキングに対して考慮する必要がなく、プログラムの開発だけに専念することができるようになる。
【００４９】
また、メモリハッキング探知システムは、探知されたメモリハッキングに対する変数に関する情報を提供することも可能である。このために、変数には特定の名前のような識別子パラメータが付与されてもよい。例えば、プログラムコードにおいて、変数の名前は、全域変数と地域変数が互いに同じ名前を有することができるため（一例として、全域変数ａと地域変数ａは互いに異なる変数）、単に変数の名前だけでは特定の変数を識別することが難しい。したがって、特定の変数のための識別子パラメータが追加で付加されてもよく、メモリハッキングと関連する変数に対してはこのような識別子パラメータを提供することにより、どのような変数の値に対して変造が試されたかを把握することができる。
【００５０】
図６は、本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の他の例を示した図であり、図７は、本発明の一実施形態における、電子機器が実行することのできるメモリハッキング探知方法の他の例を示したフローチャートである。
【００５１】
図６に示すように、電子機器１（１１０）のプロセッサ２１２は、図３に示す属性付与部３１０、第１メモリハッキング探知部３２０、および第２メモリハッキング探知部３３０の他に、識別子パラメータ付与部６１０およびメッセージ提供部６２０をさらに備えてもよい。このようなプロセッサ２１２およびプロセッサ２１２の構成要素は、図７のメモリハッキング探知方法が含むステップ４１０〜ステップ４４０、ステップ７１０およびステップ７２０を実行するように電子機器１（１１０）を制御してもよく、このような制御のためにメモリ２１１が含むオペレーティングシステムのコードと少なくとも１つのプログラム（アプリケーション）のコード（コンピュータで読み取り可能な命令）を実行するように実現されてもよい。
【００５２】
属性付与部３１０、第１メモリハッキング探知部３２０、および第２メモリハッキング探知部３３０、またはステップ４１０〜ステップ４４０については、図３および図４を参照しながら上述したとおりであるため、繰り返される説明は省略する。
【００５３】
ステップ７１０は、ステップ４１０以後そしてステップ４３０以前に実行されてもよい。図７ではステップ７１０がステップ４２０以後に実行される実施形態について説明しているが、ステップ４１０以後に実行されても問題ない。
【００５４】
ステップ７１０で、識別子パラメータ付与部６１０は、保護ライブラリを利用してプログラムに含まれた変数に識別子パラメータを付与してもよい。それぞれの変数は、このような識別子パラメータに基づいて識別されてもよい。
【００５５】
例えば、既存の変数「ＩＮＴ  ｍ＿ＨＰ」は、識別子パラメータ「体力」とオペレータ属性「ＡＲＭＯＲ＿ＯＰＥＲＡＴＯＲ」が付与されて再定義され、「ｍ＿ＨＰ．Ｉｎｉｔ（“体力”、ＡＲＭＯＲ＿ＯＰＥＲＡＴＯＲ）」のように表現されてもよい。
【００５６】
他の例として、既存の変数「ＢＹＴＥ  ｍ＿ＳｔａｔｉｃＶａｌｕｅ」は、識別子パラメータ「リソース値」と変更不可属性「ＡＲＭＯＲ＿ＵＮＣＨＡＮＧＥＡＢＬＥ」および固定値「２５６」が付与され、「ｍ＿ＳｔａｔｉｃＶａｌｕｅ．Ｂｙｔｅ（“リソース値”、ＡＲＭＯＲ＿ＵＮＣＨＡＮＧＥＡＢＬＥ、２５６）」のように表現されてもよい。
【００５７】
ステップ７１０とステップ４２０が実行された後にはステップ４３０およびステップ４４０が実行されてもよい。ここで、ステップ７２０は、ステップ４３０またはステップ４４０でメモリハッキングが探知された後に実行されてもよい。
【００５８】
ステップ７２０で、メッセージ提供部６２０は、メモリハッキングが探知された場合、メモリハッキングの探知の可否に関する情報およびメモリハッキングに対応する変数の識別子パラメータが含まれたメッセージを提供してもよい。提供されたメッセージは、開発者のシステムやプログラムを通じてサービスを提供するサーバ１５０またはプログラムのインストールファイルを提供したサーバ１６０などに電子機器１（１１０）を通じて送信されてもよい。したがって、開発者やサービス提供者またはプログラムの配布者がメモリハッキングの行為を正確に探知することができ、このような探知情報に基づいて事業的分析によるアフターケア（一例として、該当のユーザに対する制裁）をすることが可能となる。
【００５９】
他の実施形態では、変数に付与された属性に関する情報を提供することも可能である。例えば、メッセージ提供部６２０は、メモリハッキングが探知された場合、メモリハッキングの探知の可否に関する情報およびメモリハッキングに対応する変数の属性に関する情報が含まれたメッセージを提供してもよい。この場合、開発者やサービス提供者またはプログラムの配布者は、どのような属性の変数に対して変造が試されたかを把握することができるようになる。この場合、識別子パラメータ付与部６１０やステップ７１０は省略されてもよい。さらに他の実施形態では、メモリハッキングが試された変数に対する識別子パラメータと属性がすべて含まれたメッセージが送信されてもよい。
【００６０】
変更された変数の値は、１つの格納位置ではなく複数の格納位置に格納されてもよい。また、変数のフィッシング値を利用することにより、ハッカーが変数の真値ではないフィッシング値に変造を試すように誘導してもよい。これだけでなく、変数の真値を重複格納してバックアップすることによって変数の値の変造をモニタリングしてもよい。
【００６１】
図８は、本発明の一実施形態における、変数の値が複数の格納位置に格納される例を示した図である。
【００６２】
先ず、変数の値を複数の格納位置に格納する実施形態について説明する。
【００６３】
本実施形態のために、プロセッサ２１２は、変数値管理部（図示せず）をさらに備えてもよく、変数値管理部は、プログラムの１つの変数に対して変数の値を格納するための複数の格納位置を割り当て、１つの変数の値が変更された場合、複数の格納位置のうち順に選択された格納位置に変更された変数の値を格納し、変更された変数の値が格納された複数の格納位置それぞれに対する指示情報を管理するステップ（図示せず）を実行してもよい。このような図に示されていないステップは、ステップ４１０以後そしてステップ４３０以前に実行されてもよい。例えば、図８の実施形態において、第１変数８１０に対して変更された値は、再定義された演算子の処理のための保安ライブラリの演算子クラス８２０と値格納クラス８３０を通じて複数の格納位置（Ｈｅａｐ１、Ｈｅａｐ２、およびＨｅａｐ３）に順に格納されてもよい。例えば、１番目に変更された第１変数８１０の値がＨｅａｐ１に格納された後、２番目変更された第１変数８１０の値はＨｅａｐ２に格納されてもよい。すなわち、１つの変数に対する値が多数の格納位置に格納されるため、ハッカーが特定の変数に対する値を得ることが困難になり、値を得たとしても、これを変造すればまた新たな格納位置に変造された値が格納されなければならないため、該当の変数に対するメモリハッキングを遮断することができる。
【００６４】
ここで、プロセッサ２１２は、第３メモリハッキング探知部（図示せず）をさらに備えてもよい。第３メモリハッキング探知部は、指示情報に対する操作の可否をモニタリングしてメモリハッキングを探知するステップ（図示せず）を実行してもよい。例えば、図８では、指示情報の例としてポインタ８４０を示している。ここで、第３メモリハッキング探知部は、保安ライブラリの値およびポインタ探知クラス８５０を通じてポインタ８４０の変造や固定を探知してメモリハッキングを探知してもよい。このような図に示されていないステップは、ステップ４２０またはステップ７１０以後に実行されてもよい。
【００６５】
また、変数のフィッシング値を利用する実施形態について説明する。
【００６６】
プロセッサ２１２は、フィッシング値管理部（図示せず）をさらに備えてもよく、プログラムの変数の値に対するフィッシング（ｆｉｓｈｉｎｇ）値を格納するためのフィッシング格納位置を割り当て、変数の値が変更された場合、フィッシング格納位置に格納されたフィッシング値を予め設定された値に変更するステップ（図示せず）をさらに実行してもよい。このような図に示されていないステップは、図４のステップ４３０以前に実行されてもよい。例えば、図８では、第１変数８１０に対するフィッシング値が、上述したフィッシング格納位置としてフィッシング値Ｈｅａｐ４（８６０）に格納される例を示している。
【００６７】
このとき、プロセッサ２１２は、第４メモリハッキング探知部（図示せず）をさらに備えてもよい。第４メモリハッキング探知部は、フィッシング格納位置に格納された予め設定された値の変造の可否に基づいて前記メモリハッキングを探知するステップ（図示せず）を実行してもよい。このような図に示されていないステップは、ステップ４２０またはステップ７１０以後に実行されてもよい。例えば、図８において、第４メモリハッキング探知部は、保安ライブラリの値およびポインタ探知クラス８５０を通じてフィッシング値の変造を探知してメモリハッキングを探知してもよい。フィッシング値は予め設定されてもよく、フィッシング値Ｈｅａｐ４（８６０）に格納された値がこのような予め設定された値ではない他の値に変造された場合には、メモリハッキングが試されたということを把握することができる。
【００６８】
また、変数の真値を重複格納する実施形態について説明する。
【００６９】
プロセッサ２１２は、変数値管理部（図示せず）および第５メモリハッキング探知部（図示せず）をさらに備えてもよい。
【００７０】
変数値管理部は、プログラムの変数の値が変更された場合、変更された変数の値を複数の格納位置に重複格納するステップ（図示せず）を実行してもよい。このような図に示されていないステップは、ステップ４１０以後にステップ４３０以前に実行されてもよい。
【００７１】
また、第５メモリハッキング探知部は、複数の格納位置に重複格納された値を比べることによって変更された変数の値に対する変造を探知するステップ（図示せず）をさらに実行してもよい。このような図に示されていないステップは、ステップ４２０またはステップ７１０以後に実行されてもよい。例えば、図８において、第１変数８１０の真値は、重複格納空間である現在真値バックアップ５４０に格納されてもよい。ここで、第５メモリハッキング探知部は、保安ライブラリの値およびポインタ探知クラス８５０を通じてＨｅａｐ１、Ｈｅａｐ２、Ｈｅａｐ３のうちの１つに格納された現在真値と現在真値バックアップ５４０に格納された真値とを比べることによって第１変数８１０の値が変造されたかを把握してもよい。
【００７２】
このように、本発明の実施形態によると、段階別にメモリハッキングを探知することにより、ハッカー（またはチートユーザ）の水準とその行為を正確に探知することができる。また、メモリ上で実行されるプログラムの変数に対してそれぞれ属性を付与し、付与された属性に応じて互いに異なる方式でメモリハッキングを探知することができる。
【００７３】
これだけでなく、メモリ上で実行されるプログラムの変数に対してそれぞれ名前（識別子パラメータ）を付与することにより、メモリハッキングの探知の可否に関する情報だけではなく、探知されたメモリハッキングに対応する変数の名前をさらに提供し、どのような変数に変造が試されたかを把握することができる。
【００７４】
これに加え、開発過程ではプログラムの変数が一般の変数と同じように動作し、プログラムの配布および実際のメモリ上での実行時に保護ライブラリを利用しながら変数に対して属性の付与、タイプおよび演算子の再定義、または名前付与などの保護機能を実行することにより、プログラムの開発およびデバッギングなどの過程に追加費用を発生させずにメモリハッキングを探知することができる。
【００７５】
上述した装置は、ハードウェア構成要素、ソフトウェア構成要素、および／またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてもよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）、デジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、マイクロコンピュータ、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、ＰＬＵ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｕｎｉｔ）、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、１つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてもよい。処理装置は、オペレーティングシステム（ＯＳ）および前記ＯＳ上で実行される１つ以上のソフトウェアアプリケーションを実行してもよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。便宜的な理解のために、１つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）および／または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは１つのプロセッサおよび１つのコントローラを含んでもよい。また、並列プロセッサ（ｐａｒａｌｌｅｌ  ｐｒｏｃｅｓｓｏｒ）のような、他の処理構成（ｐｒｏｃｅｓｓｉｎｇ  ｃｏｎｆｉｇｕｒａｔｉｏｎ）も可能である。
【００７６】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの１つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に（ｃｏｌｌｅｃｔｉｖｅｌｙ）処理装置に命令したりしてよい。ソフトウェアおよび／またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供するために、いかなる種類の機械、コンポーネント、物理装置、仮想装置（ｖｉｒｔｕａｌ  ｅｑｕｉｐｍｅｎｔ）、コンピュータ格納媒体または装置、または送信される信号波（ｓｉｇｎａｌ  ｗａｖｅ）に永久的または一時的に具現化（ｅｍｂｏｄｙ）されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された方法によって格納されても実行されてもよい。ソフトウェアおよびデータは、１つ以上のコンピュータで読み取り可能な記録媒体に格納されてもよい。
【００７７】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録されてもよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでもよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピーディスク、および磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光媒体、フロプティカルディスク（ｆｌｏｐｔｉｃａｌ  ｄｉｓｋ）のような光磁気媒体、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。上述したハードウェア装置は、実施形態の動作を実行するために１つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同じである。
【００７８】
以上のように、実施形態を限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能である。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、および／あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【００７９】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【符号の説明】
【００８０】
１１０、１２０、１３０、１４０：電子機器
１５０、１６０：サーバ
１７０：ネットワーク
【図１】
2017073132.tif 000003
【図２】
2017073132.tif 000004
【図３】
2017073132.tif 000005
【図４】
2017073132.tif 000006
【図５】
2017073132.tif 000007
【図６】
2017073132.tif 000008
【図７】
2017073132.tif 000009
【図８】
2017073132.tif 000010