コンピュータ・ソフトウエア解析システムならびにクライアント・コンピュータ,その動作制御方法およびその動作プログラム
【目的】コンピュータ・ソフトウエア解析する場合に,ソース・コードの秘匿性を維持する。
【構成】クライアント・コンピュータ1において解析対象のコンピュータ・ソフトウエアが難読化される(ステップ32)。難読化されたコンピュータ・ソフトウエアがサーバ・コンピュータに送信される。サーバ・コンピュータにおいてソフトウエア解析が行われ,その解析結果を表わすデータがクライアント・コンピュータに送信される。解析結果を表わすデータは難読化されているので,サーバ・コンピュータにはコンピュータ・ソフトウエアの内容が分らない。難読化されている解析結果データはクライアント・コンピュータ1において復元される(ステップ37)。
【構成】クライアント・コンピュータ1において解析対象のコンピュータ・ソフトウエアが難読化される(ステップ32)。難読化されたコンピュータ・ソフトウエアがサーバ・コンピュータに送信される。サーバ・コンピュータにおいてソフトウエア解析が行われ,その解析結果を表わすデータがクライアント・コンピュータに送信される。解析結果を表わすデータは難読化されているので,サーバ・コンピュータにはコンピュータ・ソフトウエアの内容が分らない。難読化されている解析結果データはクライアント・コンピュータ1において復元される(ステップ37)。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は,コンピュータ・ソフトウエア解析システムならびにクライアント・コンピュータ,その動作制御方法およびその動作プログラムに関する。
【背景技術】
【0002】
近年,ソフトウエアの解析技術が発達している。たとえば,ソース・コードから品質に関するデータを出力し,品質向上活動に利用するといったものが代表的である。このような技術は,非常に幅が広く,近年のソフトウエア内部品質を重視する風潮から,多様な技術やサービスが発展していくことが予想される。
【0003】
ソフトウエア解析技術においては,ソフトウエア解析自体に非常に大きな計算機資源を要するが,特定のソフトウエアに対して常時稼働させるものではない。また,ソフトウエアを送信する場合,通信データ自体はソース・コード(テキスト・データ)に準じるものであり,画像データや動画データに比べデータ量は少ない。このような特徴からソフトウエア解析は,近年のクラウド化(ネットワーク上の計算機資源の有効活用)トレンドと相性がよい。このために,将来的にはソース・コードをクラウド上のソフトウエア解析システムで解析する用途は広いと考えられる。
【0004】
このようなソフトウエア解析には,クライアントがソース・コードをサーバに送信し,サーバが解析を実施し,解析結果をクライアントに返すもの(特許文献1),クライアントが品質測定データを生成してサーバに送信し,サーバがその品質測定データを元に評価データを生成してクライアントに返信するもの(特許文献2)等がある。
【0005】
一方,ソース・コードの秘匿性を保つ手段として難読化が知られている。この難読化は,第三者によるソフトウエア解析を妨害する目的で,一般には挙動が変わらない範囲でソフトウエアのコードに一種のスクランブルをかけるものである。たとえば,ソース・コード記述ではわかりやすい名前を付ける慣習を逆に利用して,名前をわかりにくいものに置き換えることで解析性を悪化させているものがある(特許文献3)。
【0006】
また,プログラムに含まれる技術的ノウハウの流出を防止するもの(特許文献4),ソフトウエア開発中の規約遵守を監視するの(特許文献5),プログラムの問題点等を洗い出すもの(特許文献6),オブジェクトレベルで隠蔽化できるもの(特許文献7)などもある。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2004-240477号公報
【特許文献2】特開2001-75928号公報
【特許文献3】米国特許6102966号公報
【特許文献4】特開2004-133793号公報
【特許文献5】特開2003-114813号公報
【特許文献6】特開2003-280754号公報
【特許文献7】特開2003-280754号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら,クラウド上にあるサーバにソース・コードを送信することは,公開ネットワーク上にソース・コードを送信することとなる。このために,ソース・コードを暗号化することが考えられるが,解析するサーバはソース・コードを復号するので,サーバにはソース・コードの内容がわかってしまう。特許文献1に記載のものでは,ソース・コードの秘匿性が確保されていない。特許文献2に記載のものでは,クライアントが品質測定機能を有する,クライアントとサーバとの間で特別な交換データ・フォーマットを取り決める必要がある,サーバから返信されたデータを元のソース・コードと詳細に照らすための考慮がない,解析に必要なソフトウエア情報を追加したい場合にクライアントを修正する必要がある,解析に必要なソフトウエア情報を追加した場合にはソース・コードの秘匿性が弱まる等の問題がある。特許文献3に記載のものは,サーバ・クライアント型の解析システムとの連携が考慮されていない,難読化された名前を復元することは考えられていないなどの問題がある。さらに,特許文献4から7に記載のものでも,ソース・コードの秘匿性を維持可能なサーバ・クライアント型の解析システムについては考えられていない。
【0009】
この発明の第1の目的は,ソース・コードの秘匿性を維持可能なサーバ・クライアント型のソフトウエア解析システムを提供することにある。第2の目的は,クライアント・コンピュータに解析手段を持たせる必要を無くすことにある。第3の目的は,クライアント・コンピュータからサーバ・コンピュータにソース・コードを送信するための特別なデータ・フォーマットを取り決める必要を無くすことにある。たとえば,サーバ・コンピュータにソース・コードの秘匿性を実現するために特別なものを不要にすることにあり,サーバ・コンピュータがソース・コードの秘匿性を考慮していないものと組み合わせることができるようにすることにある。第4の目的は,サーバ・コンピュータから返信されたデータと元のソース・コードとを容易に照らし合わせるようにするものである。第5の目的は,解析内容の追加,変更に,ほぼサーバ・コンピュータのみで対応可能にすることにある。第6の目的は,解析手段を追加,変更してもソース・コード秘匿性を維持できるようにすることにある。第7の目的は,既存の様々なソフトウエア難読化手段と容易に組み合わせることができるようにすることにある。
【課題を解決するための手段】
【0010】
この発明は,クライアント・コンピュータとサーバ・コンピュータとを備えたコンピュータ・ソフトウエア解析システムについてのものである。
【0011】
クライアント・コンピュータは,解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段,および上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを上記サーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段を備え,上記サーバ・コンピュータは,上記クライアント・コンピュータの上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析し,難読化されている解析結果データを生成するコンピュータ・ソフトウエア解析手段,および上記コンピュータ・ソフトウエア解析手段によって生成された難読化されている解析結果データを,上記クライアント・コンピュータに送信する解析結果データ送信手段を備えている。上記クライアント・コンピュータは,上記サーバ・コンピュータの上記解析結果データ送信手段から送信された難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する復元手段をさらに備えている。
【0012】
この発明は,上記コンピュータ・ソフトウエア解析システムを構成するクライアント・コンピュータも提供している。すなわち,このクライアント・コンピュータは,解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段,上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段,上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信する受信手段,および上記受信手段によって受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する復元手段を備えている。
【0013】
さらに,この発明は,上記クライアント・コンピュータに適した動作制御方法も提供している。すなわち,難読化手段が,解析対象であるコンピュータ・ソフトウエアを難読化し,難読化済コンピュータ・ソフトウエア送信手段が,上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信し,受信手段が,上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信し,復元手段が,上記受信手段によって受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元するものである。
【0014】
この発明は,上記クライアント・コンピュータの動作を制御するプログラムも提供している。そのようなプログラムを格納した記録媒体を提供するようにしてもよい。
【0015】
この発明によると,クライアント・コンピュータにおいて解析対象であるコンピュータ・ソフトウエアが難読化される。難読化されたコンピュータ・ソフトウエアはクライアント・コンピュータからサーバ・コンピュータに送信される。クライアント・コンピュータからサーバ・コンピュータに難読化されたコンピュータ・ソフトウエアが送信されると,サーバ・コンピュータにおいて,難読化されているコンピュータ・ソフトウエアの品質が解析され,難読化されている解析結果データが生成される。難読化されている解析結果データは,サーバ・コンピュータからクライアント・コンピュータに送信される。難読化されている解析結果データの少なくとも一部が難読化前の解析結果データに復元される。
【0016】
サーバ・コンピュータにおいて得られる解析結果データは難読化されているので,サーバ・コンピュータ側にコンピュータ・ソフトウエアの内容が知られてしまうことを未然に防止できる。コンピュータ・ソフトウエアの秘匿性を維持できる。コンピュータ・ソフトウエアの解析はサーバ・コンピュータにおいて行われるので,クライアント・コンピュータにコンピュータ・ソフトウエアの解析手段の機能を持たせる必要がない。コンピュータ・ソフトウエアの秘匿性を維持するために,サーバ・コンピュータに特別の構成を持たせる必要もない。クライアント・コンピュータは,コンピュータ・ソフトウエアを難読化しているので,難読化されている解析結果データの復元も比較的容易にできる。解析は,サーバ・コンピュータにおいて行われているので,解析内容の追加,変更はサーバ・コンピュータのみで対応可能となる。コンピュータ・ソフトウエアが難読化されている状態で解析されるので,解析手段の追加,変更をしてもコンピュータ・ソフトウエアの秘匿化を維持できる。既存の様々なソフトウエア難読化手段と組み合わせることもできる。
【0017】
上記クライアント・コンピュータは,上記クライアント・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを出力する出力手段をさらに備えてもよい。
【0018】
上記クライアント・コンピュータは,上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段における難読化済コンピュータ・ソフトウエアの解析を制御する解析制御データを上記サーバ・コンピュータに送信する解析制御データ送信手段をさらに備えてもよい。この場合,上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段は,上記クライアント・コンピュータの上記解析制御データ送信手段から送信された解析制御データ利用して難読化済コンピュータ・ソフトウエアを解析するものとなろう。
【0019】
上記クライアント・コンピュータは,上記解析制御データのうち難読化が必要な上記解析制御データを指定する指定手段,上記指定手段によって指定された上記解析制御データを難読化する解析制御データ難読化手段をさらに備えてもよい。この場合,上記クライアント・コンピュータの上記解析制御データ送信手段は,たとえば,上記解析制御データ難読化手段によって難読化された上記解析制御データと難読化されていない上記解析制御データとのうち少なくとも一方を上記サーバ・コンピュータに送信するものである。
【0020】
クライアント・コンピュータが受信した解析結果データを制御する解析結果制御データを入力する解析結果制御データ入力手段,および上記難読化された解析結果データまたは上記復元手段によって復元された解析結果データを,上記解析結果制御データ入力手段から入力された解析結果制御データにもとづいて制御する解析結果データ制御手段をさらに備えてもよい。
【0021】
上記クライアント・コンピュータは,複数の難読化方法のうち,一の難読化方法を選択する難読化方法選択手段をさらに備えてもよい。この場合,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,たとえば,上記難読化方法選択手段によって選択された難読化方法によってコンピュータ・ソフトウエアを難読化するものである。
【0022】
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,コンピュータ・ソフトウエアの一部を削除し,または無関係なソフトウエアを混入させて,残りの部分を難読化するものでもよい。
【0023】
上記クライアント・コンピュータは,上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段によって解析する項目を指定する解析項目指定手段,上記解析項目指定手段によって指定された解析項目に対応した難読化方法を,複数の難読化方法の中から決定する難読化方法決定手段,および上記難読化方法決定手段によって決定された難読化方法にもとづく難読化が行われる場合にコンピュータ・ソフトウエアのうち欠損可能な一部を決定する欠損部分決定手段をさらに備えてもよい。この場合,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,たとえば,上記欠損部分決定手段によって決定された一部を,コンピュータ・ソフトウエアから削除して残りの部分を難読化するものである。
【0024】
解析項目および難読化方法のそれぞれに対応して,コンピュータ・ソフトウエアのうち欠損可能な部分が規定されている場合には,上記難読化方法決定手段は,たとえば,上記解析項目指定手段によって指定された解析項目に対応して規定されている,コンピュータ・ソフトウエアのうち欠損可能な部分に対応する難読化方法を決定するものとなろう。
【0025】
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,たとえば,同一のコンピュータ・ソフトウエアを難読化すると同一の難読化済コンピュータ・ソフトウエアを出力するものである。
【0026】
上記サーバ・コンピュータは,上記コンピュータ・ソフトウエア解析手段において復元された解析結果データを,コンピュータ・ソフトウエアに対応して記憶する解析結果データ記憶手段,および上記コンピュータ・ソフトウエア解析手段において上記コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析して生成された解析結果データと,生成された解析結果データのコンピュータ・ソフトウエアに対応して上記解析結果データ記憶手段に記憶されている解析結果データと,を比較して比較結果を出力する比較手段をさらに備えてもよい。
【0027】
上記クライアント・コンピュータは,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法を,コンピュータ・ソフトウエアに対応して記憶する難読化方法記憶手段をさらに備えてもよい。この場合,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,たとえば,新たなコンピュータ・ソフトウエアについて難読化する際に,そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている難読化方法を用いてコンピュータ・ソフトウエアを難読化するものである。
【0028】
上記クライアント・コンピュータの難読化方法記憶手段は,たとえば,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法および解析項目を,コンピュータ・ソフトウエアに対応して記憶している。この場合,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,新たなコンピュータ・ソフトウエアについて難読化する際に,そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている解析項目を上記サーバ・コンピュータに送信する解析項目送信手段をさらに備えてもよい。
【図面の簡単な説明】
【0029】
【図1】コンピュータ・ソフトウエア解析システムの概要である。
【図2】クライアント・コンピュータの電気的構成を示すブロック図である。
【図3】クライアント・コンピュータの処理手順を示すフローチャートである。
【図4】サーバ・コンピュータの処理手順を示すフローチャートである。
【図5】オリジナル・コンピュータ・ソフトウエアの一例である。
【図6】難読化済コンピュータ・ソフトウエアの一例である。
【図7】復元テーブルの一例である。
【図8】難読化済解析結果データの一例である。
【図9】復元済解析結果データの一例である。
【図10】クライアント・コンピュータの処理手順の一部を示すフローチャートである。
【図11】サーバ・コンピュータの処理手順を示すフローチャートである。
【図12】オリジナル・コンピュータ・ソフトウエアの一例である。
【図13】解析制御データ難読化テーブルの一例である。
【図14】解析制御データの一例である。
【図15】難読化済コンピュータ・ソフトウエアの一例である。
【図16】解析制御データの一例である。
【図17】プログラム要素/解析制御データの一例である。
【図18】解析結果の一例である。
【図19】解析結果の一例である。
【図20】クライアント・コンピュータの処理手順を示すフローチャートである。
【図21】クライアント・コンピュータの処理手順を示すフローチャートである。
【図22】オリジナル・コンピュータ・ソフトウエアの一例である。
【図23】解析項目リストの一例である。
【図24】難読化方法リストの一例である。
【図25】難読化済コンピュータ・ソフトウエアの一例である。
【図26】難読化済コンピュータ・ソフトウエアの一例である。
【図27】難読化済コンピュータ・ソフトウエアの一例である。
【図28】解析結果の一例である。
【図29】解析結果の一例である。
【図30】難読化方法決定処理手順を示すフローチャートである。
【図31】難読化方法/削除項目特定テーブルの一例である。
【図32】解析項目/欠損項目特定テーブルの一例である。
【図33】難読化方法決定処理手順を示すフローチャートである。
【図34】解析項目と難読化方法との対応関係を示している。
【図35】クライアント・コンピュータの処理手順の一部を示すフローチャートである。
【図36】サーバ・コンピュータの処理手順を示すフローチャートである。
【図37】ソフトウエア解析設定履歴データの一例である。
【図38】過去ソフトウエア履歴データの一例である。
【図39】解析比較データの一例である。
【実施例】
【0030】
図1は,この発明の実施例を示すもので,コンピュータ・ソフトウエア解析システムを示している。
【0031】
コンピュータ・ソフトウエア解析システムには,インターネット(インターネットに限らない)などのようなネットワークを介して互いに通信可能なクライアント・コンピュータ1およびサーバ・コンピュータ20が含まれている。
【0032】
図2は,クライアント・コンピュータ1の電気的構成を示すブロック図である。サーバ・コンピュータ20の電気的構成もクライアント・コンピュータ1の電気的構成とほぼ同じである。
【0033】
クライアント・コンピュータ1の全体の動作は,CPU2によって統括される。
【0034】
クライアント・コンピュータ1には,表示装置3,所定のデータを記憶するメモリ4,サーバ・コンピュータ20と通信するための通信装置5,キーボードなどの入力装置6,CD-ROMドライブ7,ハードディスク10およびハードディスク10にアクセスするためのハードディスク・ドライブ9が含まれている。
【0035】
CD-ROMドライブ7に,CD-ROM8が装填されることにより,CD-ROM8に記録されているデータ,コンピュータ・ソフトウエアなどが読み取られる。CD-ROM8には,後述する動作を制御する制御プログラムが格納されており,その制御プログラムがクライアント・コンピュータ1にインストールされることにより,後述する動作が行われる。もっとも,制御プログラムはCD-ROM8に格納されていずに,他の記録媒体に記録されていてもよい。インターネットを介して送信された制御プログラムを,通信装置5を用いて受信し,クライアント・コンピュータ1に装填されてもよい。
【0036】
図3はクライアント・コンピュータ1の処理手順を示すフローチャート,図4はサーバ・コンピュータ20の処理手順を示すフローチャートである。
【0037】
この実施例は,コンピュータ・ソフトウエア(ソース・コード)の行数,凝集度,複雑度,結合度,などの品質を解析するもので,その品質の解析はサーバ・コンピュータ20において行われる。解析結果がサーバ・コンピュータ20に把握されないようにクライアント・コンピュータ1においてコンピュータ・ソフトウエアの難読化が行われ,難読化されたコンピュータ・ソフトウエアがクライアント・コンピュータ1からサーバ・コンピュータ20に送信される。
【0038】
まず,解析対象となるオリジナル・コンピュータ・ソフトウエア(ソース・コード)がクライアント・コンピュータ1に入力される(図3ステップ31)。解析対象となるコンピュータ・ソフトウエアは,上述したように,CD-ROM8に格納されており,CD-ROM8から読み取ることによりクライアント・コンピュータ1に入力してもよいし,インターネットを介して送信されたコンピュータ・ソフトウエアを,通信装置5を用いて受信してクライアント・コンピュータ1に入力してもよい。
【0039】
図5は,オリジナル・コンピュータ・ソフトウエアの一例である。
【0040】
図5において,第1行はクラスを宣言しており,第2行は関数の一例である。
【0041】
解析対象となるオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ1に入力すると,そのコンピュータ・ソフトウエアが難読化される(図3ステップ32)。難読化は,公知の手法を利用でき,たとえば,コンピュータ・ソフトウエア中に用いられる名称がランダムな文字列に置き換えられる。難読化されたコンピュータ・ソフトウエアを難読化前のコンピュータ・ソフトウエアに復元するための復元テーブルも生成される(図3ステップ32)。
【0042】
図6は,難読化されたコンピュータ・ソフトウエアの一例である。
【0043】
図5に示すオリジナル・コンピュータ・ソフトウエアと図6に示す難読化されたコンピュータ・ソフトウエアとを比較すると明らかなように,図5に示すオリジナル・コンピュータ・ソフトウエアの第1行目の「Shape」という名称が,図6に示す難読化済コンピュータ・ソフトウエアでは「Za112ay」という文字列に変換されている。同様に,図5に示すオリジナル・ソフトウエアの第2行目の「Result Movepoint (int x, int y)」という関数が,図6に示す難読化済コンピュータ・ソフトウエアでは「kop89 S5df5f41 (int sdfj, int js11)」という文字列に変換されている。
【0044】
図7は,復元テーブルの一例である。
【0045】
この復元テーブルは,図5に示すオリジナル・コンピュータ・ソフトウエアと図6に示す難読化済コンピュータ・ソフトウエアとを比較することにより生成できる。
【0046】
復元テーブルの左側の列は,図5に示すオリジナル・コンピュータ・ソフトウエアに含まれているプログラム要素を示している。復元テーブルの右側の列は,図6に示す難読化済コンピュータ・ソフトウエアに含まれるプログラム要素である。復元テーブルの左側の列の文字列と復元テーブルの右側の文字列とを比較することにより,難読化前後のプログラム要素が分かる。復元テーブルを用いて,難読化されたコンピュータ・ソフトウエアを難読化前のオリジナル・コンピュータ・ソフトウエアに復元できることは理解できよう。
【0047】
オリジナル・コンピュータ・ソフトウエアが難読化されると,図6に示す難読化済コンピュータ・ソフトウエアが表示装置3の表示画面に表示される(図3ステップ33)。表示画面に表示された難読化済コンピュータ・ソフトウエアを,ユーザが確認すると,ユーザによって入力装置6から送信指令が入力される。すると,難読化済コンピュータ・ソフトウエアがクライアント・コンピュータ1からサーバ・コンピュータ20に送信される(図3ステップ34)。コンピュータ・ソフトウエアが難読化されていることをユーザが確認した後に,サーバ・コンピュータ20に難読化済コンピュータ・ソフトウエアに送信できる。
【0048】
クライアント・コンピュータ1から送信された難読化済コンピュータ・ソフトウエアがサーバ・コンピュータ20において受信されると(図4ステップ41),受信した難読化済コンピュータ・ソフトウエアの品質解析処理が行われる(図4ステップ42)。品質解析処理は,公知の手法を用いることができる。品質解析処理により,たとえば,難読化済コンピュータ・ソフトウエアの複雑度を表す解析結果データが得られる。難読化済コンピュータ・ソフトウエアについて品質解析処理が行われているので,解析結果データも難読化されているものとなる。
【0049】
図8は,難読化済解析結果データ・テーブルの一例である。
【0050】
難読化済解析結果データ・テーブルの左側の列は,難読化済コンピュータ・ソフトウエアのプログラム要素である。難読化済解析結果データ・テーブルの右側の列は,解析結果(複雑度)である。難読化済解析結果データ・テーブルから,「Za112ay」というプログラム要素の複雑度が24であり,「kop89 S5df5f41 (int sdfj, int js11)」というプログラム要素の複雑度が7であることが分かる。
【0051】
難読化済コンピュータ・ソフトウエアについて品質解析が行われているから,解析結果がどのようなプログラム要素について行われたものか分からず,コンピュータ・ソフトウエアの秘匿性が確保される。
【0052】
難読化済解析結果データがサーバ・コンピュータ20からクライアント・コンピュータ1に送信される(図4ステップ43)。
【0053】
サーバ・コンピュータ20から送信された難読化済解析結果データがクライアント・コンピュータ1において受信されると(図3ステップ36),復元テーブル(図7参照)を用いて難読化済解析結果データの少なくとも一部が復元される(図3ステップ37)。
【0054】
図9は,復元された解析結果データを示す解析結果データ・テーブルの一例である。
【0055】
解析結果データ・テーブルの左側の列には,復元されたプログラム要素が格納されている。解析結果データ・テーブルの右側の列には,そのプログラム要素に対応して解析結果である複雑度が格納されている。プログラム要素は復元されているので,プログラム要素について複雑度が認識できる。
【0056】
復元済の解析結果データが表示画面の表示などにより,クライアント・コンピュータ1から出力される(図3ステップ38)。
【0057】
図10から図19は,他の実施例を示している。この実施例は,サーバ・コンピュータ20におけるコンピュータ・ソフトウエアの品質解析を制御する解析制御データがクライアント・コンピュータ1からサーバ・コンピュータ20に送信され,その解析制御データにもとづいてサーバ・コンピュータ20においてコンピュータ・ソフトウエアの品質解析が制御されるものである。
【0058】
図10は,クライアント・コンピュータ1の処理手順を示すフローチャート,図11は,サーバ・コンピュータ20の処理手順を示すフローチャートである。
【0059】
クライアント・コンピュータ1にオリジナル・コンピュータ・ソフトウエアが入力する(図10ステップ51)。
【0060】
図12は,オリジナル・コンピュータ・ソフトウエアの一例である。このようなオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ1に入力する。図12に示されているオリジナル・コンピュータ・ソフトウエアは一部が省略されているのはいうまでもない。
【0061】
つづいて,クライアント・コンピュータ1のユーザは,解析制御データをクライアント・コンピュータ1に入力する(図10ステップ52)。解析制御データは,サーバ・コンピュータ20において行われる品質解析を制御するものである。解析制御データには,コンピュータ・ソフトウエアに含まれるプログラム要素の行数などの解析項目,プログラム要素のグループ化などが含まれる。つづいて,入力された解析制御データについて難読化の要否の識別処理が行われる(図10ステップ53)。
【0062】
解析制御データについての難読化の要否識別処理は,解析制御データ難読化識別テーブルが用いられる。
【0063】
図13は,解析制御データ難読化識別テーブルの一例である。
【0064】
解析制御データ難読化識別テーブルの左側の列には解析制御データ名称が格納され,右側の列には難読化の要否が格納されている。左側の列には「解析項目」,「解析グループ」および「解析グループ構成」が示されているが,その他の解析制御データについても難読化の要否が格納されているのはいうまでもない。「解析項目」は,解析対象を指示するもので,「解析グループ」は,「解析グループ構成」のプログラム要素を「解析グループ」のグループにするようにコンピュータ・ソフトウエアを制御するものである。
【0065】
図14は,難読化前解析制御データ・テーブルの一例である。
【0066】
「解析項目」として「行数」が指定され,「解析グループ」として「ConcreteShape」が指定され,「解析グループ構成」として「Circle」および「Rectangle」が指定されたものとする。図13に示す解析制御データ難読化識別テーブルを参照すると,「解析項目」は難読化が不要であり,「解析グループ」および「解析グループ構成」は難読化が必要であるから,「行数」は難読化が不要であり,「Circle」および「Rectangle」は難読化が必要であると判断される。
【0067】
解析制御データの難読化の要否識別処理が行われると,オリジナル・コンピュータ・ソフトウエアの難読化および解析制御データのうち難読化が必要と識別された解析制御データが同じ処理により難読化が行われる(図10ステップ54)。復元テーブルも生成されるのはいうまでもない。
【0068】
図15は,難読化済コンピュータ・ソフトウエアの一例である。
【0069】
図12に示すオリジナル・コンピュータ・ソフトウエアが難読化されることにより,オリジナル・コンピュータ・ソフトウエアの「Shape」,「Circle」および「Rectangle」が,図15に示す難読化済コンピュータ・ソフトウエアの「Za112ay」,「jkidLL」および「654skJI」に変更される。
【0070】
図16は,一部が難読化されている難読化済解析制御データ・テーブルの一例である。
【0071】
解析制御データが難読化されているので,解析制御データがインターネットを介してクライアント・コンピュータ1からサーバ・コンピュータ20に送信され,第三者に傍受されても解析制御データの秘匿性を保つことができる。
【0072】
図17は,復元テーブルの一例である。
【0073】
図12に示すオリジナル・コンピュータ・ソフトウエアと図15に示す難読化済コンピュータ・ソフトウエアとを比較し,かつ図14に示す難読化前解析制御データ・テーブルの制御データ内容と図16に示す難読化済解析制御データ・テーブルの制御データ内容とを比較することにより,上述のように復元テーブルが生成される。
【0074】
図17の復元テーブルの左側の列は,オリジナル・コンピュータ・ソフトウエアまたは解析制御データのプログラム要素であり,図17の復元テーブルの右側の列は難読化済コンピュータ・ソフトウエアまたは難読化済解析制御データのプログラム要素である。
【0075】
図17に示す復元テーブルを利用することにより難読化されているコンピュータ・ソフトウエアおよび難読化されている解析制御データを難読化前のデータに復元できるようになる。
【0076】
つづいて,難読化済コンピュータ・ソフトウエアおよび解析制御データ(難読化されたもの,難読化されていないものを含む)が表示装置3の表示画面に表示され(図10ステップ55),ユーザからの送信指令に応じて難読化済コンピュータ・ソフトウエアおよび解析制御データがクライアント・コンピュータ1からサーバ・コンピュータ20に送信される(図10ステップ56でYES,ステップ57)。
【0077】
クライアント・コンピュータ1から送信された難読化済コンピュータ・ソフトウエアおよび解析制御データがサーバ・コンピュータ20において受信されると(図11ステップ61),解析制御データにもとづいて難読化済コンピュータ・ソフトウエアの品質解析が行われる(図11ステップ62)。
【0078】
難読化済コンピュータ・ソフトウエアの品質解析が行われることにより,上述したように,難読化されている解析結果データが得られる。難読化されている解析結果データがサーバ・コンピュータ20からクライアント・コンピュータ1に送信される(ステップ63)。
【0079】
図18は,難読化されている解析結果データの一例である。
【0080】
図18の左側の列は難読化されているプログラム要素または一部難読化されている解析制御データであり,右側の列は解析結果を示している。
【0081】
このように難読化されている解析結果データが,上述した復元データを用いて復元される。
【0082】
図19は,復元された解析結果データの一例である。
【0083】
図19の左側の列は難読化が復元されたプログラム要素および解析制御データであり,右側の列は解析結果を示している。
【0084】
このように,サーバ・コンピュータ20におけるコンピュータ・ソフトウエアの解析をクライアント・コンピュータ1から制御できる。しかも,クライアント・コンピュータ1からサーバ・コンピュータ20に送信される解析制御データは難読化されているので,第三者に対して秘匿化を維持できる。
【0085】
図20から図34は,他の実施例を示している。
【0086】
図20および図21は,クライアント・コンピュータ1の処理手順を示すフローチャートである。
【0087】
上述したのと同様に,クライアント・コンピュータ1にオリジナル・コンピュータ・ソフトウエアが入力される(図20ステップ71)。
【0088】
図22は,オリジナル・コンピュータ・ソフトウエアの一例である。
【0089】
図22に示したオリジナル・コンピュータ・ソフトウエアは難読化されていないので,その内容を把握できる。図22においても,一部が省略されている。
【0090】
クライアント・コンピュータ1において,解析項目リストから解析項目が選択され(図20ステップ72),難読化方法リストから難読化方法が決定される(ステップ73)。
【0091】
図23は,解析項目リストの一例である。
【0092】
解析項目リストは,サーバ・コンピュータ20において品質解析を行う項目がリスト化されているものである。解析項目リストには行数および複雑度が格納されている。
【0093】
図24は,難読化方法リストの一例である。
【0094】
難読化方法リストには,難読化方法として,「名前変換」,「名前変換+処理空化」(名前変換と処理空化との両方の処理が行われる)および「名前変換+処理削除」(名前変換と処理削除との両方の処理が行われる)が格納されている。
【0095】
これらの解析項目リストおよび難読化方法リストが利用されて難読化方法が決定されるが,その詳細については後述する。
【0096】
難読化方法が決定されると,その決定された難読化方法にしたがって,入力されたオリジナル・コンピュータ・ソフトウエアが難読化される(図20ステップ74)。この場合も復元テーブルが生成される。
【0097】
図25から図27は,難読化されたコンピュータ・ソフトウエアの一例である。
【0098】
図25は,名前変換により難読化されたコンピュータ・ソフトウエアの一例である。
【0099】
オリジナル・コンピュータ・ソフトウエアの「Shape」,「Result Movepoint (int x,int y)」,「int r2=x*x*+y*y」および「if (r2==0)」が,「Za112ay」,「kop89 S5df5f41(int sdfj, int js11」,「int jkio99=sdfj*sdfj+js11*js11」および「if(jkio99==0)」に変換されている。
【0100】
図26は,名前変換と処理空化により難読化されたコンピュータ・ソフトウエアの一例である。
【0101】
オリジナル・コンピュータ・ソフトウエアの「Shape」および「Result Movepoint (int x,int y)」が,「Za112ay」および「kop89 S5df5f41(int sdfj, int js11」に変換されている。また,「int r2=x*x*+y*y」および「if (r2==0)」のそれぞれの処理内容が空化されている。空化のために処理内容は除去されているが,行数は変わらない。空化によりセミコロン「;」が追加されているが,セミコロンの代わりに,たとえば,「if(false);」などのように処理に無関係なソフトウエアを追加することにより難読化してもよい。
【0102】
図27は,名前変換と処理削除により難読化されたコンピュータ・ソフトウエアの一例である。
【0103】
オリジナル・コンピュータ・ソフトウエアの「Shape」および「Result Movepoint (int x,int y)」が,「Za112ay」および「kop89 S5df5f41(int sdfj, int js11」に変換されている。また,「int r2=x*x*+y*y」および「if (r2==0)」のそれぞれの処理内容が削除されている。
【0104】
難読化されたコンピュータ・ソフトウエアがクライアント・コンピュータ1からサーバ・コンピュータ20に送信されると,上述したように,サーバ・コンピュータ20において,難読化済コンピュータ・ソフトウエアの品質解析が行われ,難読化済解析結果データが得られる。得られた難読化済解析結果データは,サーバ・コンピュータ20からクライアント・コンピュータ1に送信される。
【0105】
サーバ・コンピュータ20から送信された難読化済解析結果データがクライアント・コンピュータ1において受信されると(図21ステップ78),難読化済解析結果データが復元され,解析結果データが得られる。
【0106】
図28は,復元された解析結果データの一例である。
【0107】
解析項目として,解析項目リストに含まれているように行数と複雑度とがあり,それらの解析項目について品質が解析されている。たとえば,行数は37,複雑度は5である。
【0108】
つづいて,上述したように解析項目選択処理(図20ステップ72)によって選択されていない解析項目のデータが解析データから削除される(図21ステップ80)。
【0109】
図29は,選択されていない項目である行数についてのデータが削除されている解析結果データの一例である。
【0110】
このように,解析項目として,複雑度が選択され,行数が選択されていないと解析データから行数のデータが削除される。
【0111】
図30は,難度化方法決定処理手順(図20ステップ73の処理手順)を示すフローチャートの一例である。
【0112】
上述したように,図24に示す難読化方法リストが読み取られ(ステップ91),難読化方法/削除項目特定テーブルが読み取られる(ステップ92)。
【0113】
図31は,難読化方法/削除項目特定テーブルの一例である。
【0114】
難読化方法/削除項目特定テーブルは,コンピュータ・ソフトウエアのプログラム要素のうち欠損するものと欠損しないものとを難読化方法に対応して格納するものである。たとえば,難読化方法が「名前変換」の場合には,プログラム要素の名前は欠損するが,条件文および処理数は欠損しない。難読化方法が「名前変換+処理空化」の場合には,プログラム要素の名前および条件文は欠損するが,処理数は欠損しない。難読化方法が「名前変換+処理削除」の場合には,プログラム要素の名前および処理数は欠損するが,条件文は欠損しない。
【0115】
難読化方法/削除項目特定テーブルが読み取られると,解析項目削除可能項目テーブルが読み取られる(図30ステップ92)。
【0116】
図32は,難読化方法/削除項目特定テーブルの一例である。
【0117】
難読化方法/削除項目特定テーブルは,コンピュータ・ソフトウエアのプログラム要素のうち欠損するものと欠損しないものとを解析項目に対応して格納するものである。たとえば,解析項目が行数の場合には,プログラム要素の名前および条件文は欠損するが,処理数は欠損しない。解析項目が複雑度の場合には,プログラム要素の名前および処理数は欠損するが,条件文は欠損しない。
【0118】
このようにして,テーブルが読み取られると,選択された解析項目(図20ステップ72)に対応する欠損可能なプログラム要素が,図32に示す解析項目/欠損可能項目特定テーブルから分かり,欠損可能なプログラム要素に対応した難読化方法が,図31に示す難読化方法/削除項目テーブルから決定される。たとえば,解析項目として「行数」が選択されると,図32から名前と条件文とが欠損可能なので,これらのプログラム要素が欠損可能な難読化方法として「名前変換+処理空化」が図31から決定される。
【0119】
図33は,難読化方法決定処理手順の他の処理手順を示すフローチャートである。
【0120】
上述したのと同様に,図24に示す難読化方法リストが読み取られる(ステップ101)。つづいて,解析項目/難読化方法選択テーブルが読み取られる(ステップ102)。
【0121】
図34は,解析項目/難読化方法選択テーブルの一例である。
【0122】
解析項目/難読化方法選択テーブルは,解析項目に対応して難読化方法が格納されている。たとえば,解析項目が行数の場合には,「名前変換+処理空化」と「名前変換」とが対応して格納され,解析項目が複雑度の場合には,「名前変換+処理削除」と「名前変換」とが対応して格納されている。
【0123】
解析項目/難読化方法選択テーブルが読み取られると,その読み取られたテーブルから難読化方法が決定される(ステップ103)。たとえば,解析項目として行数が選択されていると,「名前変換+処理空化」と「名前変換」とが難読化方法として決定され,解析項目として複雑度が選択されていると「名前変換+処理削除」と「名前変換」とが難読化方法として決定される。解析項目として,行数および複雑度とが選択されていると,「名前変換」が難読化方法として決定される。
【0124】
図35から図39は,さらに他の実施例を示している。この実施例は,過去の履歴を利用して難読化方法などを決定するものである。
【0125】
図35は,クライアント・コンピュータ1の処理手順を示すフローチャート,図36は,サーバ・コンピュータ20の処理手順を示すフローチャートである。
【0126】
まず,クライアント・コンピュータ1に過去のソフトウエア解析設定履歴データが記憶されているかどうかが確認される(図35ステップ111)。
【0127】
図37は,ソフトウエア解析設定履歴データが格納されているテーブルの一例である。
【0128】
ソフトウエア解析設定履歴データは,上述した難読化方法の決定などの過去の設定状況を示すものである。第1列,第2列および第3列には,それぞれソース・コード(ソフトウエア)の名称,難読化方法のパターンおよび解析項目が格納されている。これらのデータを確認することにより,過去にどのようなソフトウエアについて,どのような難読化方法が行われ,どのような解析項目について品質解析が行われたかがわかる。たとえば,第1行から,ソース・コードの名称が「ClassA」について,パターンII(「名前変換+処理空化」)の難読化方法が行数について行われたことがわかる。過去の難度化処理と同一の難度化処理を行うことができる。
【0129】
クライアント・コンピュータ1にソフトウエア解析設定履歴データが格納されていなければ(図35ステップ111でNO),クライアント・コンピュータ1のユーザによってソフトウエア解析設定処理が行われる(図35ステップ112)。上述したようにして解析項目および難読化方法が設定される。すると,設定された情報がソフトウエア解析設定履歴データとして,記憶される(図35ステップ113)。クライアント・コンピュータ1にソフトウエア解析設定履歴データが格納されていれば(図35ステップ111でYES),ステップ112および113の処理はスキップされる。
【0130】
つづいて,ユーザによって解析対象となるオリジナル・コンピュータ・ソフトウエアが選択され(図35ステップ114),選択されたオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ1に入力する(図35ステップ115)。
【0131】
上述したように,クライアント・コンピュータ1に入力したオリジナル・コンピュータ・ソフトウエアが難読化され,かつ復元テーブルが生成される(図35ステップ116)。どの難読化方法で行うかは,図37に示すソフトウエア解析設定履歴データにもとづいて決定される。上述したように,入力したソース・コード(オリジナル・コンピュータ・ソフトウエア)が「ClassA」であるとすると,パターンII(「名前変換+処理空化」)の難読化方法で難読化処理が行われる。
【0132】
難読化済みコンピュータ・ソフトウエアが表示され(図35ステップ117),クライアント・コンピュータ1に送信指令が与えられることにより,難読化済コンピュータ・ソフトウエアがクライアント・コンピュータ1からサーバ・コンピュータ20に送信される(図35ステップ118でYES,ステップ119)。
【0133】
クライアント・コンピュータ1から送信された難読化済コンピュータ・ソフトウエアがサーバ・コンピュータ20において受信されると(図36ステップ121),サーバ・コンピュータ20において過去ソフトウエア履歴データが検索される(図36ステップ122)。過去ソフトウエア履歴データは,サーバ・コンピュータ20において過去に行われた品質解析の結果を表わすものである。
【0134】
図38は,過去ソフトウエア履歴データが格納されているテーブルの一例である。
【0135】
ソース・コード名に対応して,過去の品質解析の結果である行数と複雑度とが格納されている。上述したように,コンピュータ・ソフトウエアは難読化されているので,その名称(ソース・コード名)の難読化される。たとえば,ソース・コード名が「ClassA」のコンピュータ・ソフトウエアが難読化されることにより,ソース・コード名は,「nrBCZ12」に変更される。図38においては,難読化されたソース・コード名に対応して行数と複雑度とがテーブルに格納されている。
【0136】
つづいて,難読化済コンピュータ・ソフトウエアの品質解析が行われる(図36ステップ123)。品質解析により得られた解析結果データは過去ソフトウエア履歴データが格納されているテーブルに記憶される(図36ステップ124)。すでに品質解析が行われた難読化済コンピュータ・ソフトウエアについての解析結果データが過去ソフトウエア履歴データ・テーブルに格納されている場合には,その解析結果データに上書きされる。これにより過去ソフトウエア履歴データが更新される。もっとも,解析結果データを上書きせずに時系列的に記憶するようにしてもよい。過去に行われた解析結果データと,新たに行われた解析結果データとが比較されることにより解析結果の変更の程度が分る。
【0137】
図39は,過去に行われた解析結果データと,新たに行われた解析結果データとの比較を表わす比較データを格納されている比較データ・テーブルの一例である。
【0138】
上述したように,過去に行われた解析結果データと,新たに行われた解析結果データとが比較されることにより解析結果の変更の程度が分る。図39においては,過去に行われた行数の解析結果と新たに行われた行数の解析結果の増減および過去に行われた複雑度の解析結果と新たに行われた複雑度の解析結果の増減が格納されている。このように,過去の解析結果との比較結果を得ることができる。
【0139】
難読化されている解析結果データおよび過去の解析結果との比較結果を表わすデータがサーバ・コンピュータ20からクライアント・コンピュータ1に送信される(図36ステップ125)。
【符号の説明】
【0140】
1 クライアント・コンピュータ
2 CPU
8 CD-ROM
20 サーバ・コンピュータ
【技術分野】
【0001】
この発明は,コンピュータ・ソフトウエア解析システムならびにクライアント・コンピュータ,その動作制御方法およびその動作プログラムに関する。
【背景技術】
【0002】
近年,ソフトウエアの解析技術が発達している。たとえば,ソース・コードから品質に関するデータを出力し,品質向上活動に利用するといったものが代表的である。このような技術は,非常に幅が広く,近年のソフトウエア内部品質を重視する風潮から,多様な技術やサービスが発展していくことが予想される。
【0003】
ソフトウエア解析技術においては,ソフトウエア解析自体に非常に大きな計算機資源を要するが,特定のソフトウエアに対して常時稼働させるものではない。また,ソフトウエアを送信する場合,通信データ自体はソース・コード(テキスト・データ)に準じるものであり,画像データや動画データに比べデータ量は少ない。このような特徴からソフトウエア解析は,近年のクラウド化(ネットワーク上の計算機資源の有効活用)トレンドと相性がよい。このために,将来的にはソース・コードをクラウド上のソフトウエア解析システムで解析する用途は広いと考えられる。
【0004】
このようなソフトウエア解析には,クライアントがソース・コードをサーバに送信し,サーバが解析を実施し,解析結果をクライアントに返すもの(特許文献1),クライアントが品質測定データを生成してサーバに送信し,サーバがその品質測定データを元に評価データを生成してクライアントに返信するもの(特許文献2)等がある。
【0005】
一方,ソース・コードの秘匿性を保つ手段として難読化が知られている。この難読化は,第三者によるソフトウエア解析を妨害する目的で,一般には挙動が変わらない範囲でソフトウエアのコードに一種のスクランブルをかけるものである。たとえば,ソース・コード記述ではわかりやすい名前を付ける慣習を逆に利用して,名前をわかりにくいものに置き換えることで解析性を悪化させているものがある(特許文献3)。
【0006】
また,プログラムに含まれる技術的ノウハウの流出を防止するもの(特許文献4),ソフトウエア開発中の規約遵守を監視するの(特許文献5),プログラムの問題点等を洗い出すもの(特許文献6),オブジェクトレベルで隠蔽化できるもの(特許文献7)などもある。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2004-240477号公報
【特許文献2】特開2001-75928号公報
【特許文献3】米国特許6102966号公報
【特許文献4】特開2004-133793号公報
【特許文献5】特開2003-114813号公報
【特許文献6】特開2003-280754号公報
【特許文献7】特開2003-280754号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら,クラウド上にあるサーバにソース・コードを送信することは,公開ネットワーク上にソース・コードを送信することとなる。このために,ソース・コードを暗号化することが考えられるが,解析するサーバはソース・コードを復号するので,サーバにはソース・コードの内容がわかってしまう。特許文献1に記載のものでは,ソース・コードの秘匿性が確保されていない。特許文献2に記載のものでは,クライアントが品質測定機能を有する,クライアントとサーバとの間で特別な交換データ・フォーマットを取り決める必要がある,サーバから返信されたデータを元のソース・コードと詳細に照らすための考慮がない,解析に必要なソフトウエア情報を追加したい場合にクライアントを修正する必要がある,解析に必要なソフトウエア情報を追加した場合にはソース・コードの秘匿性が弱まる等の問題がある。特許文献3に記載のものは,サーバ・クライアント型の解析システムとの連携が考慮されていない,難読化された名前を復元することは考えられていないなどの問題がある。さらに,特許文献4から7に記載のものでも,ソース・コードの秘匿性を維持可能なサーバ・クライアント型の解析システムについては考えられていない。
【0009】
この発明の第1の目的は,ソース・コードの秘匿性を維持可能なサーバ・クライアント型のソフトウエア解析システムを提供することにある。第2の目的は,クライアント・コンピュータに解析手段を持たせる必要を無くすことにある。第3の目的は,クライアント・コンピュータからサーバ・コンピュータにソース・コードを送信するための特別なデータ・フォーマットを取り決める必要を無くすことにある。たとえば,サーバ・コンピュータにソース・コードの秘匿性を実現するために特別なものを不要にすることにあり,サーバ・コンピュータがソース・コードの秘匿性を考慮していないものと組み合わせることができるようにすることにある。第4の目的は,サーバ・コンピュータから返信されたデータと元のソース・コードとを容易に照らし合わせるようにするものである。第5の目的は,解析内容の追加,変更に,ほぼサーバ・コンピュータのみで対応可能にすることにある。第6の目的は,解析手段を追加,変更してもソース・コード秘匿性を維持できるようにすることにある。第7の目的は,既存の様々なソフトウエア難読化手段と容易に組み合わせることができるようにすることにある。
【課題を解決するための手段】
【0010】
この発明は,クライアント・コンピュータとサーバ・コンピュータとを備えたコンピュータ・ソフトウエア解析システムについてのものである。
【0011】
クライアント・コンピュータは,解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段,および上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを上記サーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段を備え,上記サーバ・コンピュータは,上記クライアント・コンピュータの上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析し,難読化されている解析結果データを生成するコンピュータ・ソフトウエア解析手段,および上記コンピュータ・ソフトウエア解析手段によって生成された難読化されている解析結果データを,上記クライアント・コンピュータに送信する解析結果データ送信手段を備えている。上記クライアント・コンピュータは,上記サーバ・コンピュータの上記解析結果データ送信手段から送信された難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する復元手段をさらに備えている。
【0012】
この発明は,上記コンピュータ・ソフトウエア解析システムを構成するクライアント・コンピュータも提供している。すなわち,このクライアント・コンピュータは,解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段,上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段,上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信する受信手段,および上記受信手段によって受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する復元手段を備えている。
【0013】
さらに,この発明は,上記クライアント・コンピュータに適した動作制御方法も提供している。すなわち,難読化手段が,解析対象であるコンピュータ・ソフトウエアを難読化し,難読化済コンピュータ・ソフトウエア送信手段が,上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信し,受信手段が,上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信し,復元手段が,上記受信手段によって受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元するものである。
【0014】
この発明は,上記クライアント・コンピュータの動作を制御するプログラムも提供している。そのようなプログラムを格納した記録媒体を提供するようにしてもよい。
【0015】
この発明によると,クライアント・コンピュータにおいて解析対象であるコンピュータ・ソフトウエアが難読化される。難読化されたコンピュータ・ソフトウエアはクライアント・コンピュータからサーバ・コンピュータに送信される。クライアント・コンピュータからサーバ・コンピュータに難読化されたコンピュータ・ソフトウエアが送信されると,サーバ・コンピュータにおいて,難読化されているコンピュータ・ソフトウエアの品質が解析され,難読化されている解析結果データが生成される。難読化されている解析結果データは,サーバ・コンピュータからクライアント・コンピュータに送信される。難読化されている解析結果データの少なくとも一部が難読化前の解析結果データに復元される。
【0016】
サーバ・コンピュータにおいて得られる解析結果データは難読化されているので,サーバ・コンピュータ側にコンピュータ・ソフトウエアの内容が知られてしまうことを未然に防止できる。コンピュータ・ソフトウエアの秘匿性を維持できる。コンピュータ・ソフトウエアの解析はサーバ・コンピュータにおいて行われるので,クライアント・コンピュータにコンピュータ・ソフトウエアの解析手段の機能を持たせる必要がない。コンピュータ・ソフトウエアの秘匿性を維持するために,サーバ・コンピュータに特別の構成を持たせる必要もない。クライアント・コンピュータは,コンピュータ・ソフトウエアを難読化しているので,難読化されている解析結果データの復元も比較的容易にできる。解析は,サーバ・コンピュータにおいて行われているので,解析内容の追加,変更はサーバ・コンピュータのみで対応可能となる。コンピュータ・ソフトウエアが難読化されている状態で解析されるので,解析手段の追加,変更をしてもコンピュータ・ソフトウエアの秘匿化を維持できる。既存の様々なソフトウエア難読化手段と組み合わせることもできる。
【0017】
上記クライアント・コンピュータは,上記クライアント・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを出力する出力手段をさらに備えてもよい。
【0018】
上記クライアント・コンピュータは,上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段における難読化済コンピュータ・ソフトウエアの解析を制御する解析制御データを上記サーバ・コンピュータに送信する解析制御データ送信手段をさらに備えてもよい。この場合,上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段は,上記クライアント・コンピュータの上記解析制御データ送信手段から送信された解析制御データ利用して難読化済コンピュータ・ソフトウエアを解析するものとなろう。
【0019】
上記クライアント・コンピュータは,上記解析制御データのうち難読化が必要な上記解析制御データを指定する指定手段,上記指定手段によって指定された上記解析制御データを難読化する解析制御データ難読化手段をさらに備えてもよい。この場合,上記クライアント・コンピュータの上記解析制御データ送信手段は,たとえば,上記解析制御データ難読化手段によって難読化された上記解析制御データと難読化されていない上記解析制御データとのうち少なくとも一方を上記サーバ・コンピュータに送信するものである。
【0020】
クライアント・コンピュータが受信した解析結果データを制御する解析結果制御データを入力する解析結果制御データ入力手段,および上記難読化された解析結果データまたは上記復元手段によって復元された解析結果データを,上記解析結果制御データ入力手段から入力された解析結果制御データにもとづいて制御する解析結果データ制御手段をさらに備えてもよい。
【0021】
上記クライアント・コンピュータは,複数の難読化方法のうち,一の難読化方法を選択する難読化方法選択手段をさらに備えてもよい。この場合,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,たとえば,上記難読化方法選択手段によって選択された難読化方法によってコンピュータ・ソフトウエアを難読化するものである。
【0022】
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,コンピュータ・ソフトウエアの一部を削除し,または無関係なソフトウエアを混入させて,残りの部分を難読化するものでもよい。
【0023】
上記クライアント・コンピュータは,上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段によって解析する項目を指定する解析項目指定手段,上記解析項目指定手段によって指定された解析項目に対応した難読化方法を,複数の難読化方法の中から決定する難読化方法決定手段,および上記難読化方法決定手段によって決定された難読化方法にもとづく難読化が行われる場合にコンピュータ・ソフトウエアのうち欠損可能な一部を決定する欠損部分決定手段をさらに備えてもよい。この場合,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,たとえば,上記欠損部分決定手段によって決定された一部を,コンピュータ・ソフトウエアから削除して残りの部分を難読化するものである。
【0024】
解析項目および難読化方法のそれぞれに対応して,コンピュータ・ソフトウエアのうち欠損可能な部分が規定されている場合には,上記難読化方法決定手段は,たとえば,上記解析項目指定手段によって指定された解析項目に対応して規定されている,コンピュータ・ソフトウエアのうち欠損可能な部分に対応する難読化方法を決定するものとなろう。
【0025】
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,たとえば,同一のコンピュータ・ソフトウエアを難読化すると同一の難読化済コンピュータ・ソフトウエアを出力するものである。
【0026】
上記サーバ・コンピュータは,上記コンピュータ・ソフトウエア解析手段において復元された解析結果データを,コンピュータ・ソフトウエアに対応して記憶する解析結果データ記憶手段,および上記コンピュータ・ソフトウエア解析手段において上記コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析して生成された解析結果データと,生成された解析結果データのコンピュータ・ソフトウエアに対応して上記解析結果データ記憶手段に記憶されている解析結果データと,を比較して比較結果を出力する比較手段をさらに備えてもよい。
【0027】
上記クライアント・コンピュータは,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法を,コンピュータ・ソフトウエアに対応して記憶する難読化方法記憶手段をさらに備えてもよい。この場合,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,たとえば,新たなコンピュータ・ソフトウエアについて難読化する際に,そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている難読化方法を用いてコンピュータ・ソフトウエアを難読化するものである。
【0028】
上記クライアント・コンピュータの難読化方法記憶手段は,たとえば,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法および解析項目を,コンピュータ・ソフトウエアに対応して記憶している。この場合,上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,新たなコンピュータ・ソフトウエアについて難読化する際に,そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている解析項目を上記サーバ・コンピュータに送信する解析項目送信手段をさらに備えてもよい。
【図面の簡単な説明】
【0029】
【図1】コンピュータ・ソフトウエア解析システムの概要である。
【図2】クライアント・コンピュータの電気的構成を示すブロック図である。
【図3】クライアント・コンピュータの処理手順を示すフローチャートである。
【図4】サーバ・コンピュータの処理手順を示すフローチャートである。
【図5】オリジナル・コンピュータ・ソフトウエアの一例である。
【図6】難読化済コンピュータ・ソフトウエアの一例である。
【図7】復元テーブルの一例である。
【図8】難読化済解析結果データの一例である。
【図9】復元済解析結果データの一例である。
【図10】クライアント・コンピュータの処理手順の一部を示すフローチャートである。
【図11】サーバ・コンピュータの処理手順を示すフローチャートである。
【図12】オリジナル・コンピュータ・ソフトウエアの一例である。
【図13】解析制御データ難読化テーブルの一例である。
【図14】解析制御データの一例である。
【図15】難読化済コンピュータ・ソフトウエアの一例である。
【図16】解析制御データの一例である。
【図17】プログラム要素/解析制御データの一例である。
【図18】解析結果の一例である。
【図19】解析結果の一例である。
【図20】クライアント・コンピュータの処理手順を示すフローチャートである。
【図21】クライアント・コンピュータの処理手順を示すフローチャートである。
【図22】オリジナル・コンピュータ・ソフトウエアの一例である。
【図23】解析項目リストの一例である。
【図24】難読化方法リストの一例である。
【図25】難読化済コンピュータ・ソフトウエアの一例である。
【図26】難読化済コンピュータ・ソフトウエアの一例である。
【図27】難読化済コンピュータ・ソフトウエアの一例である。
【図28】解析結果の一例である。
【図29】解析結果の一例である。
【図30】難読化方法決定処理手順を示すフローチャートである。
【図31】難読化方法/削除項目特定テーブルの一例である。
【図32】解析項目/欠損項目特定テーブルの一例である。
【図33】難読化方法決定処理手順を示すフローチャートである。
【図34】解析項目と難読化方法との対応関係を示している。
【図35】クライアント・コンピュータの処理手順の一部を示すフローチャートである。
【図36】サーバ・コンピュータの処理手順を示すフローチャートである。
【図37】ソフトウエア解析設定履歴データの一例である。
【図38】過去ソフトウエア履歴データの一例である。
【図39】解析比較データの一例である。
【実施例】
【0030】
図1は,この発明の実施例を示すもので,コンピュータ・ソフトウエア解析システムを示している。
【0031】
コンピュータ・ソフトウエア解析システムには,インターネット(インターネットに限らない)などのようなネットワークを介して互いに通信可能なクライアント・コンピュータ1およびサーバ・コンピュータ20が含まれている。
【0032】
図2は,クライアント・コンピュータ1の電気的構成を示すブロック図である。サーバ・コンピュータ20の電気的構成もクライアント・コンピュータ1の電気的構成とほぼ同じである。
【0033】
クライアント・コンピュータ1の全体の動作は,CPU2によって統括される。
【0034】
クライアント・コンピュータ1には,表示装置3,所定のデータを記憶するメモリ4,サーバ・コンピュータ20と通信するための通信装置5,キーボードなどの入力装置6,CD-ROMドライブ7,ハードディスク10およびハードディスク10にアクセスするためのハードディスク・ドライブ9が含まれている。
【0035】
CD-ROMドライブ7に,CD-ROM8が装填されることにより,CD-ROM8に記録されているデータ,コンピュータ・ソフトウエアなどが読み取られる。CD-ROM8には,後述する動作を制御する制御プログラムが格納されており,その制御プログラムがクライアント・コンピュータ1にインストールされることにより,後述する動作が行われる。もっとも,制御プログラムはCD-ROM8に格納されていずに,他の記録媒体に記録されていてもよい。インターネットを介して送信された制御プログラムを,通信装置5を用いて受信し,クライアント・コンピュータ1に装填されてもよい。
【0036】
図3はクライアント・コンピュータ1の処理手順を示すフローチャート,図4はサーバ・コンピュータ20の処理手順を示すフローチャートである。
【0037】
この実施例は,コンピュータ・ソフトウエア(ソース・コード)の行数,凝集度,複雑度,結合度,などの品質を解析するもので,その品質の解析はサーバ・コンピュータ20において行われる。解析結果がサーバ・コンピュータ20に把握されないようにクライアント・コンピュータ1においてコンピュータ・ソフトウエアの難読化が行われ,難読化されたコンピュータ・ソフトウエアがクライアント・コンピュータ1からサーバ・コンピュータ20に送信される。
【0038】
まず,解析対象となるオリジナル・コンピュータ・ソフトウエア(ソース・コード)がクライアント・コンピュータ1に入力される(図3ステップ31)。解析対象となるコンピュータ・ソフトウエアは,上述したように,CD-ROM8に格納されており,CD-ROM8から読み取ることによりクライアント・コンピュータ1に入力してもよいし,インターネットを介して送信されたコンピュータ・ソフトウエアを,通信装置5を用いて受信してクライアント・コンピュータ1に入力してもよい。
【0039】
図5は,オリジナル・コンピュータ・ソフトウエアの一例である。
【0040】
図5において,第1行はクラスを宣言しており,第2行は関数の一例である。
【0041】
解析対象となるオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ1に入力すると,そのコンピュータ・ソフトウエアが難読化される(図3ステップ32)。難読化は,公知の手法を利用でき,たとえば,コンピュータ・ソフトウエア中に用いられる名称がランダムな文字列に置き換えられる。難読化されたコンピュータ・ソフトウエアを難読化前のコンピュータ・ソフトウエアに復元するための復元テーブルも生成される(図3ステップ32)。
【0042】
図6は,難読化されたコンピュータ・ソフトウエアの一例である。
【0043】
図5に示すオリジナル・コンピュータ・ソフトウエアと図6に示す難読化されたコンピュータ・ソフトウエアとを比較すると明らかなように,図5に示すオリジナル・コンピュータ・ソフトウエアの第1行目の「Shape」という名称が,図6に示す難読化済コンピュータ・ソフトウエアでは「Za112ay」という文字列に変換されている。同様に,図5に示すオリジナル・ソフトウエアの第2行目の「Result Movepoint (int x, int y)」という関数が,図6に示す難読化済コンピュータ・ソフトウエアでは「kop89 S5df5f41 (int sdfj, int js11)」という文字列に変換されている。
【0044】
図7は,復元テーブルの一例である。
【0045】
この復元テーブルは,図5に示すオリジナル・コンピュータ・ソフトウエアと図6に示す難読化済コンピュータ・ソフトウエアとを比較することにより生成できる。
【0046】
復元テーブルの左側の列は,図5に示すオリジナル・コンピュータ・ソフトウエアに含まれているプログラム要素を示している。復元テーブルの右側の列は,図6に示す難読化済コンピュータ・ソフトウエアに含まれるプログラム要素である。復元テーブルの左側の列の文字列と復元テーブルの右側の文字列とを比較することにより,難読化前後のプログラム要素が分かる。復元テーブルを用いて,難読化されたコンピュータ・ソフトウエアを難読化前のオリジナル・コンピュータ・ソフトウエアに復元できることは理解できよう。
【0047】
オリジナル・コンピュータ・ソフトウエアが難読化されると,図6に示す難読化済コンピュータ・ソフトウエアが表示装置3の表示画面に表示される(図3ステップ33)。表示画面に表示された難読化済コンピュータ・ソフトウエアを,ユーザが確認すると,ユーザによって入力装置6から送信指令が入力される。すると,難読化済コンピュータ・ソフトウエアがクライアント・コンピュータ1からサーバ・コンピュータ20に送信される(図3ステップ34)。コンピュータ・ソフトウエアが難読化されていることをユーザが確認した後に,サーバ・コンピュータ20に難読化済コンピュータ・ソフトウエアに送信できる。
【0048】
クライアント・コンピュータ1から送信された難読化済コンピュータ・ソフトウエアがサーバ・コンピュータ20において受信されると(図4ステップ41),受信した難読化済コンピュータ・ソフトウエアの品質解析処理が行われる(図4ステップ42)。品質解析処理は,公知の手法を用いることができる。品質解析処理により,たとえば,難読化済コンピュータ・ソフトウエアの複雑度を表す解析結果データが得られる。難読化済コンピュータ・ソフトウエアについて品質解析処理が行われているので,解析結果データも難読化されているものとなる。
【0049】
図8は,難読化済解析結果データ・テーブルの一例である。
【0050】
難読化済解析結果データ・テーブルの左側の列は,難読化済コンピュータ・ソフトウエアのプログラム要素である。難読化済解析結果データ・テーブルの右側の列は,解析結果(複雑度)である。難読化済解析結果データ・テーブルから,「Za112ay」というプログラム要素の複雑度が24であり,「kop89 S5df5f41 (int sdfj, int js11)」というプログラム要素の複雑度が7であることが分かる。
【0051】
難読化済コンピュータ・ソフトウエアについて品質解析が行われているから,解析結果がどのようなプログラム要素について行われたものか分からず,コンピュータ・ソフトウエアの秘匿性が確保される。
【0052】
難読化済解析結果データがサーバ・コンピュータ20からクライアント・コンピュータ1に送信される(図4ステップ43)。
【0053】
サーバ・コンピュータ20から送信された難読化済解析結果データがクライアント・コンピュータ1において受信されると(図3ステップ36),復元テーブル(図7参照)を用いて難読化済解析結果データの少なくとも一部が復元される(図3ステップ37)。
【0054】
図9は,復元された解析結果データを示す解析結果データ・テーブルの一例である。
【0055】
解析結果データ・テーブルの左側の列には,復元されたプログラム要素が格納されている。解析結果データ・テーブルの右側の列には,そのプログラム要素に対応して解析結果である複雑度が格納されている。プログラム要素は復元されているので,プログラム要素について複雑度が認識できる。
【0056】
復元済の解析結果データが表示画面の表示などにより,クライアント・コンピュータ1から出力される(図3ステップ38)。
【0057】
図10から図19は,他の実施例を示している。この実施例は,サーバ・コンピュータ20におけるコンピュータ・ソフトウエアの品質解析を制御する解析制御データがクライアント・コンピュータ1からサーバ・コンピュータ20に送信され,その解析制御データにもとづいてサーバ・コンピュータ20においてコンピュータ・ソフトウエアの品質解析が制御されるものである。
【0058】
図10は,クライアント・コンピュータ1の処理手順を示すフローチャート,図11は,サーバ・コンピュータ20の処理手順を示すフローチャートである。
【0059】
クライアント・コンピュータ1にオリジナル・コンピュータ・ソフトウエアが入力する(図10ステップ51)。
【0060】
図12は,オリジナル・コンピュータ・ソフトウエアの一例である。このようなオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ1に入力する。図12に示されているオリジナル・コンピュータ・ソフトウエアは一部が省略されているのはいうまでもない。
【0061】
つづいて,クライアント・コンピュータ1のユーザは,解析制御データをクライアント・コンピュータ1に入力する(図10ステップ52)。解析制御データは,サーバ・コンピュータ20において行われる品質解析を制御するものである。解析制御データには,コンピュータ・ソフトウエアに含まれるプログラム要素の行数などの解析項目,プログラム要素のグループ化などが含まれる。つづいて,入力された解析制御データについて難読化の要否の識別処理が行われる(図10ステップ53)。
【0062】
解析制御データについての難読化の要否識別処理は,解析制御データ難読化識別テーブルが用いられる。
【0063】
図13は,解析制御データ難読化識別テーブルの一例である。
【0064】
解析制御データ難読化識別テーブルの左側の列には解析制御データ名称が格納され,右側の列には難読化の要否が格納されている。左側の列には「解析項目」,「解析グループ」および「解析グループ構成」が示されているが,その他の解析制御データについても難読化の要否が格納されているのはいうまでもない。「解析項目」は,解析対象を指示するもので,「解析グループ」は,「解析グループ構成」のプログラム要素を「解析グループ」のグループにするようにコンピュータ・ソフトウエアを制御するものである。
【0065】
図14は,難読化前解析制御データ・テーブルの一例である。
【0066】
「解析項目」として「行数」が指定され,「解析グループ」として「ConcreteShape」が指定され,「解析グループ構成」として「Circle」および「Rectangle」が指定されたものとする。図13に示す解析制御データ難読化識別テーブルを参照すると,「解析項目」は難読化が不要であり,「解析グループ」および「解析グループ構成」は難読化が必要であるから,「行数」は難読化が不要であり,「Circle」および「Rectangle」は難読化が必要であると判断される。
【0067】
解析制御データの難読化の要否識別処理が行われると,オリジナル・コンピュータ・ソフトウエアの難読化および解析制御データのうち難読化が必要と識別された解析制御データが同じ処理により難読化が行われる(図10ステップ54)。復元テーブルも生成されるのはいうまでもない。
【0068】
図15は,難読化済コンピュータ・ソフトウエアの一例である。
【0069】
図12に示すオリジナル・コンピュータ・ソフトウエアが難読化されることにより,オリジナル・コンピュータ・ソフトウエアの「Shape」,「Circle」および「Rectangle」が,図15に示す難読化済コンピュータ・ソフトウエアの「Za112ay」,「jkidLL」および「654skJI」に変更される。
【0070】
図16は,一部が難読化されている難読化済解析制御データ・テーブルの一例である。
【0071】
解析制御データが難読化されているので,解析制御データがインターネットを介してクライアント・コンピュータ1からサーバ・コンピュータ20に送信され,第三者に傍受されても解析制御データの秘匿性を保つことができる。
【0072】
図17は,復元テーブルの一例である。
【0073】
図12に示すオリジナル・コンピュータ・ソフトウエアと図15に示す難読化済コンピュータ・ソフトウエアとを比較し,かつ図14に示す難読化前解析制御データ・テーブルの制御データ内容と図16に示す難読化済解析制御データ・テーブルの制御データ内容とを比較することにより,上述のように復元テーブルが生成される。
【0074】
図17の復元テーブルの左側の列は,オリジナル・コンピュータ・ソフトウエアまたは解析制御データのプログラム要素であり,図17の復元テーブルの右側の列は難読化済コンピュータ・ソフトウエアまたは難読化済解析制御データのプログラム要素である。
【0075】
図17に示す復元テーブルを利用することにより難読化されているコンピュータ・ソフトウエアおよび難読化されている解析制御データを難読化前のデータに復元できるようになる。
【0076】
つづいて,難読化済コンピュータ・ソフトウエアおよび解析制御データ(難読化されたもの,難読化されていないものを含む)が表示装置3の表示画面に表示され(図10ステップ55),ユーザからの送信指令に応じて難読化済コンピュータ・ソフトウエアおよび解析制御データがクライアント・コンピュータ1からサーバ・コンピュータ20に送信される(図10ステップ56でYES,ステップ57)。
【0077】
クライアント・コンピュータ1から送信された難読化済コンピュータ・ソフトウエアおよび解析制御データがサーバ・コンピュータ20において受信されると(図11ステップ61),解析制御データにもとづいて難読化済コンピュータ・ソフトウエアの品質解析が行われる(図11ステップ62)。
【0078】
難読化済コンピュータ・ソフトウエアの品質解析が行われることにより,上述したように,難読化されている解析結果データが得られる。難読化されている解析結果データがサーバ・コンピュータ20からクライアント・コンピュータ1に送信される(ステップ63)。
【0079】
図18は,難読化されている解析結果データの一例である。
【0080】
図18の左側の列は難読化されているプログラム要素または一部難読化されている解析制御データであり,右側の列は解析結果を示している。
【0081】
このように難読化されている解析結果データが,上述した復元データを用いて復元される。
【0082】
図19は,復元された解析結果データの一例である。
【0083】
図19の左側の列は難読化が復元されたプログラム要素および解析制御データであり,右側の列は解析結果を示している。
【0084】
このように,サーバ・コンピュータ20におけるコンピュータ・ソフトウエアの解析をクライアント・コンピュータ1から制御できる。しかも,クライアント・コンピュータ1からサーバ・コンピュータ20に送信される解析制御データは難読化されているので,第三者に対して秘匿化を維持できる。
【0085】
図20から図34は,他の実施例を示している。
【0086】
図20および図21は,クライアント・コンピュータ1の処理手順を示すフローチャートである。
【0087】
上述したのと同様に,クライアント・コンピュータ1にオリジナル・コンピュータ・ソフトウエアが入力される(図20ステップ71)。
【0088】
図22は,オリジナル・コンピュータ・ソフトウエアの一例である。
【0089】
図22に示したオリジナル・コンピュータ・ソフトウエアは難読化されていないので,その内容を把握できる。図22においても,一部が省略されている。
【0090】
クライアント・コンピュータ1において,解析項目リストから解析項目が選択され(図20ステップ72),難読化方法リストから難読化方法が決定される(ステップ73)。
【0091】
図23は,解析項目リストの一例である。
【0092】
解析項目リストは,サーバ・コンピュータ20において品質解析を行う項目がリスト化されているものである。解析項目リストには行数および複雑度が格納されている。
【0093】
図24は,難読化方法リストの一例である。
【0094】
難読化方法リストには,難読化方法として,「名前変換」,「名前変換+処理空化」(名前変換と処理空化との両方の処理が行われる)および「名前変換+処理削除」(名前変換と処理削除との両方の処理が行われる)が格納されている。
【0095】
これらの解析項目リストおよび難読化方法リストが利用されて難読化方法が決定されるが,その詳細については後述する。
【0096】
難読化方法が決定されると,その決定された難読化方法にしたがって,入力されたオリジナル・コンピュータ・ソフトウエアが難読化される(図20ステップ74)。この場合も復元テーブルが生成される。
【0097】
図25から図27は,難読化されたコンピュータ・ソフトウエアの一例である。
【0098】
図25は,名前変換により難読化されたコンピュータ・ソフトウエアの一例である。
【0099】
オリジナル・コンピュータ・ソフトウエアの「Shape」,「Result Movepoint (int x,int y)」,「int r2=x*x*+y*y」および「if (r2==0)」が,「Za112ay」,「kop89 S5df5f41(int sdfj, int js11」,「int jkio99=sdfj*sdfj+js11*js11」および「if(jkio99==0)」に変換されている。
【0100】
図26は,名前変換と処理空化により難読化されたコンピュータ・ソフトウエアの一例である。
【0101】
オリジナル・コンピュータ・ソフトウエアの「Shape」および「Result Movepoint (int x,int y)」が,「Za112ay」および「kop89 S5df5f41(int sdfj, int js11」に変換されている。また,「int r2=x*x*+y*y」および「if (r2==0)」のそれぞれの処理内容が空化されている。空化のために処理内容は除去されているが,行数は変わらない。空化によりセミコロン「;」が追加されているが,セミコロンの代わりに,たとえば,「if(false);」などのように処理に無関係なソフトウエアを追加することにより難読化してもよい。
【0102】
図27は,名前変換と処理削除により難読化されたコンピュータ・ソフトウエアの一例である。
【0103】
オリジナル・コンピュータ・ソフトウエアの「Shape」および「Result Movepoint (int x,int y)」が,「Za112ay」および「kop89 S5df5f41(int sdfj, int js11」に変換されている。また,「int r2=x*x*+y*y」および「if (r2==0)」のそれぞれの処理内容が削除されている。
【0104】
難読化されたコンピュータ・ソフトウエアがクライアント・コンピュータ1からサーバ・コンピュータ20に送信されると,上述したように,サーバ・コンピュータ20において,難読化済コンピュータ・ソフトウエアの品質解析が行われ,難読化済解析結果データが得られる。得られた難読化済解析結果データは,サーバ・コンピュータ20からクライアント・コンピュータ1に送信される。
【0105】
サーバ・コンピュータ20から送信された難読化済解析結果データがクライアント・コンピュータ1において受信されると(図21ステップ78),難読化済解析結果データが復元され,解析結果データが得られる。
【0106】
図28は,復元された解析結果データの一例である。
【0107】
解析項目として,解析項目リストに含まれているように行数と複雑度とがあり,それらの解析項目について品質が解析されている。たとえば,行数は37,複雑度は5である。
【0108】
つづいて,上述したように解析項目選択処理(図20ステップ72)によって選択されていない解析項目のデータが解析データから削除される(図21ステップ80)。
【0109】
図29は,選択されていない項目である行数についてのデータが削除されている解析結果データの一例である。
【0110】
このように,解析項目として,複雑度が選択され,行数が選択されていないと解析データから行数のデータが削除される。
【0111】
図30は,難度化方法決定処理手順(図20ステップ73の処理手順)を示すフローチャートの一例である。
【0112】
上述したように,図24に示す難読化方法リストが読み取られ(ステップ91),難読化方法/削除項目特定テーブルが読み取られる(ステップ92)。
【0113】
図31は,難読化方法/削除項目特定テーブルの一例である。
【0114】
難読化方法/削除項目特定テーブルは,コンピュータ・ソフトウエアのプログラム要素のうち欠損するものと欠損しないものとを難読化方法に対応して格納するものである。たとえば,難読化方法が「名前変換」の場合には,プログラム要素の名前は欠損するが,条件文および処理数は欠損しない。難読化方法が「名前変換+処理空化」の場合には,プログラム要素の名前および条件文は欠損するが,処理数は欠損しない。難読化方法が「名前変換+処理削除」の場合には,プログラム要素の名前および処理数は欠損するが,条件文は欠損しない。
【0115】
難読化方法/削除項目特定テーブルが読み取られると,解析項目削除可能項目テーブルが読み取られる(図30ステップ92)。
【0116】
図32は,難読化方法/削除項目特定テーブルの一例である。
【0117】
難読化方法/削除項目特定テーブルは,コンピュータ・ソフトウエアのプログラム要素のうち欠損するものと欠損しないものとを解析項目に対応して格納するものである。たとえば,解析項目が行数の場合には,プログラム要素の名前および条件文は欠損するが,処理数は欠損しない。解析項目が複雑度の場合には,プログラム要素の名前および処理数は欠損するが,条件文は欠損しない。
【0118】
このようにして,テーブルが読み取られると,選択された解析項目(図20ステップ72)に対応する欠損可能なプログラム要素が,図32に示す解析項目/欠損可能項目特定テーブルから分かり,欠損可能なプログラム要素に対応した難読化方法が,図31に示す難読化方法/削除項目テーブルから決定される。たとえば,解析項目として「行数」が選択されると,図32から名前と条件文とが欠損可能なので,これらのプログラム要素が欠損可能な難読化方法として「名前変換+処理空化」が図31から決定される。
【0119】
図33は,難読化方法決定処理手順の他の処理手順を示すフローチャートである。
【0120】
上述したのと同様に,図24に示す難読化方法リストが読み取られる(ステップ101)。つづいて,解析項目/難読化方法選択テーブルが読み取られる(ステップ102)。
【0121】
図34は,解析項目/難読化方法選択テーブルの一例である。
【0122】
解析項目/難読化方法選択テーブルは,解析項目に対応して難読化方法が格納されている。たとえば,解析項目が行数の場合には,「名前変換+処理空化」と「名前変換」とが対応して格納され,解析項目が複雑度の場合には,「名前変換+処理削除」と「名前変換」とが対応して格納されている。
【0123】
解析項目/難読化方法選択テーブルが読み取られると,その読み取られたテーブルから難読化方法が決定される(ステップ103)。たとえば,解析項目として行数が選択されていると,「名前変換+処理空化」と「名前変換」とが難読化方法として決定され,解析項目として複雑度が選択されていると「名前変換+処理削除」と「名前変換」とが難読化方法として決定される。解析項目として,行数および複雑度とが選択されていると,「名前変換」が難読化方法として決定される。
【0124】
図35から図39は,さらに他の実施例を示している。この実施例は,過去の履歴を利用して難読化方法などを決定するものである。
【0125】
図35は,クライアント・コンピュータ1の処理手順を示すフローチャート,図36は,サーバ・コンピュータ20の処理手順を示すフローチャートである。
【0126】
まず,クライアント・コンピュータ1に過去のソフトウエア解析設定履歴データが記憶されているかどうかが確認される(図35ステップ111)。
【0127】
図37は,ソフトウエア解析設定履歴データが格納されているテーブルの一例である。
【0128】
ソフトウエア解析設定履歴データは,上述した難読化方法の決定などの過去の設定状況を示すものである。第1列,第2列および第3列には,それぞれソース・コード(ソフトウエア)の名称,難読化方法のパターンおよび解析項目が格納されている。これらのデータを確認することにより,過去にどのようなソフトウエアについて,どのような難読化方法が行われ,どのような解析項目について品質解析が行われたかがわかる。たとえば,第1行から,ソース・コードの名称が「ClassA」について,パターンII(「名前変換+処理空化」)の難読化方法が行数について行われたことがわかる。過去の難度化処理と同一の難度化処理を行うことができる。
【0129】
クライアント・コンピュータ1にソフトウエア解析設定履歴データが格納されていなければ(図35ステップ111でNO),クライアント・コンピュータ1のユーザによってソフトウエア解析設定処理が行われる(図35ステップ112)。上述したようにして解析項目および難読化方法が設定される。すると,設定された情報がソフトウエア解析設定履歴データとして,記憶される(図35ステップ113)。クライアント・コンピュータ1にソフトウエア解析設定履歴データが格納されていれば(図35ステップ111でYES),ステップ112および113の処理はスキップされる。
【0130】
つづいて,ユーザによって解析対象となるオリジナル・コンピュータ・ソフトウエアが選択され(図35ステップ114),選択されたオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ1に入力する(図35ステップ115)。
【0131】
上述したように,クライアント・コンピュータ1に入力したオリジナル・コンピュータ・ソフトウエアが難読化され,かつ復元テーブルが生成される(図35ステップ116)。どの難読化方法で行うかは,図37に示すソフトウエア解析設定履歴データにもとづいて決定される。上述したように,入力したソース・コード(オリジナル・コンピュータ・ソフトウエア)が「ClassA」であるとすると,パターンII(「名前変換+処理空化」)の難読化方法で難読化処理が行われる。
【0132】
難読化済みコンピュータ・ソフトウエアが表示され(図35ステップ117),クライアント・コンピュータ1に送信指令が与えられることにより,難読化済コンピュータ・ソフトウエアがクライアント・コンピュータ1からサーバ・コンピュータ20に送信される(図35ステップ118でYES,ステップ119)。
【0133】
クライアント・コンピュータ1から送信された難読化済コンピュータ・ソフトウエアがサーバ・コンピュータ20において受信されると(図36ステップ121),サーバ・コンピュータ20において過去ソフトウエア履歴データが検索される(図36ステップ122)。過去ソフトウエア履歴データは,サーバ・コンピュータ20において過去に行われた品質解析の結果を表わすものである。
【0134】
図38は,過去ソフトウエア履歴データが格納されているテーブルの一例である。
【0135】
ソース・コード名に対応して,過去の品質解析の結果である行数と複雑度とが格納されている。上述したように,コンピュータ・ソフトウエアは難読化されているので,その名称(ソース・コード名)の難読化される。たとえば,ソース・コード名が「ClassA」のコンピュータ・ソフトウエアが難読化されることにより,ソース・コード名は,「nrBCZ12」に変更される。図38においては,難読化されたソース・コード名に対応して行数と複雑度とがテーブルに格納されている。
【0136】
つづいて,難読化済コンピュータ・ソフトウエアの品質解析が行われる(図36ステップ123)。品質解析により得られた解析結果データは過去ソフトウエア履歴データが格納されているテーブルに記憶される(図36ステップ124)。すでに品質解析が行われた難読化済コンピュータ・ソフトウエアについての解析結果データが過去ソフトウエア履歴データ・テーブルに格納されている場合には,その解析結果データに上書きされる。これにより過去ソフトウエア履歴データが更新される。もっとも,解析結果データを上書きせずに時系列的に記憶するようにしてもよい。過去に行われた解析結果データと,新たに行われた解析結果データとが比較されることにより解析結果の変更の程度が分る。
【0137】
図39は,過去に行われた解析結果データと,新たに行われた解析結果データとの比較を表わす比較データを格納されている比較データ・テーブルの一例である。
【0138】
上述したように,過去に行われた解析結果データと,新たに行われた解析結果データとが比較されることにより解析結果の変更の程度が分る。図39においては,過去に行われた行数の解析結果と新たに行われた行数の解析結果の増減および過去に行われた複雑度の解析結果と新たに行われた複雑度の解析結果の増減が格納されている。このように,過去の解析結果との比較結果を得ることができる。
【0139】
難読化されている解析結果データおよび過去の解析結果との比較結果を表わすデータがサーバ・コンピュータ20からクライアント・コンピュータ1に送信される(図36ステップ125)。
【符号の説明】
【0140】
1 クライアント・コンピュータ
2 CPU
8 CD-ROM
20 サーバ・コンピュータ
【特許請求の範囲】
【請求項1】
クライアント・コンピュータとサーバ・コンピュータとを備えたコンピュータ・ソフトウエア解析システムにおいて,
クライアント・コンピュータが,
解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段,および
上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを上記サーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段を備え,
上記サーバ・コンピュータが,
上記クライアント・コンピュータの上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析し,難読化されている解析結果データを生成するコンピュータ・ソフトウエア解析手段,および
上記コンピュータ・ソフトウエア解析手段によって生成された難読化されている解析結果データを,上記クライアント・コンピュータに送信する解析結果データ送信手段を備え,
上記クライアント・コンピュータが,
上記サーバ・コンピュータの上記解析結果データ送信手段から送信された難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する復元手段,
を備えたコンピュータ・ソフトウエア解析システム。
【請求項2】
上記クライアント・コンピュータが,
上記クライアント・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを出力する出力手段,
をさらに備えている請求項1に記載のコンピュータ・ソフトウエア解析システム。
【請求項3】
上記クライアント・コンピュータは,
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段における難読化済コンピュータ・ソフトウエアの解析を制御する解析制御データを上記サーバ・コンピュータに送信する解析制御データ送信手段をさらに備え,
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段は,
上記クライアント・コンピュータの上記解析制御データ送信手段から送信された解析制御データ利用して難読化済コンピュータ・ソフトウエアを解析するものである,
請求項1または2に記載のコンピュータ・ソフトウエア解析システム。
【請求項4】
上記クライアント・コンピュータは,
上記解析制御データのうち難読化が必要な上記解析制御データを指定する指定手段,
上記指定手段によって指定された上記解析制御データを難読化する解析制御データ難読化手段をさらに備え,
上記クライアント・コンピュータの上記解析制御データ送信手段は,
上記解析制御データ難読化手段によって難読化された上記解析制御データと難読化されていない上記解析制御データとのうち少なくとも一方を上記サーバ・コンピュータに送信するものである,
請求項3に記載のコンピュータ・ソフトウエア解析システム。
【請求項5】
クライアント・コンピュータが受信した解析結果データを制御する解析結果制御データを入力する解析結果制御データ入力手段,および
上記難読化された解析結果データまたは上記復元手段によって復元された解析結果データを,上記解析結果制御データ入力手段から入力された解析結果制御データにもとづいて制御する解析結果データ制御手段,
をさらに備えた請求項1から4のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項6】
上記クライアント・コンピュータが,
複数の難読化方法のうち,一の難読化方法を選択する難読化方法選択手段をさらに備え,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
上記難読化方法選択手段によって選択された難読化方法によってコンピュータ・ソフトウエアを難読化するものである,
請求項1から5のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項7】
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
コンピュータ・ソフトウエアの一部を削除し,または無関係なソフトウエアを混入させて,残りの部分を難読化するものである,
請求項1から6のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項8】
上記クライアント・コンピュータは,
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段によって解析する項目を指定する解析項目指定手段,
上記解析項目指定手段によって指定された解析項目に対応した難読化方法を,複数の難読化方法の中から決定する難読化方法決定手段,および
上記難読化方法決定手段によって決定された難読化方法にもとづく難読化が行われる場合にコンピュータ・ソフトウエアのうち欠損可能な一部を決定する欠損部分決定手段をさらに備え,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
上記欠損部分決定手段によって決定された一部を,コンピュータ・ソフトウエアから削除して残りの部分を難読化するものである,
請求項1から7のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項9】
解析項目および難読化方法のそれぞれに対応して,コンピュータ・ソフトウエアのうち欠損可能な部分が規定されており,
上記難読化方法決定手段は,
上記解析項目指定手段によって指定された解析項目に対応して規定されている,コンピュータ・ソフトウエアのうち欠損可能な部分に対応する難読化方法を決定する,
請求項8に記載のコンピュータ・ソフトウエア解析システム。
【請求項10】
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
同一のコンピュータ・ソフトウエアを難読化すると同一の難読化済コンピュータ・ソフトウエアを出力するものである,
請求項1から9のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項11】
上記サーバ・コンピュータは,
上記コンピュータ・ソフトウエア解析手段において復元された解析結果データを,コンピュータ・ソフトウエアに対応して記憶する解析結果データ記憶手段,および
上記コンピュータ・ソフトウエア解析手段において上記コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析して生成された解析結果データと,生成された解析結果データのコンピュータ・ソフトウエアに対応して上記解析結果データ記憶手段に記憶されている解析結果データと,を比較して比較結果を出力する比較手段,
をさらに備えた請求項10に記載のコンピュータ・ソフトウエア解析システム。
【請求項12】
上記クライアント・コンピュータは,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法を,コンピュータ・ソフトウエアに対応して記憶する難読化方法記憶手段をさらに備え,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
新たなコンピュータ・ソフトウエアについて難読化する際に,そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている難読化方法を用いてコンピュータ・ソフトウエアを難読化するものである,
請求項11に記載のコンピュータ・ソフトウエア解析システム。
【請求項13】
上記クライアント・コンピュータの難読化方法記憶手段は,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法および解析項目を,コンピュータ・ソフトウエアに対応して記憶しており,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
新たなコンピュータ・ソフトウエアについて難読化する際に,そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている解析項目を上記サーバ・コンピュータに送信する解析項目送信手段,
をさらに備えた請求項12に記載のコンピュータ・ソフトウエア解析システム。
【請求項14】
解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段,
上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段,
上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信する受信手段,および
上記受信手段によって受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する復元手段,
を備えたクライアント・コンピュータ。
【請求項15】
難読化手段が,解析対象であるコンピュータ・ソフトウエアを難読化し,
難読化済コンピュータ・ソフトウエア送信手段が,上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信し,
受信手段が,上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信し,
復元手段が,上記受信手段によって受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する,
クライアント・コンピュータの動作制御方法。
【請求項16】
クライアント・コンピュータを制御するプログラムであって,
解析対象であるコンピュータ・ソフトウエアを難読化させ,
難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信させ,
送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信させ,
受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元させるようにクライアント・コンピュータの動作を制御するコンピュータが読み取り可能なプログラム。
【請求項1】
クライアント・コンピュータとサーバ・コンピュータとを備えたコンピュータ・ソフトウエア解析システムにおいて,
クライアント・コンピュータが,
解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段,および
上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを上記サーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段を備え,
上記サーバ・コンピュータが,
上記クライアント・コンピュータの上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析し,難読化されている解析結果データを生成するコンピュータ・ソフトウエア解析手段,および
上記コンピュータ・ソフトウエア解析手段によって生成された難読化されている解析結果データを,上記クライアント・コンピュータに送信する解析結果データ送信手段を備え,
上記クライアント・コンピュータが,
上記サーバ・コンピュータの上記解析結果データ送信手段から送信された難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する復元手段,
を備えたコンピュータ・ソフトウエア解析システム。
【請求項2】
上記クライアント・コンピュータが,
上記クライアント・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを出力する出力手段,
をさらに備えている請求項1に記載のコンピュータ・ソフトウエア解析システム。
【請求項3】
上記クライアント・コンピュータは,
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段における難読化済コンピュータ・ソフトウエアの解析を制御する解析制御データを上記サーバ・コンピュータに送信する解析制御データ送信手段をさらに備え,
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段は,
上記クライアント・コンピュータの上記解析制御データ送信手段から送信された解析制御データ利用して難読化済コンピュータ・ソフトウエアを解析するものである,
請求項1または2に記載のコンピュータ・ソフトウエア解析システム。
【請求項4】
上記クライアント・コンピュータは,
上記解析制御データのうち難読化が必要な上記解析制御データを指定する指定手段,
上記指定手段によって指定された上記解析制御データを難読化する解析制御データ難読化手段をさらに備え,
上記クライアント・コンピュータの上記解析制御データ送信手段は,
上記解析制御データ難読化手段によって難読化された上記解析制御データと難読化されていない上記解析制御データとのうち少なくとも一方を上記サーバ・コンピュータに送信するものである,
請求項3に記載のコンピュータ・ソフトウエア解析システム。
【請求項5】
クライアント・コンピュータが受信した解析結果データを制御する解析結果制御データを入力する解析結果制御データ入力手段,および
上記難読化された解析結果データまたは上記復元手段によって復元された解析結果データを,上記解析結果制御データ入力手段から入力された解析結果制御データにもとづいて制御する解析結果データ制御手段,
をさらに備えた請求項1から4のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項6】
上記クライアント・コンピュータが,
複数の難読化方法のうち,一の難読化方法を選択する難読化方法選択手段をさらに備え,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
上記難読化方法選択手段によって選択された難読化方法によってコンピュータ・ソフトウエアを難読化するものである,
請求項1から5のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項7】
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
コンピュータ・ソフトウエアの一部を削除し,または無関係なソフトウエアを混入させて,残りの部分を難読化するものである,
請求項1から6のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項8】
上記クライアント・コンピュータは,
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段によって解析する項目を指定する解析項目指定手段,
上記解析項目指定手段によって指定された解析項目に対応した難読化方法を,複数の難読化方法の中から決定する難読化方法決定手段,および
上記難読化方法決定手段によって決定された難読化方法にもとづく難読化が行われる場合にコンピュータ・ソフトウエアのうち欠損可能な一部を決定する欠損部分決定手段をさらに備え,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
上記欠損部分決定手段によって決定された一部を,コンピュータ・ソフトウエアから削除して残りの部分を難読化するものである,
請求項1から7のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項9】
解析項目および難読化方法のそれぞれに対応して,コンピュータ・ソフトウエアのうち欠損可能な部分が規定されており,
上記難読化方法決定手段は,
上記解析項目指定手段によって指定された解析項目に対応して規定されている,コンピュータ・ソフトウエアのうち欠損可能な部分に対応する難読化方法を決定する,
請求項8に記載のコンピュータ・ソフトウエア解析システム。
【請求項10】
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
同一のコンピュータ・ソフトウエアを難読化すると同一の難読化済コンピュータ・ソフトウエアを出力するものである,
請求項1から9のうち,いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項11】
上記サーバ・コンピュータは,
上記コンピュータ・ソフトウエア解析手段において復元された解析結果データを,コンピュータ・ソフトウエアに対応して記憶する解析結果データ記憶手段,および
上記コンピュータ・ソフトウエア解析手段において上記コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析して生成された解析結果データと,生成された解析結果データのコンピュータ・ソフトウエアに対応して上記解析結果データ記憶手段に記憶されている解析結果データと,を比較して比較結果を出力する比較手段,
をさらに備えた請求項10に記載のコンピュータ・ソフトウエア解析システム。
【請求項12】
上記クライアント・コンピュータは,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法を,コンピュータ・ソフトウエアに対応して記憶する難読化方法記憶手段をさらに備え,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
新たなコンピュータ・ソフトウエアについて難読化する際に,そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている難読化方法を用いてコンピュータ・ソフトウエアを難読化するものである,
請求項11に記載のコンピュータ・ソフトウエア解析システム。
【請求項13】
上記クライアント・コンピュータの難読化方法記憶手段は,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法および解析項目を,コンピュータ・ソフトウエアに対応して記憶しており,
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は,
新たなコンピュータ・ソフトウエアについて難読化する際に,そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている解析項目を上記サーバ・コンピュータに送信する解析項目送信手段,
をさらに備えた請求項12に記載のコンピュータ・ソフトウエア解析システム。
【請求項14】
解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段,
上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段,
上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信する受信手段,および
上記受信手段によって受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する復元手段,
を備えたクライアント・コンピュータ。
【請求項15】
難読化手段が,解析対象であるコンピュータ・ソフトウエアを難読化し,
難読化済コンピュータ・ソフトウエア送信手段が,上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信し,
受信手段が,上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信し,
復元手段が,上記受信手段によって受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元する,
クライアント・コンピュータの動作制御方法。
【請求項16】
クライアント・コンピュータを制御するプログラムであって,
解析対象であるコンピュータ・ソフトウエアを難読化させ,
難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信させ,
送信された難読化済コンピュータ・ソフトウエアが,サーバ・コンピュータにおいて解析されることにより生成され,かつサーバ・コンピュータから送信される,難読化されている解析結果データを受信させ,
受信した,難読化されている解析結果データの少なくとも一部を,難読化前の解析結果データに復元させるようにクライアント・コンピュータの動作を制御するコンピュータが読み取り可能なプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【公開番号】特開2013−61843(P2013−61843A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2011−200340(P2011−200340)
【出願日】平成23年9月14日(2011.9.14)
【出願人】(306037311)富士フイルム株式会社 (25,513)
【Fターム(参考)】
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願日】平成23年9月14日(2011.9.14)
【出願人】(306037311)富士フイルム株式会社 (25,513)
【Fターム(参考)】
[ Back to top ]