(57)【要約】【課題】プログラムの解析を防止するとともに、悪意あるユーザの攻撃自体を防止することができる処理システム、処理方法及びプログラムを提供することをその主たる目的とする。【解決手段】有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システムであって、前記プログラムを受信する受信部と、前記受信部が受信した前記プログラムを解析して、特定のコードが記載された特定領域を複数抽出する抽出部と、前記抽出部が抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する選択部と、前記選択部が選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える変換部とを備えることを特徴とする。【選択図】図１
2017115612.tif 000002
【特許請求の範囲】
【請求項１】
有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システムであって、
前記プログラムを受信する受信部と、
前記受信部が受信した前記プログラムを解析して、特定のコードが記載された特定領域を複数抽出する抽出部と、
前記抽出部が抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する選択部と、
前記選択部が選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える変換部とを備えることを特徴とする処理システム。
【請求項２】
前記プログラムの実行に影響を与えない形式が複数ある場合には、前記変換部が、前記プログラムの実行に影響を与えない複数の形式のうちのいずれか一つを選択して書き換えるものであることを特徴とする請求項１記載の処理システム。
【請求項３】
所定時間が経過すると前記プログラムの機能の一部を制限する制限プログラムを、前記プログラムに追加する時間管理部をさらに備えることを特徴とする請求項１又は２記載の処理システム。
【請求項４】
有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理方法であって、
抽出部が前記プログラムを解析し、特定のコードが記載された特定領域を複数抽出する第１のステップと、
選択部が、前記第１のステップで抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する第２のステップと、
変換部が、前記第２のステップで選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える第３のステップとを備えることを特徴とする処理方法。
【請求項５】
コンピュータを、
有線又は無線のネットワークを介して外部から送信されたプログラムを解析し、特定のコードが記載された特定領域を複数抽出する第１のステップと、
前記第１のステップで抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する第２のステップと、
前記第２のステップで選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える第３のステップとして動作させることを特徴とするプログラム。
【請求項６】
有線又は無線のネットワークを介して複数のユーザ端末に接続され、
前記変換部で書き換えられた変換コードを備える前記プログラムを予め入力した初期プログラムに埋め込む追加部と、
前記初期プログラムを記録するとともに、第１ユーザ端末において前記初期プログラムが作成するユーザ用プログラムの実行状態が予め定めた複数の条件を満たした場合に、その実行状態を示す複数の実行データに紐付けて前記第１ユーザ端末で作成されたコンテンツを記録する記録部とを備えることを特徴とする請求項１又は２記載の処理システム。
【請求項７】
前記コンテンツが、音声データ、文字データ、動画データ、プログラムデータの少なくともいずれか一つを含むことを特徴とする請求項６記載の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システム等に関するものである。
【背景技術】
【０００２】
現在、複数のサーバから提供されたプログラムやデータを合成したコンテンツをウェブサイトを介してユーザに提供するものがある。この具体的な一例としては、例えば特許文献１に記載されているように、地図サーバから取得した地図データと、コンテンツサーバから取得したプログラムとを合成してユーザに提供するもの等が挙げられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１４６２３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、悪意あるユーザが、上述したようなウェブサイトにアクセスした場合、プログラムを解析して、プログラムを構成するコード自体又はコードの規則性を見出すことにより、どのコードでどのような処理が実行されるのかを突き止めて、処理の内容を改ざんしたり、プログラムに不正アクセスを実行させる不正プログラムを追加したりするという問題がある。【０００５】
このような問題に対し、悪意あるユーザにプログラムを解析されないように、例えばプログラムを符号化し、これを解除するキーコードがないとプログラムを実行できなくする暗号化が用いられている。しかし、キーコードは時間や手間をかければ取得可能なものであり、また一度取得してしまえば、そのキーコードを用いて暗号化された全てのプログラムを解析することが可能となる。そのため、悪意あるユーザは時間や手間がかかってもキーコードを取得しようと考え、その攻撃を断念させることは難しい。【０００６】
本発明は上述した問題に鑑みてなされたものであって、プログラムの解析を防止するとともに、悪意あるユーザの攻撃を断念させることが可能となる処理システム、処理方法及びプログラムを提供することをその主たる目的とするものである。
【課題を解決するための手段】
【０００７】
本発明の処理システムは、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システムであって、前記プログラムを受信する受信部と、前記受信部が受信した前記プログラムを解析して、特定のコードが記載された特定領域を複数抽出する抽出部と、前記抽出部が抽出した複数の前記特定領域の少なくとも一つをランダムに選択する選択部と、前記選択部が選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える変換部とを備えることを特徴とする。【０００８】
これにより、プログラムの特定のコードが記載された特定領域のうち、選択部によってランダムに選択された該領域が変換部によってプログラムの実行に影響を与えない形式に書き換えられる。そのため、本処理システムを経たプログラムは、同じ処理であっても実行するコードをそれぞれ異ならせることができるので、悪意あるユーザがプログラムを解析しようとしても、コードの規則性を見出すことが難しく、プログラムの解析を防止することができる。【０００９】
また、従来の暗号化は、１つのキーコードを取得すると、そのキーコードを用いたプログラムは全て解読出来てしまう。そのため、悪意あるユーザは１つのキーコードを取得するために膨大な時間と手間をかけても攻撃を行う。しかし、本発明の処理システムを経たプログラムは、キーコードを用いて暗号化していないことに加えて、同じ処理であってもコードが異なるので規則性が見出しにくい。そのため、例え１つのプログラムを解析できたとしても、その解析手法を他のプログラムにも汎用できるとは限らず、プログラム毎に解析のために時間と手間を費やす必要があるので、悪意あるユーザの攻撃を断念させることが可能となる。【００１０】
上述した本発明の処理システムの一実施形態としては、前記プログラムの実行に影響を与えない形式が複数ある場合には、前記変換部が、前記プログラムの実行に影響を与えない複数の形式のうちのいずれか一つを選択して書き換えるものを挙げることができる。【００１１】
これにより、書き換えた後のコードのバリエーションを増やして、さらにコードの規則性を見出しにくくすることができ、プログラムの解析をより困難なものとすることができる。【００１２】
上述した本発明の処理システムの一実施形態としては、所定時間が経過すると前記プログラムの機能の一部を制限する制限プログラムを、前記プログラムに追加する時間管理部をさらに備えるものを挙げることができる。【００１３】
このように、所定時間が経過するとプログラムの機能の一部を制限する制限プログラムを追加することによって、悪意あるユーザがプログラムを解析する時間に制限を設けることができる。そのため、制限時間が過ぎれば、解析に費やした時間と手間が無駄になるので、悪意あるユーザの攻撃を断念させることが可能となる。【００１４】
また、上述した処理システムの処理方法としては、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理方法であって、抽出部が前記プログラムを解析し、特定のコードが記載された特定領域を複数抽出する第１のステップと、選択部が、前記第１のステップで抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する第２のステップと、変換部が、前記第２のステップで選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える第３のステップとを備えるものを挙げることができる。【００１５】
さらに、上述した処理システムを実行するプログラムとしては、コンピュータを、有線又は無線のネットワークを介して外部から送信されたプログラムを解析し、特定のコードが記載された特定領域を複数抽出する第１のステップと、前記第１のステップで抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する第２のステップと、前記第２のステップで選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える第３のステップとして動作させるものを挙げることができる。【００１６】
また、上述した処理システムの具体的な一態様としては、有線又は無線のネットワークを介して複数のユーザ端末に接続され、前記変換部で書き換えられた変換コードを備える前記プログラムを予め入力した初期プログラムに埋め込む追加部と、前記初期プログラムを記録するとともに、第１ユーザ端末において前記初期プログラムが作成するユーザ用プログラムの実行状態が予め定めた複数の条件を満たした場合に、その実行状態を示す複数の実行データに紐付けて前記第１ユーザ端末で作成されたコンテンツを記録する記録部とを備えるものを挙げることができる。【００１７】
さらに、上記処理システムの具体的な一態様としては、前記コンテンツが、音声データ、文字データ、動画データ、プログラムデータの少なくともいずれか一つを含むものを挙げることができる。
【発明の効果】
【００１８】
本発明の処理システムによれば、プログラムの解析を防止するとともに、悪意あるユーザの攻撃を断念させることが可能となる。
【図面の簡単な説明】
【００１９】
【図１】第１実施形態の処理システムを示すブロック図。
【図２】抽出部が抽出した特定領域を説明するためのプログラムの一例。
【図３】選択部が選択した特定領域を説明するためのプログラムの一例。
【図４】変換部が変換した特定領域を説明するためのプログラムの一例。
【図５】第２実施形態の処理システムを示すブロック図。
【図６】第３実施形態の処理システムを示すブロック図。
【発明を実施するための形態】
【００２０】
以下、本発明の処理システムの一実施形態について図面を用いて説明する。
【００２１】
本発明の処理システムは、外部サーバから取得した情報に、プログラム開発者が開発したプログラムを合成したコンテンツをウェブサイトを介してユーザに提供するものであって、例えば、外部サーバから取得した地図情報に、プログラム開発者が開発したゲームプログラムを合成して作成したゲームコンテンツをウェブサイトを通じてユーザに提供するものである。なお、以下ではゲームを例に本発明の処理システムを説明するが、本発明の処理システムはこの例に限ったものではない。
【００２２】
＜第１実施形態＞
本発明の第１実施形態における処理システム１は、図１に示すように、外部サーバ１００、プログラム開発者の開発者端末２００、ユーザのユーザ端末３００とそれぞれ有線又は無線のネットワークを介して接続されるとともに、このネットワークは図示しないプロキシサーバ等を介してインターネットに接続されている。
【００２３】
外部サーバ１００は、ユーザ端末３００からの要求を受け付けて蓄積された情報を送信する。なお、本実施形態では外部サーバ１００は、ユーザ端末３００に地図情報を送信するものであるが、この情報に縛られず、どんな情報であってもよい。
【００２４】
開発者端末２００は、図示しないＣＰＵ、メモリ、通信ポート、ネットワークインターフェイス等を備える例えばスマートフォン、タブレット端末、ＰＣ等であって、ＪａｖａＳｃｒｉｐｔ（登録商標）、ＴｙｐｅＳｃｒｉｐｔ等のソースコードを用いてプログラムを作成する。
【００２５】
ユーザ端末３００は、図示しないＣＰＵ、メモリ、通信ポート、ネットワークインターフェイス等を備える例えばスマートフォン、タブレット端末、ＰＣ等である。なお、本実施形態ではユーザ端末３００にＧＰＳが実装されているものとする。
【００２６】
第１実施形態における処理システム１の構成について、以下に詳述する。
【００２７】
この処理システム１は、ＣＰＵ、メモリ、Ａ／Ｄコンバータ、通信ポート、ネットワークインターフェイス等からなるサーバであって、メモリに所定のプログラムをインストールすることによって、記録部２、受信部３、抽出部４、選択部５、変換部６、追加部７、送信部８としての機能を担うものである。
【００２８】
受信部３は、開発者端末２００から送られてきたプログラムを受信する。このプログラムは、例えば一定の条件を満たせば宝が現れる宝探しゲームのプログラムや、一定の謎を解いて脱出を図る脱出ゲームのプログラムであって、ゲームコンテンツの一要素をなすものである。
【００２９】
抽出部４は、受信部３が受信したプログラムを解析して、プログラムが書かれたソースコードにおいて、特定のコードが記載された特定領域１０を複数抽出する。この特定のコードとは、変数、関数、制御文、これらを含む複数の文からなるブロックコード、又は文字・数値のことを指す。
【００３０】
特定領域の具体例を図２に示す。
・変数を示すコードが記載されたもの
特定領域１０ａ  ｖａｒ  ａ=１００； 
特定領域１０ｂ  ｖａｒ  ｂ＝２００；
・変数を含むブロックコードが記載されたもの
特定領域１０ｃ
ｖａｒ  ａ=１００；
ｖａｒ  ｂ＝２００；
ｖａｒ  ｃ=ａ＋１；
・関数を含むブロックコードが記載されたもの
特定領域１０ｄ
ｆｕｎｃｔｉｏｎ  ｆ（ａ）｛ｒｅｔｕｒｎ  ａ＋１；｝
ｖａｒ  ｂ＝ｆ（１）；
ｖａｒ  ｃ＝ｆ（２）；
特定領域１０ｈ
ｆｕｎｃｔｉｏｎ  ｆ（ｂ）｛ｒｅｔｕｒｎ  ｂ＋１；｝
ｖａｒ  ｅ＝ｆ（１）；
ｖａｒ  ｇ＝ｆ（２）；
・制御文であるｉｆ文を示すコードが記載されたもの
特定領域１０ｅ
ｉｆ（ａ＝＝２）｛ｂ＝１；｝ｅｌｓｅ｛ｂ＝２；｝
特定領域１０ｉ
ｉｆ（ａ＝＝３）｛ｂ＝４；｝ｅｌｓｅ｛ｂ＝６；｝
・制御文であるｆｏｒ文を示すコードが記載されたもの
特定領域等１０ｆ
ｆｏｒ（ｖａｒｉ＝０；ｉ＜１００；＋＋ｉ）｛＋＋ｂ；｝
・ダブルクォートで囲まれた文字が記載されたもの
特定領域１０ｇ  ａ=“ＨＥＬＬＯ”；
【００３１】
選択部５は、抽出部４が抽出した複数の特定領域１０の少なくとも一部をランダムに選択する。このとき、選択部５は抽出部４が抽出した特定領域１０をすべて選択することも可能であるが、本実施形態では図３に示すように、特定領域１０ｂ、１０ｃ、１０ｄ、１０ｅ、１０ｆ、１０ｇを選択したものとする。
【００３２】
変換部６は、選択部５が選択した特定領域１０ｂ、１０ｃ、１０ｄ、１０ｅ、１０ｆ、１０ｇに記載されたコードをプログラムの実行に影響を与えない形式に書き換える。この形式とは、（１）書き換える前のコードと等価なコードに書き換える方法と、（２）書き換える前のコードの順番をプログラムの実行に支障をきたさない範囲で入れ替える方法と、（３）書き換える前のコードにダミーコードを追加する方法とがある。
【００３３】
まず、（１）書き換える前のコードと等価なコードに書き換える方法についてさらに詳しく説明する。
【００３４】
特定領域１０に変数が記載されている場合には、変数を複数の文で表すことで等価なコードに書き換えることができる。この具体例としては、特定領域１０ｂを図４に示すように、書き換えることが挙げられる。
ｖａｒ  ｂ；
ｂ＝２００；
【００３５】
また、特定領域１０に関数が記載されている場合には、関数を展開して等価なコードに書き換えることができる。この具体例としては、特定領域１０ｄを図４に示すように、書き換えることが挙げられる。
ｖａｒ  ｂ＝１＋１；
ｖａｒ  ｃ＝２＋１；
なお、特定領域１０に展開された関数が記載されている場合、上述したものとは逆にコードを関数化した等価なコードに書き換えることもできる。
【００３６】
さらに、特定領域１０に制御文が記載されている場合には、他の制御文や演算子を用いて等価なコードに書き換えることができる。この具体例としては、特定領域１０ｆの制御文を、ｗｈｉｌｅ文を用いて図４に示すように、書き換えることが挙げられる。
ｖａｒ  ｉ＝０；
ｗｈｉｌｅ（ｉ＜１００）｛＋＋ｂ；＋＋ｉ；｝
また、特定領域１０ｅは、演算子を用いて図４に示すように書き換えることができる。
ａ＝＝２？ｂ＝１：ｂ＝２；
【００３７】
加えて、特定領域１０に文字が記載されている場合には、文字を分解して記載する方法、文字をコードに置換する方法、文字を変数に置換する方法等を用いて等価なコードに書き換えることができる。
【００３８】
文字を分解して記載する方法の具体例としては、特定領域１０ｇを図４に示すように書き換えることが挙げられる。
ａ  ＝“Ｈ”；
ａ＋＝“Ｅ”；
ａ＋＝“Ｌ”；
ａ＋＝“Ｌ”；
ａ＋＝“Ｏ”；
【００３９】
文字をコードに置換する方法の具体例としては、例えば特定領域１０ｇを以下のように書き換えることが挙げられる。
ａ＝Ｓｔｒｉｎｇ.ｆｒｏｍＣｈａｒＣｏｄｅ（７２,６９,７６,７６,７９）；
【００４０】
文字を変数に置換する方法の具体例としては、例えば、
ｖａｒ  ｍｏｎｅｙ＝１０００；
ｖａｒ  ｐｒｉｃｅ＝１００；
ｖａｒ  ｍｏｎｅｙＲｅｓｔ＝ｍｏｎｅｙ−ｐｒｉｃｅ；を、
ｖａｒ  ａ＝１０００；
ｖａｒ  ｂ＝１００；
ｖａｒ  ｃ＝ａ−ｂ；に書き換えることが挙げられる。
【００４１】
なお、数値であれば、数値を四則演算を用いて展開して記載することで等価なコードに書き換えることができる。この具体例としては、特定領域１０ｂにおける数値２００を、
ｖａｒ  ｂ＝１００＋１００；という等価なコードに書き換えることが挙げられる。
【００４２】
次に、（２）書き換える前のコードの順番をプログラムの実行に支障をきたさない範囲で入れ替える方法についてさらに詳しく説明する。
【００４３】
この方法は、特定領域１０がブロックコードからなる場合に、プログラムの実行に支障をきたさない範囲でコードの順番を入れ替えることをいう。具体例を図４に示す。
【００４４】
図４に示された特定領域１０ｃを、以下のように書き換えてプログラムの実行に支障をきたさない範囲でコードの順番を入れ替える。
ｖａｒ  ｂ；
ｂ＝２００；
ｖａｒ  ａ＝１００；
ｖａｒ  ｃ＝ａ＋１；
【００４５】
また、図には記載していないが特定領域１０ｄを以下のように書き換えてプログラムの実行に支障をきたさない範囲でコードの順番を入れ替えることもできる。
ｖａｒ  ｂ＝ｆ（１）；
ｆｕｎｃｔｉｏｎ  ｆ（ａ）｛ｒｅｔｕｒｎ  ａ＋１；｝
ｖａｒ  ｃ＝ｆ（２）；
【００４６】
最後に、（３）書き換える前のコードにダミーコードを追加する方法について詳しく説明する。
【００４７】
ダミーコードを追加する方法としては、プログラムの処理に影響を与えないあらゆるコードをダミーコードとして挿入することが可能である。この一例としては、ダミーコードとして変数を追加すること、オブジェクトを追加すること、分岐処理を追加すること、ループ処理を追加すること、関数とその関数の呼出し処理を追加することに加えて、正規の変数を一度ダミー変数に入れ替えておき、正規の変数を使用する前にダミー変数を正規の変数に入れ替えること、追加した分岐、ループ、関数内で正規の処理を実行する等が挙げられる。
【００４８】
具体例を以下に記載する。
例えばダミーコードを挿入する前のコードが以下のものである。
ｖａｒ  ｓｅｌｅｃｔｅｄＴｙｐｅ  ＝  １;
ｉｆ（ｓｅｌｅｃｔｅｄＴｙｐｅ  ＝＝  1){
ａｌｅｒｔ("処理Ａを行います");
｝ｅｌｓｅ｛
ａｌｅｒｔ("処理Ｂを行います");
}
これにダミーコードを挿入する。
ｖａｒ  ａ  ＝  ４;
ｖａｒ  ｓｅｌｅｃｔｅｄＴｙｐｅ  ＝  １;
ｖａｒ  ｂ  =  ａ,  ｃ  ＝  ｓｅｌｅｃｔｅｄＴｙｐｅ；
ｖａｒ  ｘ；
ｉｆ（ｂ  ＝＝  ｓｅｌｅｃｔｅｄＴｙｐｅ）｛
ｘ  ＝  ｆ（ｂ,  ｓｅｌｅｃｔｅｄＴｙｐｅ,  ｂ）；
｝ｅｌｓｅ｛
ｆｏｒ（ｖａｒ  ｉ  ＝  ０；  ｉ  ＜  １；  ＋＋ｉ）｛
ｂ  ＝  ａ  /  ｃ；
ｘ  ＝  ｃ；
ｉｆ（ｘ  ＝＝  ｓｅｌｅｃｔｅｄＴｙｐｅ  ＆＆  ｓｅｌｅｃｔｅｄＴｙｐｅ  ＝＝  １）｛
ａ  ＝  ２；
ｆ（）；
｝ｅｌｓｅ｛
ａ  ＝  １；
ａｌｅｒｔ（“処理Ｂを行います”）；
}
}
｝
ｆｕｎｃｔｉｏｎ  ｆ（ｐ,   ｑ,   ｒ）｛
ｖａｒ  ｘ  ＝  ２；
ａｌｅｒｔ（“処理Ａを行います”）；
ｒｅｔｕｒｎ  ｐ  ＋  ｑ  −  ｘ  ＊  ｒ；
}
【００４９】
なお、上述した方法は、単独で用いてもよいし、例えば上述した（１）書き換える前のコードと等価なコードに書き換える方法や、（２）書き換える前のコードの順番をプログラムの実行に支障をきたさない範囲で入れ替える方法と、合わせて用いることもできる。
【００５０】
また、プログラムの実行に影響を与えない形式が複数ある場合も考えられる。つまり、（１）等価なコードに書き換える方法が２以上ある場合、（２）コードの順番をプログラムの実行に支障をきたさない範囲で入れ替える方法が２以上ある場合、（３）ダミーコードの挿入方法が２以上ある場合、または上記（１）（２）（３）のいずれの方法も可能な場合等である。このように、書き換える方法が複数ある場合には、これら複数の形式のうちのいずれか一つの形式を変換部６が適宜選択して書き換えるように構成することができる。
【００５１】
追加部７は、変換部６で変換されたプログラムを取得するとともに、このプログラムを予め作成した初期プログラムに埋め込む。この初期プログラムとは、ユーザ端末３００で機能するものであって、外部サーバ１００が有する情報を取得する要求を行うとともに、この情報に変換部６で変換されたプログラムを合成してユーザ用プログラムを作成するように命令するものである。
【００５２】
記録部２は、初期プログラムを記録する。なお、記録時に例えばプログラムを受付部３で受け付けた時間情報や、プログラムの名称に関する情報等に紐付けて初期プログラムを記録してもよい。
【００５３】
送信部８は、ユーザ端末３００からの初期プログラム要求を受け付けて、初期プログラムを記録部２から抽出してユーザ端末３００に送信するものである。
【００５４】
ユーザ端末３００では、送信部８から送信された初期プログラムが実行され、外部サーバ１００に情報を取得する要求を行い、外部サーバ１００からこの情報が送信される。本実施形態においては、ユーザ端末３００のＧＰＳの緯度、経度、高度等の位置情報を外部サーバ１００に送り、外部サーバ１００はこの位置情報を含む地図情報を送信する。ユーザ端末３００では、この地図情報に変換部６で変換されたプログラムを合成してユーザ用プログラムを生成する。このユーザ用プログラムは、例えば地図上の所定の地点に宝を配置するとともに、ユーザの現在位置からその所定の地点までの間に位置情報に紐付けた様々なトラップを仕掛け、ユーザが実際にその位置に移動してトラップを解いていくことによって宝を獲得できるとした所謂リアルゲームに関する処理を行うものである。そして、ユーザ端末３００においてユーザ用プログラムが実行されることにより、ユーザはゲームをプレイすることができる。
【００５５】
なお、上述の実施形態において、送信部８が、記録部２に複数の初期プログラムが記録されている場合、送信部８は、ユーザ端末３００に記録部２に記録された初期プログラムのリストを送り、このリストのうちからユーザが適宜選択した初期プログラムの選択情報を受け付けて、この選択情報に基づいて初期プログラムを記録部２から抽出し、ユーザ端末３００に送信するように構成してもよい。
【００５６】
上述したように構成した第１実施形態における処理システム１では、特定のコードが記載された特定領域１０のうち、選択部５によってランダムに選択された該領域が、変換部６によってプログラムの実行に影響を与えない所定の形式に書き換えられる。そのため、本処理システム１を経たプログラムは、同じ処理を実行するコードをそれぞれ異ならせることができるので、悪意あるユーザがプログラムを解析しようとしても、コードの規則性を見出すことが難しく、プログラムの解析を防止することができる。
【００５７】
また、悪意あるユーザが本実施形態のシステム１を経たプログラムの解析を試みたところで、規則性を見出すことができないので、その解析に膨大な時間と手間がかかる。加えて、従来の暗号化のように１つのキーコードを取得すれば、そのキーコードを用いて暗号化されたプログラムを全て解析できるようになるものでもなく、プログラム毎に時間と手間をかけて解析が必要となるので、悪意あるユーザの攻撃を断念させることが可能となる。
【００５８】
さらに、プログラムの解析のヒントとなる文字や数値を、本処理システム１ではプログラムの実行に影響を与えない形式に書き換えることによって、プログラムの解析のヒントをなくし、よりプログラムの解析を困難なものとすることができる。
【００５９】
加えて、プログラムの実行に影響を与えない形式が複数ある場合には、変換部６がこれら複数の形式のうちのいずれか一つの形式を適宜選択して書き換えるように構成すれば、変換部が書き換えた後のコードのバリエーションを増やして、さらに規則性を見出しにくくなり、プログラムの解析をより困難なものとすることができる。
【００６０】
なお、処理ステム１の記録部２又は別途設けたメモリに、ユーザがプレイしたそれまでの進行状況を示すプレイデータを保存するように構成してもよい。このとき、例えばユーザ毎にＩＤを決めておき、このＩＤと該プレイデータとを紐付けて記録しておく。これにより、ユーザは一度本処理システム１、２１と通信を切断した後であっても、ＩＤがあれば以前プレイした続きからゲームを再開することができる。
【００６１】
＜第２実施形態＞
次に、第２実施形態における処理システム２１の構成について、以下に詳述する。なお、第１実施形態と同様の部分には同一の符号を付して、説明を省略する。
【００６２】
第２実施形態における処理システム２１は、図６に示すように、変換部６を経たプログラムに、所定の時間が経過するとプログラムの機能の一部を制限する制限プログラムを追加する時間管理部１１をさらに備える点が第１実施形態と異なっている。
【００６３】
ここで、プログラム開発者から送信されたプログラムが、別のユーザと通信してプレイする、例えば通信対戦のようなものであれば、ユーザは本処理システム２１を介して接続された別のユーザと通信することとなる。
【００６４】
しかしながら、悪意あるユーザが、プレイ中にゲームプログラムのソースコードを解析し、このソースコードの一部を改ざんして、本来のプログラムでは有り得ないイベントを生じさせたり、本来のプログラムにはないアイテム生成し、これを使用してプレイすることによって、通信対戦のランキングに特定のユーザが居座り続けたりすることがあり、ゲームを健全にプレイすることができなくなるという問題がある。
【００６５】
そこで、本処理システム２１では、時間管理部１１を備える。
この時間管理部１１は、変換部６を経たプログラムに制限プログラムを追加するものである。この制限プログラムとは、本処理システム２１内に内蔵されているクロックから時間情報を取得して、ユーザ端末３００がウェブサイトにアクセスした時間から所定時間が経過すると、処理システム２１のメモリに、それまでのゲームの進行状況を示すプレイデータを保存できないようにしたり、他のユーザ端末との通信を切断したりしてプログラムの機能の一部を制限するものである。なお、所定時間のカウント方法は、上述の方法にとらわれず例えば送信部８が初期プログラムを送信した時点からカウントするもの等であってもよい。
【００６６】
これにより、ユーザ端末３００が本処理システム２１にアクセスしてから、所定時間が経過すると、ゲームデータを保存できなくなったり、通信が切断されたりする。そのため、悪意あるユーザのプログラムの解析に制限時間が設けられることとなり、プログラムの解析をさらに困難なものとすることができる。また、制限時間が経過すれば、それまでの解析に費やした時間と手間が無駄になるので、悪意あるユーザの攻撃を断念させることができる。
【００６７】
なお、時間制限部１１が追加する制限プログラムは、変換部６を経たプログラムだけではなく、受信部３から送られてきたプログラムに予め追加するものであってもよい。
【００６８】
＜第３実施形態＞
次に、第３実施形態における処理システムの構成について、以下に詳述する。なお、第１実施形態及び第２実施形態と同様の部分には同一の符号を付して、説明を省略する。
【００６９】
第３実施形態の処理システム３１は、プログラム開発者が投稿したプログラムによって、ユーザがコンテンツを作成したり、他のユーザが作成したコンテンツを表示させたりすることができる点が異なっている。なお、本実施形態の処理システム３１は、一例として２つのユーザ端末３００に接続されるものであるが、接続されるユーザ端末３００は２以上の複数でもよい。
【００７０】
プログラム開発者から投稿されたプログラムには、プログラム開発者が予め定めた複数の条件を満たした場合に、第１ユーザにコンテンツの作成を促す表示を行う処理が含まれるとともに、複数の条件を満たした第２ユーザに第１ユーザが作成したコンテンツを表示する処理が含まれている。
【００７１】
予め定めた複数の条件とは、プログラム開発者が予め定義した状態のことをいい、例えばゲームに関するプログラムであれば、移動エリア、最初に戦闘したキャラクター、戦った敵の数、プレイ時間等を条件として定義することができる。この条件は、プログラム開発者が開発するプログラムに合わせて適宜自由に設定される。
【００７２】
このプログラムを受け付けた本実施形態の処理システム３１は、上述したように記録部２、受信部３、抽出部４、選択部５、変換部６によってプログラムの特定領域のコードを変換する。そして、変換したプログラムを、追加部７において予め入力された初期プログラムに埋め込む。
【００７３】
記録部３３は、図６に示すように、この初期プログラムを記録するとともに、ユーザ端末３００から送信されたコンテンツ等のデータを記録する。
【００７４】
送受信部３４は、図６に示すように、記録部３３に記録された初期プログラムやデータをユーザ端末３００に送受信する。
【００７５】
第１ユーザ端末３００ａ及び第２ユーザ端末３００ｂは、処理システム３１に有線または無線のネットワークを通じて接続される。
【００７６】
上述のように構成した処理システム３１の動作について以下に説明する。なお、以下では説明のため、第１ユーザ端末３００ａが処理システム３１に接続された後に第２ユーザ端末３００ｂが処理システム３１に接続されたものとし、第１ユーザ端末３００ａが処理システム３１にアクセスした時点において、記録部３３に初期プログラム以外のデータが記録されていないものとする。
【００７７】
第１ユーザ端末３００ａにおいて初期プログラムが実行されると、初期プログラムは外部サーバ１００から情報を取得して、この情報に変換部６で変換されたプログラムを合成してユーザ用プログラムを作成し、第１ユーザ端末３００ａにおいてユーザ用プログラムが実行される。
【００７８】
このユーザ用プログラムは、例えばリアルゲーム等を提供するとともに、プログラム開発者が予め定義した状態と、ユーザ用プログラムの実行状態とを比較して、ユーザにコンテンツの作成を促したり、記録部３３にコンテンツを送信したり、記録部３３に記録されたコンテンツを取得したりするものである。
【００７９】
具体的には、プログラム開発者が予め定義した状態が、「移動エリアが５以上」「戦った敵の数が５０以上」「プレイ時間が５０時間以上」であった場合、第１ユーザ端末３００ａの実行状態が「移動エリアが６」「戦った敵の数が７０」「プレイ時間が６０時間」であれば、条件を満たしたと判定して、ディスプレイ等の表示手段に、「コンテンツを作成しますか？」等の表示や、コンテンツ作成ボタン等を表示する。なお、条件によらず常にコンテンツ作成を促す表示をしても良い。常に表示する場合は、コンテンツを作成したタイミングの「移動エリア」「戦った敵の数」「プレイ時間」の条件を使用する。
【００８０】
第１ユーザはこの表示を受けて、ゲームの感想、他のプレイヤーに対する応援、ゲームの攻略法等を音声データ、文字データ、動画データ、プログラムデータ等を用いてコンテンツを作成する。本実施形態では一例のため、第１ユーザが「この敵、強すぎ」という音声データのコンテンツを作成する。
【００８１】
なお、第１ユーザが作成するコンテンツを音声データ、文字データ、動画データ、プログラムデータのいずれから作成するかは適宜ユーザで選択できるように構成することができる。
【００８２】
第１ユーザ端末３００ａにおいて第１ユーザがコンテンツを作成すると、このコンテンツと、第１ユーザ端末におけるユーザ用プログラムの実行状態を示す複数の実行データとが処理システム３１へと送信される。本実施形態では、第１ユーザが音声データで作成した「この敵、強すぎ」というコンテンツとともに、「移動エリアが６」「戦った敵の数が７０」「プレイ時間が６０時間」という複数の実行データが送信される。
【００８３】
送受信部３４は、第１ユーザ端末３００ａから送信された第２プログラムの実行状態を示す複数の実行データ及び第１ユーザ端末３００ａで作成されたコンテンツを受信する。
【００８４】
記録部３３は、送受信部３４が受信した第１ユーザ端末３００ａにおけるユーザ用プログラムの実行状態を示す複数の実行データに紐付けて第１ユーザ端末３００ａで作成されたコンテンツを記録する。
【００８５】
次に、第２ユーザ端末３００ｂにおいて初期プログラムが実行されると、初期プログラムは外部サーバ１００から情報を取得して、この情報に変換部６で変換されたプログラムを合成してユーザ用プログラムを作成し、第２ユーザ端末３００ｂにおいてユーザ用プログラムが実行される。
【００８６】
このユーザ用プログラムは、第１ユーザ端末３００ａでの処理に加えて、第２ユーザ端末３００ｂにおいて、ユーザ用プログラムの実行状態を示す複数の実行データが、記録部３３に記録された複数の実行データと合致するかを判定する。合致する場合には、記録部３３に該複数の実行データに紐づけられたコンテンツを抽出して送信するように要求する。つまり、第２ユーザ端末３００ｂでの実行データが、「移動エリアが６」「戦った敵の数が７０」「プレイ時間が６０時間」となった場合、ユーザ用プログラムは、記録部３３においてこれら実行データに紐付けられた第１ユーザが音声データで作成した「この敵、強すぎ」というコンテンツを抽出して送信するように要求する。
【００８７】
記録部３３は、要求を受け付けて上記複数の実行データと合致するコンテンツを抽出する。このとき、該当するコンテンツが複数ある場合、記録部３３は複数のコンテンツを全て抽出してもよいし、少なくとも１つを抽出するように構成してもよい。
【００８８】
送受信部３４は、コンテンツつまり、「この敵、強すぎ」という音声データを第２ユーザ端末３００ｂへ送信し、第２ユーザ端末３００ｂは、このコンテンツを再生/表示する。
【００８９】
上述のように構成した第３実施形態の処理システム３１によれば、ユーザのプログラムの実行状態に合わせたコンテンツを表示することができるので、よりその場に即したコンテンツを表示することができる。また、第３実施形態における処理システム３１をゲームに用いれば、プレイヤーであるユーザは、ゲームの攻略に役立てたり、また他のユーザと一緒にゲームしている感覚になるので、より一層ゲームを楽しむことができる。
【００９０】
本発明は、上記実施形態に限られたものではない。
【００９１】
第１実施形態及び第２実施形態において、開発者端末及びユーザ端末は説明のため、それぞれ１つで構成されていたが、これらが複数であってもよい。
【００９２】
また、上述の全ての実施形態の処理システムにおいて、処理の順番は上述したものに限られず、例えば処理部が、受信部が受信したプログラムを初期プログラムに埋め込んだ後に、抽出部、選択部、変換部が該プログラムの特定の領域を書き換えるように構成してもよい。
【００９３】
さらに、第３実施形態の処理システムにおいて、時間管理部を別途設けてもよい。さらに、第３実施形態ではゲームを一例に説明をおこなったが、例えばマラソン等のスポーツにも第３実施形態の処理システムを用いることができる。この場合、コンテンツを作成／再生するための予め定めた複数の条件として、例えば「選択コースの長さ」「走行距離」「走行時間」等を選択することができる。加えて、複数の条件に合致する複数のコンテンツを記録部から抽出して第２ユーザ端末で再生すれば、ユーザであるマラソンランナーに声援を届けることができる。
【００９４】
加えて、第３実施形態において、ユーザ用プログラムが、ユーザ端末の記録部にそれまで処理システムの記録部に記録されてきたコンテンツ及びこのコンテンツに紐づけられた複数の実行データを記録するように構成してもよい。このように構成すれば、いちいち処理システムに要求を出さずにコンテンツを表示することができるので、処理のスピードを上げることができる。
【００９５】
本発明はその趣旨に反しない範囲で様々な変形が可能である。
【産業上の利用可能性】
【００９６】
本発明は、プログラムの解析を防止するとともに、悪意あるユーザの攻撃を断念させることが可能となる処理システムである。
【符号の説明】
【００９７】
１・・・処理システム
３・・・受信部
４・・・抽出部
５・・・選択部
６・・・変換部
【図１】
2017115612.tif 000003
【図２】
2017115612.tif 000004
【図３】
2017115612.tif 000005
【図４】
2017115612.tif 000006
【図５】
2017115612.tif 000007
【図６】
2017115612.tif 000008
【国際調査報告】
2017115612.tif 000009
2017115612.tif 000010
2017115612.tif 000011
2017115612.tif 000012