特許第6630892号(P6630892)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 竹田 優太の特許一覧

<>
  • 特許6630892-処理システム、処理方法及びプログラム 図000002
  • 特許6630892-処理システム、処理方法及びプログラム 図000003
  • 特許6630892-処理システム、処理方法及びプログラム 図000004
  • 特許6630892-処理システム、処理方法及びプログラム 図000005
  • 特許6630892-処理システム、処理方法及びプログラム 図000006
  • 特許6630892-処理システム、処理方法及びプログラム 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6630892
(24)【登録日】2019年12月20日
(45)【発行日】2020年1月15日
(54)【発明の名称】処理システム、処理方法及びプログラム
(51)【国際特許分類】
   G06F 21/14 20130101AFI20200106BHJP
【FI】
   G06F21/14
【請求項の数】6
【全頁数】16
(21)【出願番号】特願2017-558907(P2017-558907)
(86)(22)【出願日】2016年12月5日
(86)【国際出願番号】JP2016086008
(87)【国際公開番号】WO2017115612
(87)【国際公開日】20170706
【審査請求日】2018年2月6日
(31)【優先権主張番号】特願2015-257714(P2015-257714)
(32)【優先日】2015年12月29日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】516005005
【氏名又は名称】竹田 優太
(74)【代理人】
【識別番号】100182121
【弁理士】
【氏名又は名称】三宅 紘子
(72)【発明者】
【氏名】竹田 優太
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2014−191526(JP,A)
【文献】 米国特許第06591415(US,B1)
【文献】 特開2000−148461(JP,A)
【文献】 特開2007−304726(JP,A)
【文献】 特開2012−220979(JP,A)
【文献】 特開2004−185047(JP,A)
【文献】 特開2005−321844(JP,A)
【文献】 福島 和英 ほか,変数の符号化を利用した自動難読化ツールの実装,電子情報通信学会2009年総合大会講演論文集 通信2,日本,社団法人 電子情報通信学会,2009年 3月 4日,B−19−2,p.569
【文献】 門田 暁人 ほか,ループを含むプログラムを難読化する方法,電子情報通信学会論文誌,日本,社団法人電子情報通信学会,1997年 7月25日,Vol.J80-D-I No.7,pp.644−652
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/14
(57)【特許請求の範囲】
【請求項1】
有線又は無線のネットワークを介して複数のユーザ端末に接続され、外部から送信されたプログラムを処理する処理システムであって、
前記プログラムを受信する受信部と、
前記受信部が受信した前記プログラムを解析して、特定のコードが記載された特定領域を複数抽出する抽出部と、
前記抽出部が抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する選択部と、
前記選択部が選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える変換部と、
前記変換部で書き換えられた変換コードを備える前記プログラムを予め入力した初期プログラムに埋め込む追加部と、
前記初期プログラムを記録するとともに、前記ユーザ端末におけるユーザ用プログラムの実行状態が予め定めた複数の条件を満たした場合に、その実行状態を示す複数の実行データに紐付けて前記ユーザ端末においてユーザが作成したコンテンツを記録する記録部とを備えることを特徴とする処理システム。
【請求項2】
前記プログラムの実行に影響を与えない形式が複数ある場合には、前記変換部が、前記プログラムの実行に影響を与えない複数の形式のうちのいずれか一つを選択して書き換えるものであることを特徴とする請求項1記載の処理システム。
【請求項3】
所定時間が経過すると前記プログラムの機能の一部を制限する制限プログラムを、前記プログラムに追加する時間管理部をさらに備えることを特徴とする請求項1又は2記載の処理システム。
【請求項4】
前記コンテンツが、音声データ、文字データ、動画データ、プログラムデータの少なくともいずれか一つを含むことを特徴とする請求項1、請求項2又は請求項3のいずれかに記載の処理システム。
【請求項5】
有線又は無線のネットワークを介して複数のユーザ端末に接続され、外部から送信されたプログラムを処理する処理方法であって、
抽出部が前記プログラムを解析し、特定のコードが記載された特定領域を複数抽出する第1のステップと、
選択部が、前記第1のステップで抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する第2のステップと、
変換部が、前記第2のステップで選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える第3のステップと、
追加部が、前記変換部で書き換えられた変換コードを備える前記プログラムを予め入力した初期プログラムに埋め込む第4ステップと、
記録部が、前記初期プログラムを記録するとともに、前記ユーザ端末におけるユーザ用プログラムの実行状態が予め定めた複数の条件を満たした場合に、その実行状態を示す複数の実行データに紐付けて前記ユーザ端末においてユーザが作成したコンテンツを記録する第5ステップとを備えることを特徴とする処理方法。
【請求項6】
コンピュータを、
有線又は無線のネットワークを介して複数のユーザ端末に接続され、外部から送信されたプログラムを解析し、特定のコードが記載された特定領域を複数抽出する第1のステップと、
前記第1のステップで抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する第2のステップと、
前記第2のステップで選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える第3のステップと、
前記第3のステップで書き換えられた変換コードを備える前記プログラムを予め入力した初期プログラムに埋め込む第4ステップと、
前記第4のステップにおける前記初期プログラムを記録するとともに、前記ユーザ端末におけるユーザ用プログラムの実行状態が予め定めた複数の条件を満たした場合に、その実行状態を示す複数の実行データに紐付けて前記ユーザ端末においてユーザが作成したコンテンツを記録する第5ステップとして動作させることを特徴とするプログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システム等に関するものである。
【背景技術】
【0002】
現在、複数のサーバから提供されたプログラムやデータを合成したコンテンツをウェブサイトを介してユーザに提供するものがある。この具体的な一例としては、例えば特許文献1に記載されているように、地図サーバから取得した地図データと、コンテンツサーバから取得したプログラムとを合成してユーザに提供するもの等が挙げられる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−146232号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、悪意あるユーザが、上述したようなウェブサイトにアクセスした場合、プログラムを解析して、プログラムを構成するコード自体又はコードの規則性を見出すことにより、どのコードでどのような処理が実行されるのかを突き止めて、処理の内容を改ざんしたり、プログラムに不正アクセスを実行させる不正プログラムを追加したりするという問題がある。
【0005】
このような問題に対し、悪意あるユーザにプログラムを解析されないように、例えばプログラムを符号化し、これを解除するキーコードがないとプログラムを実行できなくする暗号化が用いられている。しかし、キーコードは時間や手間をかければ取得可能なものであり、また一度取得してしまえば、そのキーコードを用いて暗号化された全てのプログラムを解析することが可能となる。そのため、悪意あるユーザは時間や手間がかかってもキーコードを取得しようと考え、その攻撃を断念させることは難しい。
【0006】
本発明は上述した問題に鑑みてなされたものであって、プログラムの解析を防止するとともに、悪意あるユーザの攻撃を断念させることが可能となる処理システム、処理方法及びプログラムを提供することをその主たる目的とするものである。
【課題を解決するための手段】
【0007】
本発明の処理システムは、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システムであって、前記プログラムを受信する受信部と、前記受信部が受信した前記プログラムを解析して、特定のコードが記載された特定領域を複数抽出する抽出部と、前記抽出部が抽出した複数の前記特定領域の少なくとも一つをランダムに選択する選択部と、前記選択部が選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える変換部とを備えることを特徴とする。
【0008】
これにより、プログラムの特定のコードが記載された特定領域のうち、選択部によってランダムに選択された該領域が変換部によってプログラムの実行に影響を与えない形式に書き換えられる。そのため、本処理システムを経たプログラムは、同じ処理であっても実行するコードをそれぞれ異ならせることができるので、悪意あるユーザがプログラムを解析しようとしても、コードの規則性を見出すことが難しく、プログラムの解析を防止することができる。
【0009】
また、従来の暗号化は、1つのキーコードを取得すると、そのキーコードを用いたプログラムは全て解読出来てしまう。そのため、悪意あるユーザは1つのキーコードを取得するために膨大な時間と手間をかけても攻撃を行う。しかし、本発明の処理システムを経たプログラムは、キーコードを用いて暗号化していないことに加えて、同じ処理であってもコードが異なるので規則性が見出しにくい。そのため、例え1つのプログラムを解析できたとしても、その解析手法を他のプログラムにも汎用できるとは限らず、プログラム毎に解析のために時間と手間を費やす必要があるので、悪意あるユーザの攻撃を断念させることが可能となる。
【0010】
上述した本発明の処理システムの一実施形態としては、前記プログラムの実行に影響を与えない形式が複数ある場合には、前記変換部が、前記プログラムの実行に影響を与えない複数の形式のうちのいずれか一つを選択して書き換えるものを挙げることができる。
【0011】
これにより、書き換えた後のコードのバリエーションを増やして、さらにコードの規則性を見出しにくくすることができ、プログラムの解析をより困難なものとすることができる。
【0012】
上述した本発明の処理システムの一実施形態としては、所定時間が経過すると前記プログラムの機能の一部を制限する制限プログラムを、前記プログラムに追加する時間管理部をさらに備えるものを挙げることができる。
【0013】
このように、所定時間が経過するとプログラムの機能の一部を制限する制限プログラムを追加することによって、悪意あるユーザがプログラムを解析する時間に制限を設けることができる。そのため、制限時間が過ぎれば、解析に費やした時間と手間が無駄になるので、悪意あるユーザの攻撃を断念させることが可能となる。
【0014】
また、上述した処理システムの処理方法としては、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理方法であって、抽出部が前記プログラムを解析し、特定のコードが記載された特定領域を複数抽出する第1のステップと、選択部が、前記第1のステップで抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する第2のステップと、変換部が、前記第2のステップで選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える第3のステップとを備えるものを挙げることができる。
【0015】
さらに、上述した処理システムを実行するプログラムとしては、コンピュータを、有線又は無線のネットワークを介して外部から送信されたプログラムを解析し、特定のコードが記載された特定領域を複数抽出する第1のステップと、前記第1のステップで抽出した複数の前記特定領域のうちの少なくとも一部をランダムに選択する第2のステップと、前記第2のステップで選択した前記特定領域に記載された前記コードを、前記プログラムの実行に影響を与えない形式に書き換える第3のステップとして動作させるものを挙げることができる。
【0016】
また、上述した処理システムの具体的な一態様としては、有線又は無線のネットワークを介して複数のユーザ端末に接続され、前記変換部で書き換えられた変換コードを備える前記プログラムを予め入力した初期プログラムに埋め込む追加部と、前記初期プログラムを記録するとともに、第1ユーザ端末において前記初期プログラムが作成するユーザ用プログラムの実行状態が予め定めた複数の条件を満たした場合に、その実行状態を示す複数の実行データに紐付けて前記第1ユーザ端末で作成されたコンテンツを記録する記録部とを備えるものを挙げることができる。
【0017】
さらに、上記処理システムの具体的な一態様としては、前記コンテンツが、音声データ、文字データ、動画データ、プログラムデータの少なくともいずれか一つを含むものを挙げることができる。
【発明の効果】
【0018】
本発明の処理システムによれば、プログラムの解析を防止するとともに、悪意あるユーザの攻撃を断念させることが可能となる。
【図面の簡単な説明】
【0019】
図1】第1実施形態の処理システムを示すブロック図。
図2】抽出部が抽出した特定領域を説明するためのプログラムの一例。
図3】選択部が選択した特定領域を説明するためのプログラムの一例。
図4】変換部が変換した特定領域を説明するためのプログラムの一例。
図5】第2実施形態の処理システムを示すブロック図。
図6】第3実施形態の処理システムを示すブロック図。
【発明を実施するための形態】
【0020】
以下、本発明の処理システムの一実施形態について図面を用いて説明する。
【0021】
本発明の処理システムは、外部サーバから取得した情報に、プログラム開発者が開発したプログラムを合成したコンテンツをウェブサイトを介してユーザに提供するものであって、例えば、外部サーバから取得した地図情報に、プログラム開発者が開発したゲームプログラムを合成して作成したゲームコンテンツをウェブサイトを通じてユーザに提供するものである。なお、以下ではゲームを例に本発明の処理システムを説明するが、本発明の処理システムはこの例に限ったものではない。
【0022】
<第1実施形態>
本発明の第1実施形態における処理システム1は、図1に示すように、外部サーバ100、プログラム開発者の開発者端末200、ユーザのユーザ端末300とそれぞれ有線又は無線のネットワークを介して接続されるとともに、このネットワークは図示しないプロキシサーバ等を介してインターネットに接続されている。
【0023】
外部サーバ100は、ユーザ端末300からの要求を受け付けて蓄積された情報を送信する。なお、本実施形態では外部サーバ100は、ユーザ端末300に地図情報を送信するものであるが、この情報に縛られず、どんな情報であってもよい。
【0024】
開発者端末200は、図示しないCPU、メモリ、通信ポート、ネットワークインターフェイス等を備える例えばスマートフォン、タブレット端末、PC等であって、JavaScript(登録商標)、TypeScript等のソースコードを用いてプログラムを作成する。
【0025】
ユーザ端末300は、図示しないCPU、メモリ、通信ポート、ネットワークインターフェイス等を備える例えばスマートフォン、タブレット端末、PC等である。なお、本実施形態ではユーザ端末300にGPSが実装されているものとする。
【0026】
第1実施形態における処理システム1の構成について、以下に詳述する。
【0027】
この処理システム1は、CPU、メモリ、A/Dコンバータ、通信ポート、ネットワークインターフェイス等からなるサーバであって、メモリに所定のプログラムをインストールすることによって、記録部2、受信部3、抽出部4、選択部5、変換部6、追加部7、送信部8としての機能を担うものである。
【0028】
受信部3は、開発者端末200から送られてきたプログラムを受信する。このプログラムは、例えば一定の条件を満たせば宝が現れる宝探しゲームのプログラムや、一定の謎を解いて脱出を図る脱出ゲームのプログラムであって、ゲームコンテンツの一要素をなすものである。
【0029】
抽出部4は、受信部3が受信したプログラムを解析して、プログラムが書かれたソースコードにおいて、特定のコードが記載された特定領域10を複数抽出する。この特定のコードとは、変数、関数、制御文、これらを含む複数の文からなるブロックコード、又は文字・数値のことを指す。
【0030】
特定領域の具体例を図2に示す。
・変数を示すコードが記載されたもの
特定領域10a var a=100;
特定領域10b var b=200;
・変数を含むブロックコードが記載されたもの
特定領域10c
var a=100;
var b=200;
var c=a+1;
・関数を含むブロックコードが記載されたもの
特定領域10d
function f(a){return a+1;}
var b=f(1);
var c=f(2);
特定領域10h
function f(b){return b+1;}
var e=f(1);
var g=f(2);
・制御文であるif文を示すコードが記載されたもの
特定領域10e
if(a==2){b=1;}else{b=2;}
特定領域10i
if(a==3){b=4;}else{b=6;}
・制御文であるfor文を示すコードが記載されたもの
特定領域等10f
for(vari=0;i<100;++i){++b;}
・ダブルクォートで囲まれた文字が記載されたもの
特定領域10g a=“HELLO”;
【0031】
選択部5は、抽出部4が抽出した複数の特定領域10の少なくとも一部をランダムに選択する。本実施形態では図3に示すように、特定領域10b、10c、10d、10e、10f、10gを選択したものとする。
【0032】
変換部6は、選択部5が選択した特定領域10b、10c、10d、10e、10f、10gに記載されたコードをプログラムの実行に影響を与えない形式に書き換える。この形式とは、(1)書き換える前のコードと等価なコードに書き換える方法と、(2)書き換える前のコードの順番をプログラムの実行に支障をきたさない範囲で入れ替える方法と、(3)書き換える前のコードにダミーコードを追加する方法とがある。
【0033】
まず、(1)書き換える前のコードと等価なコードに書き換える方法についてさらに詳しく説明する。
【0034】
特定領域10に変数が記載されている場合には、変数を複数の文で表すことで等価なコードに書き換えることができる。この具体例としては、特定領域10bを図4に示すように、書き換えることが挙げられる。
var b;
b=200;
【0035】
また、特定領域10に関数が記載されている場合には、関数を展開して等価なコードに書き換えることができる。この具体例としては、特定領域10dを図4に示すように、書き換えることが挙げられる。
var b=1+1;
var c=2+1;
なお、特定領域10に展開された関数が記載されている場合、上述したものとは逆にコードを関数化した等価なコードに書き換えることもできる。
【0036】
さらに、特定領域10に制御文が記載されている場合には、他の制御文や演算子を用いて等価なコードに書き換えることができる。この具体例としては、特定領域10fの制御文を、while文を用いて図4に示すように、書き換えることが挙げられる。
var i=0;
while(i<100){++b;++i;}
また、特定領域10eは、演算子を用いて図4に示すように書き換えることができる。
a==2?b=1:b=2;
【0037】
加えて、特定領域10に文字が記載されている場合には、文字を分解して記載する方法、文字をコードに置換する方法、文字を変数に置換する方法等を用いて等価なコードに書き換えることができる。
【0038】
文字を分解して記載する方法の具体例としては、特定領域10gを図4に示すように書き換えることが挙げられる。
a =“H”;
a+=“E”;
a+=“L”;
a+=“L”;
a+=“O”;
【0039】
文字をコードに置換する方法の具体例としては、例えば特定領域10gを以下のように書き換えることが挙げられる。
a=String.fromCharCode(72,69,76,76,79);
【0040】
文字を変数に置換する方法の具体例としては、例えば、
var money=1000;
var price=100;
var moneyRest=money−price;を、
var a=1000;
var b=100;
var c=a−b;に書き換えることが挙げられる。
【0041】
なお、数値であれば、数値を四則演算を用いて展開して記載することで等価なコードに書き換えることができる。この具体例としては、特定領域10bにおける数値200を、
var b=100+100;という等価なコードに書き換えることが挙げられる。
【0042】
次に、(2)書き換える前のコードの順番をプログラムの実行に支障をきたさない範囲で入れ替える方法についてさらに詳しく説明する。
【0043】
この方法は、特定領域10がブロックコードからなる場合に、プログラムの実行に支障をきたさない範囲でコードの順番を入れ替えることをいう。具体例を図4に示す。
【0044】
図4に示された特定領域10cを、以下のように書き換えてプログラムの実行に支障をきたさない範囲でコードの順番を入れ替える。
var b;
b=200;
var a=100;
var c=a+1;
【0045】
また、図には記載していないが特定領域10dを以下のように書き換えてプログラムの実行に支障をきたさない範囲でコードの順番を入れ替えることもできる。
var b=f(1);
function f(a){return a+1;}
var c=f(2);
【0046】
最後に、(3)書き換える前のコードにダミーコードを追加する方法について詳しく説明する。
【0047】
ダミーコードを追加する方法としては、プログラムの処理に影響を与えないあらゆるコードをダミーコードとして挿入することが可能である。この一例としては、ダミーコードとして変数を追加すること、オブジェクトを追加すること、分岐処理を追加すること、ループ処理を追加すること、関数とその関数の呼出し処理を追加することに加えて、正規の変数を一度ダミー変数に入れ替えておき、正規の変数を使用する前にダミー変数を正規の変数に入れ替えること、追加した分岐、ループ、関数内で正規の処理を実行する等が挙げられる。
【0048】
具体例を以下に記載する。
例えばダミーコードを挿入する前のコードが以下のものである。
var selectedType = 1;
if(selectedType == 1){
alert("処理Aを行います");
}else{
alert("処理Bを行います");
}
これにダミーコードを挿入する。
var a = 4;
var selectedType = 1;
var b = a, c = selectedType;
var x;
if(b == selectedType){
x = f(b, selectedType, b);
}else{
for(var i = 0; i < 1; ++i){
b = a / c;
x = c;
if(x == selectedType && selectedType == 1){
a = 2;
f();
}else{
a = 1;
alert(“処理Bを行います”);
}
}

function f(p, q, r){
var x = 2;
alert(“処理Aを行います”);
return p + q − x * r;
}
【0049】
なお、上述した方法は、単独で用いてもよいし、例えば上述した(1)書き換える前のコードと等価なコードに書き換える方法や、(2)書き換える前のコードの順番をプログラムの実行に支障をきたさない範囲で入れ替える方法と、合わせて用いることもできる。
【0050】
また、プログラムの実行に影響を与えない形式が複数ある場合も考えられる。つまり、(1)等価なコードに書き換える方法が2以上ある場合、(2)コードの順番をプログラムの実行に支障をきたさない範囲で入れ替える方法が2以上ある場合、(3)ダミーコードの挿入方法が2以上ある場合、または上記(1)(2)(3)のいずれの方法も可能な場合等である。このように、書き換える方法が複数ある場合には、これら複数の形式のうちのいずれか一つの形式を変換部6が適宜選択して書き換えるように構成することができる。
【0051】
追加部7は、変換部6で変換されたプログラムを取得するとともに、このプログラムを予め作成した初期プログラムに埋め込む。この初期プログラムとは、ユーザ端末300で機能するものであって、外部サーバ100が有する情報を取得する要求を行うとともに、この情報に変換部6で変換されたプログラムを合成してユーザ用プログラムを作成するように命令するものである。
【0052】
記録部2は、初期プログラムを記録する。なお、記録時に例えばプログラムを受付部3で受け付けた時間情報や、プログラムの名称に関する情報等に紐付けて初期プログラムを記録してもよい。
【0053】
送信部8は、ユーザ端末300からの初期プログラム要求を受け付けて、初期プログラムを記録部2から抽出してユーザ端末300に送信するものである。
【0054】
ユーザ端末300では、送信部8から送信された初期プログラムが実行され、外部サーバ100に情報を取得する要求を行い、外部サーバ100からこの情報が送信される。本実施形態においては、ユーザ端末300のGPSの緯度、経度、高度等の位置情報を外部サーバ100に送り、外部サーバ100はこの位置情報を含む地図情報を送信する。ユーザ端末300では、この地図情報に変換部6で変換されたプログラムを合成してユーザ用プログラムを生成する。このユーザ用プログラムは、例えば地図上の所定の地点に宝を配置するとともに、ユーザの現在位置からその所定の地点までの間に位置情報に紐付けた様々なトラップを仕掛け、ユーザが実際にその位置に移動してトラップを解いていくことによって宝を獲得できるとした所謂リアルゲームに関する処理を行うものである。そして、ユーザ端末300においてユーザ用プログラムが実行されることにより、ユーザはゲームをプレイすることができる。
【0055】
なお、上述の実施形態において、送信部8が、記録部2に複数の初期プログラムが記録されている場合、送信部8は、ユーザ端末300に記録部2に記録された初期プログラムのリストを送り、このリストのうちからユーザが適宜選択した初期プログラムの選択情報を受け付けて、この選択情報に基づいて初期プログラムを記録部2から抽出し、ユーザ端末300に送信するように構成してもよい。
【0056】
上述したように構成した第1実施形態における処理システム1では、特定のコードが記載された特定領域10のうち、選択部5によってランダムに選択された該領域が、変換部6によってプログラムの実行に影響を与えない所定の形式に書き換えられる。そのため、本処理システム1を経たプログラムは、同じ処理を実行するコードをそれぞれ異ならせることができるので、悪意あるユーザがプログラムを解析しようとしても、コードの規則性を見出すことが難しく、プログラムの解析を防止することができる。
【0057】
また、悪意あるユーザが本実施形態のシステム1を経たプログラムの解析を試みたところで、規則性を見出すことができないので、その解析に膨大な時間と手間がかかる。加えて、従来の暗号化のように1つのキーコードを取得すれば、そのキーコードを用いて暗号化されたプログラムを全て解析できるようになるものでもなく、プログラム毎に時間と手間をかけて解析が必要となるので、悪意あるユーザの攻撃を断念させることが可能となる。
【0058】
さらに、プログラムの解析のヒントとなる文字や数値を、本処理システム1ではプログラムの実行に影響を与えない形式に書き換えることによって、プログラムの解析のヒントをなくし、よりプログラムの解析を困難なものとすることができる。
【0059】
加えて、プログラムの実行に影響を与えない形式が複数ある場合には、変換部6がこれら複数の形式のうちのいずれか一つの形式を適宜選択して書き換えるように構成すれば、変換部が書き換えた後のコードのバリエーションを増やして、さらに規則性を見出しにくくなり、プログラムの解析をより困難なものとすることができる。
【0060】
なお、処理ステム1の記録部2又は別途設けたメモリに、ユーザがプレイしたそれまでの進行状況を示すプレイデータを保存するように構成してもよい。このとき、例えばユーザ毎にIDを決めておき、このIDと該プレイデータとを紐付けて記録しておく。これにより、ユーザは一度本処理システム1、21と通信を切断した後であっても、IDがあれば以前プレイした続きからゲームを再開することができる。
【0061】
<第2実施形態>
次に、第2実施形態における処理システム21の構成について、以下に詳述する。なお、第1実施形態と同様の部分には同一の符号を付して、説明を省略する。
【0062】
第2実施形態における処理システム21は、図6に示すように、変換部6を経たプログラムに、所定の時間が経過するとプログラムの機能の一部を制限する制限プログラムを追加する時間管理部11をさらに備える点が第1実施形態と異なっている。
【0063】
ここで、プログラム開発者から送信されたプログラムが、別のユーザと通信してプレイする、例えば通信対戦のようなものであれば、ユーザは本処理システム21を介して接続された別のユーザと通信することとなる。
【0064】
しかしながら、悪意あるユーザが、プレイ中にゲームプログラムのソースコードを解析し、このソースコードの一部を改ざんして、本来のプログラムでは有り得ないイベントを生じさせたり、本来のプログラムにはないアイテム生成し、これを使用してプレイすることによって、通信対戦のランキングに特定のユーザが居座り続けたりすることがあり、ゲームを健全にプレイすることができなくなるという問題がある。
【0065】
そこで、本処理システム21では、時間管理部11を備える。
この時間管理部11は、変換部6を経たプログラムに制限プログラムを追加するものである。この制限プログラムとは、本処理システム21内に内蔵されているクロックから時間情報を取得して、ユーザ端末300がウェブサイトにアクセスした時間から所定時間が経過すると、処理システム21のメモリに、それまでのゲームの進行状況を示すプレイデータを保存できないようにしたり、他のユーザ端末との通信を切断したりしてプログラムの機能の一部を制限するものである。なお、所定時間のカウント方法は、上述の方法にとらわれず例えば送信部8が初期プログラムを送信した時点からカウントするもの等であってもよい。
【0066】
これにより、ユーザ端末300が本処理システム21にアクセスしてから、所定時間が経過すると、ゲームデータを保存できなくなったり、通信が切断されたりする。そのため、悪意あるユーザのプログラムの解析に制限時間が設けられることとなり、プログラムの解析をさらに困難なものとすることができる。また、制限時間が経過すれば、それまでの解析に費やした時間と手間が無駄になるので、悪意あるユーザの攻撃を断念させることができる。
【0067】
なお、時間制限部11が追加する制限プログラムは、変換部6を経たプログラムだけではなく、受信部3から送られてきたプログラムに予め追加するものであってもよい。
【0068】
<第3実施形態>
次に、第3実施形態における処理システムの構成について、以下に詳述する。なお、第1実施形態及び第2実施形態と同様の部分には同一の符号を付して、説明を省略する。
【0069】
第3実施形態の処理システム31は、プログラム開発者が投稿したプログラムによって、ユーザがコンテンツを作成したり、他のユーザが作成したコンテンツを表示させたりすることができる点が異なっている。なお、本実施形態の処理システム31は、一例として2つのユーザ端末300に接続されるものであるが、接続されるユーザ端末300は2以上の複数でもよい。
【0070】
プログラム開発者から投稿されたプログラムには、プログラム開発者が予め定めた複数の条件を満たした場合に、第1ユーザにコンテンツの作成を促す表示を行う処理が含まれるとともに、複数の条件を満たした第2ユーザに第1ユーザが作成したコンテンツを表示する処理が含まれている。
【0071】
予め定めた複数の条件とは、プログラム開発者が予め定義した状態のことをいい、例えばゲームに関するプログラムであれば、移動エリア、最初に戦闘したキャラクター、戦った敵の数、プレイ時間等を条件として定義することができる。この条件は、プログラム開発者が開発するプログラムに合わせて適宜自由に設定される。
【0072】
このプログラムを受け付けた本実施形態の処理システム31は、上述したように記録部2、受信部3、抽出部4、選択部5、変換部6によってプログラムの特定領域のコードを変換する。そして、変換したプログラムを、追加部7において予め入力された初期プログラムに埋め込む。
【0073】
記録部33は、図6に示すように、この初期プログラムを記録するとともに、ユーザ端末300から送信されたコンテンツ等のデータを記録する。
【0074】
送受信部34は、図6に示すように、記録部33に記録された初期プログラムやデータをユーザ端末300に送受信する。
【0075】
第1ユーザ端末300a及び第2ユーザ端末300bは、処理システム31に有線または無線のネットワークを通じて接続される。
【0076】
上述のように構成した処理システム31の動作について以下に説明する。なお、以下では説明のため、第1ユーザ端末300aが処理システム31に接続された後に第2ユーザ端末300bが処理システム31に接続されたものとし、第1ユーザ端末300aが処理システム31にアクセスした時点において、記録部33に初期プログラム以外のデータが記録されていないものとする。
【0077】
第1ユーザ端末300aにおいて初期プログラムが実行されると、初期プログラムは外部サーバ100から情報を取得して、この情報に変換部6で変換されたプログラムを合成してユーザ用プログラムを作成し、第1ユーザ端末300aにおいてユーザ用プログラムが実行される。
【0078】
このユーザ用プログラムは、例えばリアルゲーム等を提供するとともに、プログラム開発者が予め定義した状態と、ユーザ用プログラムの実行状態とを比較して、ユーザにコンテンツの作成を促したり、記録部33にコンテンツを送信したり、記録部33に記録されたコンテンツを取得したりするものである。
【0079】
具体的には、プログラム開発者が予め定義した状態が、「移動エリアが5以上」「戦った敵の数が50以上」「プレイ時間が50時間以上」であった場合、第1ユーザ端末300aの実行状態が「移動エリアが6」「戦った敵の数が70」「プレイ時間が60時間」であれば、条件を満たしたと判定して、ディスプレイ等の表示手段に、「コンテンツを作成しますか?」等の表示や、コンテンツ作成ボタン等を表示する。なお、条件によらず常にコンテンツ作成を促す表示をしても良い。常に表示する場合は、コンテンツを作成したタイミングの「移動エリア」「戦った敵の数」「プレイ時間」の条件を使用する。
【0080】
第1ユーザはこの表示を受けて、ゲームの感想、他のプレイヤーに対する応援、ゲームの攻略法等を音声データ、文字データ、動画データ、プログラムデータ等を用いてコンテンツを作成する。本実施形態では一例のため、第1ユーザが「この敵、強すぎ」という音声データのコンテンツを作成する。
【0081】
なお、第1ユーザが作成するコンテンツを音声データ、文字データ、動画データ、プログラムデータのいずれから作成するかは適宜ユーザで選択できるように構成することができる。
【0082】
第1ユーザ端末300aにおいて第1ユーザがコンテンツを作成すると、このコンテンツと、第1ユーザ端末におけるユーザ用プログラムの実行状態を示す複数の実行データとが処理システム31へと送信される。本実施形態では、第1ユーザが音声データで作成した「この敵、強すぎ」というコンテンツとともに、「移動エリアが6」「戦った敵の数が70」「プレイ時間が60時間」という複数の実行データが送信される。
【0083】
送受信部34は、第1ユーザ端末300aから送信された第2プログラムの実行状態を示す複数の実行データ及び第1ユーザ端末300aで作成されたコンテンツを受信する。
【0084】
記録部33は、送受信部34が受信した第1ユーザ端末300aにおけるユーザ用プログラムの実行状態を示す複数の実行データに紐付けて第1ユーザ端末300aで作成されたコンテンツを記録する。
【0085】
次に、第2ユーザ端末300bにおいて初期プログラムが実行されると、初期プログラムは外部サーバ100から情報を取得して、この情報に変換部6で変換されたプログラムを合成してユーザ用プログラムを作成し、第2ユーザ端末300bにおいてユーザ用プログラムが実行される。
【0086】
このユーザ用プログラムは、第1ユーザ端末300aでの処理に加えて、第2ユーザ端末300bにおいて、ユーザ用プログラムの実行状態を示す複数の実行データが、記録部33に記録された複数の実行データと合致するかを判定する。合致する場合には、記録部33に該複数の実行データに紐づけられたコンテンツを抽出して送信するように要求する。つまり、第2ユーザ端末300bでの実行データが、「移動エリアが6」「戦った敵の数が70」「プレイ時間が60時間」となった場合、ユーザ用プログラムは、記録部33においてこれら実行データに紐付けられた第1ユーザが音声データで作成した「この敵、強すぎ」というコンテンツを抽出して送信するように要求する。
【0087】
記録部33は、要求を受け付けて上記複数の実行データと合致するコンテンツを抽出する。このとき、該当するコンテンツが複数ある場合、記録部33は複数のコンテンツを全て抽出してもよいし、少なくとも1つを抽出するように構成してもよい。
【0088】
送受信部34は、コンテンツつまり、「この敵、強すぎ」という音声データを第2ユーザ端末300bへ送信し、第2ユーザ端末300bは、このコンテンツを再生/表示する。
【0089】
上述のように構成した第3実施形態の処理システム31によれば、ユーザのプログラムの実行状態に合わせたコンテンツを表示することができるので、よりその場に即したコンテンツを表示することができる。また、第3実施形態における処理システム31をゲームに用いれば、プレイヤーであるユーザは、ゲームの攻略に役立てたり、また他のユーザと一緒にゲームしている感覚になるので、より一層ゲームを楽しむことができる。
【0090】
本発明は、上記実施形態に限られたものではない。
【0091】
第1実施形態及び第2実施形態において、開発者端末及びユーザ端末は説明のため、それぞれ1つで構成されていたが、これらが複数であってもよい。
【0092】
また、上述の全ての実施形態の処理システムにおいて、処理の順番は上述したものに限られず、例えば処理部が、受信部が受信したプログラムを初期プログラムに埋め込んだ後に、抽出部、選択部、変換部が該プログラムの特定の領域を書き換えるように構成してもよい。
【0093】
さらに、第3実施形態の処理システムにおいて、時間管理部を別途設けてもよい。さらに、第3実施形態ではゲームを一例に説明をおこなったが、例えばマラソン等のスポーツにも第3実施形態の処理システムを用いることができる。この場合、コンテンツを作成/再生するための予め定めた複数の条件として、例えば「選択コースの長さ」「走行距離」「走行時間」等を選択することができる。加えて、複数の条件に合致する複数のコンテンツを記録部から抽出して第2ユーザ端末で再生すれば、ユーザであるマラソンランナーに声援を届けることができる。
【0094】
加えて、第3実施形態において、ユーザ用プログラムが、ユーザ端末の記録部にそれまで処理システムの記録部に記録されてきたコンテンツ及びこのコンテンツに紐づけられた複数の実行データを記録するように構成してもよい。このように構成すれば、いちいち処理システムに要求を出さずにコンテンツを表示することができるので、処理のスピードを上げることができる。
【0095】
本発明はその趣旨に反しない範囲で様々な変形が可能である。
【産業上の利用可能性】
【0096】
本発明は、プログラムの解析を防止するとともに、悪意あるユーザの攻撃を断念させることが可能となる処理システムである。
【符号の説明】
【0097】
1・・・処理システム
3・・・受信部
4・・・抽出部
5・・・選択部
6・・・変換部
図1
図2
図3
図4
図5
図6