(57)【要約】【目的】コンピュータ・ソフトウエア解析する場合に，ソース・コードの秘匿性を維持する。【構成】クライアント・コンピュータ１において解析対象のコンピュータ・ソフトウエアが難読化される（ステップ32）。難読化されたコンピュータ・ソフトウエアがサーバ・コンピュータに送信される。サーバ・コンピュータにおいてソフトウエア解析が行われ，その解析結果を表わすデータがクライアント・コンピュータに送信される。解析結果を表わすデータは難読化されているので，サーバ・コンピュータにはコンピュータ・ソフトウエアの内容が分らない。難読化されている解析結果データはクライアント・コンピュータ１において復元される（ステップ37）。【選択図】図３
2013061843.tif 000002
【特許請求の範囲】
【請求項１】
クライアント・コンピュータとサーバ・コンピュータとを備えたコンピュータ・ソフトウエア解析システムにおいて，
クライアント・コンピュータが，
解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段，および
上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを上記サーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段を備え，
上記サーバ・コンピュータが，
上記クライアント・コンピュータの上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析し，難読化されている解析結果データを生成するコンピュータ・ソフトウエア解析手段，および
上記コンピュータ・ソフトウエア解析手段によって生成された難読化されている解析結果データを，上記クライアント・コンピュータに送信する解析結果データ送信手段を備え，
上記クライアント・コンピュータが，
上記サーバ・コンピュータの上記解析結果データ送信手段から送信された難読化されている解析結果データの少なくとも一部を，難読化前の解析結果データに復元する復元手段，
を備えたコンピュータ・ソフトウエア解析システム。
【請求項２】
上記クライアント・コンピュータが，
上記クライアント・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを出力する出力手段，
をさらに備えている請求項１に記載のコンピュータ・ソフトウエア解析システム。
【請求項３】
上記クライアント・コンピュータは，
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段における難読化済コンピュータ・ソフトウエアの解析を制御する解析制御データを上記サーバ・コンピュータに送信する解析制御データ送信手段をさらに備え，
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段は，
上記クライアント・コンピュータの上記解析制御データ送信手段から送信された解析制御データ利用して難読化済コンピュータ・ソフトウエアを解析するものである，
請求項１または２に記載のコンピュータ・ソフトウエア解析システム。
【請求項４】
上記クライアント・コンピュータは，
上記解析制御データのうち難読化が必要な上記解析制御データを指定する指定手段，
上記指定手段によって指定された上記解析制御データを難読化する解析制御データ難読化手段をさらに備え，
上記クライアント・コンピュータの上記解析制御データ送信手段は，
上記解析制御データ難読化手段によって難読化された上記解析制御データと難読化されていない上記解析制御データとのうち少なくとも一方を上記サーバ・コンピュータに送信するものである，
請求項３に記載のコンピュータ・ソフトウエア解析システム。
【請求項５】
クライアント・コンピュータが受信した解析結果データを制御する解析結果制御データを入力する解析結果制御データ入力手段，および
上記難読化された解析結果データまたは上記復元手段によって復元された解析結果データを，上記解析結果制御データ入力手段から入力された解析結果制御データにもとづいて制御する解析結果データ制御手段，
をさらに備えた請求項１から４のうち，いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項６】
上記クライアント・コンピュータが，
複数の難読化方法のうち，一の難読化方法を選択する難読化方法選択手段をさらに備え，
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，
上記難読化方法選択手段によって選択された難読化方法によってコンピュータ・ソフトウエアを難読化するものである，
請求項１から５のうち，いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項７】
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，
コンピュータ・ソフトウエアの一部を削除し，または無関係なソフトウエアを混入させて，残りの部分を難読化するものである，
請求項１から６のうち，いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項８】
上記クライアント・コンピュータは，
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段によって解析する項目を指定する解析項目指定手段，
上記解析項目指定手段によって指定された解析項目に対応した難読化方法を，複数の難読化方法の中から決定する難読化方法決定手段，および
上記難読化方法決定手段によって決定された難読化方法にもとづく難読化が行われる場合にコンピュータ・ソフトウエアのうち欠損可能な一部を決定する欠損部分決定手段をさらに備え，
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，
上記欠損部分決定手段によって決定された一部を，コンピュータ・ソフトウエアから削除して残りの部分を難読化するものである，
請求項１から７のうち，いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項９】
解析項目および難読化方法のそれぞれに対応して，コンピュータ・ソフトウエアのうち欠損可能な部分が規定されており，
上記難読化方法決定手段は，
上記解析項目指定手段によって指定された解析項目に対応して規定されている，コンピュータ・ソフトウエアのうち欠損可能な部分に対応する難読化方法を決定する，
請求項８に記載のコンピュータ・ソフトウエア解析システム。
【請求項１０】
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，
同一のコンピュータ・ソフトウエアを難読化すると同一の難読化済コンピュータ・ソフトウエアを出力するものである，
請求項１から９のうち，いずれか一項に記載のコンピュータ・ソフトウエア解析システム。
【請求項１１】
上記サーバ・コンピュータは，
上記コンピュータ・ソフトウエア解析手段において復元された解析結果データを，コンピュータ・ソフトウエアに対応して記憶する解析結果データ記憶手段，および
上記コンピュータ・ソフトウエア解析手段において上記コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析して生成された解析結果データと，生成された解析結果データのコンピュータ・ソフトウエアに対応して上記解析結果データ記憶手段に記憶されている解析結果データと，を比較して比較結果を出力する比較手段，
をさらに備えた請求項10に記載のコンピュータ・ソフトウエア解析システム。
【請求項１２】
上記クライアント・コンピュータは，
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法を，コンピュータ・ソフトウエアに対応して記憶する難読化方法記憶手段をさらに備え，
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，
新たなコンピュータ・ソフトウエアについて難読化する際に，そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている難読化方法を用いてコンピュータ・ソフトウエアを難読化するものである，
請求項11に記載のコンピュータ・ソフトウエア解析システム。
【請求項１３】
上記クライアント・コンピュータの難読化方法記憶手段は，
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法および解析項目を，コンピュータ・ソフトウエアに対応して記憶しており，
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，
新たなコンピュータ・ソフトウエアについて難読化する際に，そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている解析項目を上記サーバ・コンピュータに送信する解析項目送信手段，
をさらに備えた請求項12に記載のコンピュータ・ソフトウエア解析システム。
【請求項１４】
解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段，
上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段，
上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが，サーバ・コンピュータにおいて解析されることにより生成され，かつサーバ・コンピュータから送信される，難読化されている解析結果データを受信する受信手段，および
上記受信手段によって受信した，難読化されている解析結果データの少なくとも一部を，難読化前の解析結果データに復元する復元手段，
を備えたクライアント・コンピュータ。
【請求項１５】
難読化手段が，解析対象であるコンピュータ・ソフトウエアを難読化し，
難読化済コンピュータ・ソフトウエア送信手段が，上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信し，
受信手段が，上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが，サーバ・コンピュータにおいて解析されることにより生成され，かつサーバ・コンピュータから送信される，難読化されている解析結果データを受信し，
復元手段が，上記受信手段によって受信した，難読化されている解析結果データの少なくとも一部を，難読化前の解析結果データに復元する，
クライアント・コンピュータの動作制御方法。
【請求項１６】
クライアント・コンピュータを制御するプログラムであって，
解析対象であるコンピュータ・ソフトウエアを難読化させ，
難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信させ，
送信された難読化済コンピュータ・ソフトウエアが，サーバ・コンピュータにおいて解析されることにより生成され，かつサーバ・コンピュータから送信される，難読化されている解析結果データを受信させ，
受信した，難読化されている解析結果データの少なくとも一部を，難読化前の解析結果データに復元させるようにクライアント・コンピュータの動作を制御するコンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は，コンピュータ・ソフトウエア解析システムならびにクライアント・コンピュータ，その動作制御方法およびその動作プログラムに関する。
【背景技術】
【０００２】
近年，ソフトウエアの解析技術が発達している。たとえば，ソース・コードから品質に関するデータを出力し，品質向上活動に利用するといったものが代表的である。このような技術は，非常に幅が広く，近年のソフトウエア内部品質を重視する風潮から，多様な技術やサービスが発展していくことが予想される。
【０００３】
ソフトウエア解析技術においては，ソフトウエア解析自体に非常に大きな計算機資源を要するが，特定のソフトウエアに対して常時稼働させるものではない。また，ソフトウエアを送信する場合，通信データ自体はソース・コード（テキスト・データ）に準じるものであり，画像データや動画データに比べデータ量は少ない。このような特徴からソフトウエア解析は，近年のクラウド化（ネットワーク上の計算機資源の有効活用）トレンドと相性がよい。このために，将来的にはソース・コードをクラウド上のソフトウエア解析システムで解析する用途は広いと考えられる。
【０００４】
このようなソフトウエア解析には，クライアントがソース・コードをサーバに送信し，サーバが解析を実施し，解析結果をクライアントに返すもの（特許文献１），クライアントが品質測定データを生成してサーバに送信し，サーバがその品質測定データを元に評価データを生成してクライアントに返信するもの（特許文献２）等がある。
【０００５】
一方，ソース・コードの秘匿性を保つ手段として難読化が知られている。この難読化は，第三者によるソフトウエア解析を妨害する目的で，一般には挙動が変わらない範囲でソフトウエアのコードに一種のスクランブルをかけるものである。たとえば，ソース・コード記述ではわかりやすい名前を付ける慣習を逆に利用して，名前をわかりにくいものに置き換えることで解析性を悪化させているものがある（特許文献３）。
【０００６】
また，プログラムに含まれる技術的ノウハウの流出を防止するもの（特許文献４），ソフトウエア開発中の規約遵守を監視するの（特許文献５），プログラムの問題点等を洗い出すもの（特許文献６），オブジェクトレベルで隠蔽化できるもの（特許文献７）などもある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2004-240477号公報
【特許文献２】特開2001-75928号公報
【特許文献３】米国特許6102966号公報
【特許文献４】特開2004-133793号公報
【特許文献５】特開2003-114813号公報
【特許文献６】特開2003-280754号公報
【特許文献７】特開2003-280754号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら，クラウド上にあるサーバにソース・コードを送信することは，公開ネットワーク上にソース・コードを送信することとなる。このために，ソース・コードを暗号化することが考えられるが，解析するサーバはソース・コードを復号するので，サーバにはソース・コードの内容がわかってしまう。特許文献１に記載のものでは，ソース・コードの秘匿性が確保されていない。特許文献２に記載のものでは，クライアントが品質測定機能を有する，クライアントとサーバとの間で特別な交換データ・フォーマットを取り決める必要がある，サーバから返信されたデータを元のソース・コードと詳細に照らすための考慮がない，解析に必要なソフトウエア情報を追加したい場合にクライアントを修正する必要がある，解析に必要なソフトウエア情報を追加した場合にはソース・コードの秘匿性が弱まる等の問題がある。特許文献３に記載のものは，サーバ・クライアント型の解析システムとの連携が考慮されていない，難読化された名前を復元することは考えられていないなどの問題がある。さらに，特許文献４から７に記載のものでも，ソース・コードの秘匿性を維持可能なサーバ・クライアント型の解析システムについては考えられていない。
【０００９】
この発明の第１の目的は，ソース・コードの秘匿性を維持可能なサーバ・クライアント型のソフトウエア解析システムを提供することにある。第２の目的は，クライアント・コンピュータに解析手段を持たせる必要を無くすことにある。第３の目的は，クライアント・コンピュータからサーバ・コンピュータにソース・コードを送信するための特別なデータ・フォーマットを取り決める必要を無くすことにある。たとえば，サーバ・コンピュータにソース・コードの秘匿性を実現するために特別なものを不要にすることにあり，サーバ・コンピュータがソース・コードの秘匿性を考慮していないものと組み合わせることができるようにすることにある。第４の目的は，サーバ・コンピュータから返信されたデータと元のソース・コードとを容易に照らし合わせるようにするものである。第５の目的は，解析内容の追加，変更に，ほぼサーバ・コンピュータのみで対応可能にすることにある。第６の目的は，解析手段を追加，変更してもソース・コード秘匿性を維持できるようにすることにある。第７の目的は，既存の様々なソフトウエア難読化手段と容易に組み合わせることができるようにすることにある。
【課題を解決するための手段】
【００１０】
この発明は，クライアント・コンピュータとサーバ・コンピュータとを備えたコンピュータ・ソフトウエア解析システムについてのものである。
【００１１】
クライアント・コンピュータは，解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段，および上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを上記サーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段を備え，上記サーバ・コンピュータは，上記クライアント・コンピュータの上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析し，難読化されている解析結果データを生成するコンピュータ・ソフトウエア解析手段，および上記コンピュータ・ソフトウエア解析手段によって生成された難読化されている解析結果データを，上記クライアント・コンピュータに送信する解析結果データ送信手段を備えている。上記クライアント・コンピュータは，上記サーバ・コンピュータの上記解析結果データ送信手段から送信された難読化されている解析結果データの少なくとも一部を，難読化前の解析結果データに復元する復元手段をさらに備えている。
【００１２】
この発明は，上記コンピュータ・ソフトウエア解析システムを構成するクライアント・コンピュータも提供している。すなわち，このクライアント・コンピュータは，解析対象であるコンピュータ・ソフトウエアを難読化するコンピュータ・ソフトウエア難読化手段，上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信する難読化済コンピュータ・ソフトウエア送信手段，上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが，サーバ・コンピュータにおいて解析されることにより生成され，かつサーバ・コンピュータから送信される，難読化されている解析結果データを受信する受信手段，および上記受信手段によって受信した，難読化されている解析結果データの少なくとも一部を，難読化前の解析結果データに復元する復元手段を備えている。
【００１３】
さらに，この発明は，上記クライアント・コンピュータに適した動作制御方法も提供している。すなわち，難読化手段が，解析対象であるコンピュータ・ソフトウエアを難読化し，難読化済コンピュータ・ソフトウエア送信手段が，上記コンピュータ・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアをサーバ・コンピュータに送信し，受信手段が，上記難読化コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアが，サーバ・コンピュータにおいて解析されることにより生成され，かつサーバ・コンピュータから送信される，難読化されている解析結果データを受信し，復元手段が，上記受信手段によって受信した，難読化されている解析結果データの少なくとも一部を，難読化前の解析結果データに復元するものである。
【００１４】
この発明は，上記クライアント・コンピュータの動作を制御するプログラムも提供している。そのようなプログラムを格納した記録媒体を提供するようにしてもよい。
【００１５】
この発明によると，クライアント・コンピュータにおいて解析対象であるコンピュータ・ソフトウエアが難読化される。難読化されたコンピュータ・ソフトウエアはクライアント・コンピュータからサーバ・コンピュータに送信される。クライアント・コンピュータからサーバ・コンピュータに難読化されたコンピュータ・ソフトウエアが送信されると，サーバ・コンピュータにおいて，難読化されているコンピュータ・ソフトウエアの品質が解析され，難読化されている解析結果データが生成される。難読化されている解析結果データは，サーバ・コンピュータからクライアント・コンピュータに送信される。難読化されている解析結果データの少なくとも一部が難読化前の解析結果データに復元される。
【００１６】
サーバ・コンピュータにおいて得られる解析結果データは難読化されているので，サーバ・コンピュータ側にコンピュータ・ソフトウエアの内容が知られてしまうことを未然に防止できる。コンピュータ・ソフトウエアの秘匿性を維持できる。コンピュータ・ソフトウエアの解析はサーバ・コンピュータにおいて行われるので，クライアント・コンピュータにコンピュータ・ソフトウエアの解析手段の機能を持たせる必要がない。コンピュータ・ソフトウエアの秘匿性を維持するために，サーバ・コンピュータに特別の構成を持たせる必要もない。クライアント・コンピュータは，コンピュータ・ソフトウエアを難読化しているので，難読化されている解析結果データの復元も比較的容易にできる。解析は，サーバ・コンピュータにおいて行われているので，解析内容の追加，変更はサーバ・コンピュータのみで対応可能となる。コンピュータ・ソフトウエアが難読化されている状態で解析されるので，解析手段の追加，変更をしてもコンピュータ・ソフトウエアの秘匿化を維持できる。既存の様々なソフトウエア難読化手段と組み合わせることもできる。
【００１７】
上記クライアント・コンピュータは，上記クライアント・ソフトウエア難読化手段によって難読化されたコンピュータ・ソフトウエアを出力する出力手段をさらに備えてもよい。
【００１８】
上記クライアント・コンピュータは，上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段における難読化済コンピュータ・ソフトウエアの解析を制御する解析制御データを上記サーバ・コンピュータに送信する解析制御データ送信手段をさらに備えてもよい。この場合，上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段は，上記クライアント・コンピュータの上記解析制御データ送信手段から送信された解析制御データ利用して難読化済コンピュータ・ソフトウエアを解析するものとなろう。
【００１９】
上記クライアント・コンピュータは，上記解析制御データのうち難読化が必要な上記解析制御データを指定する指定手段，上記指定手段によって指定された上記解析制御データを難読化する解析制御データ難読化手段をさらに備えてもよい。この場合，上記クライアント・コンピュータの上記解析制御データ送信手段は，たとえば，上記解析制御データ難読化手段によって難読化された上記解析制御データと難読化されていない上記解析制御データとのうち少なくとも一方を上記サーバ・コンピュータに送信するものである。
【００２０】
クライアント・コンピュータが受信した解析結果データを制御する解析結果制御データを入力する解析結果制御データ入力手段，および上記難読化された解析結果データまたは上記復元手段によって復元された解析結果データを，上記解析結果制御データ入力手段から入力された解析結果制御データにもとづいて制御する解析結果データ制御手段をさらに備えてもよい。
【００２１】
上記クライアント・コンピュータは，複数の難読化方法のうち，一の難読化方法を選択する難読化方法選択手段をさらに備えてもよい。この場合，上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，たとえば，上記難読化方法選択手段によって選択された難読化方法によってコンピュータ・ソフトウエアを難読化するものである。
【００２２】
上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，コンピュータ・ソフトウエアの一部を削除し，または無関係なソフトウエアを混入させて，残りの部分を難読化するものでもよい。
【００２３】
上記クライアント・コンピュータは，上記サーバ・コンピュータの上記コンピュータ・ソフトウエア解析手段によって解析する項目を指定する解析項目指定手段，上記解析項目指定手段によって指定された解析項目に対応した難読化方法を，複数の難読化方法の中から決定する難読化方法決定手段，および上記難読化方法決定手段によって決定された難読化方法にもとづく難読化が行われる場合にコンピュータ・ソフトウエアのうち欠損可能な一部を決定する欠損部分決定手段をさらに備えてもよい。この場合，上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，たとえば，上記欠損部分決定手段によって決定された一部を，コンピュータ・ソフトウエアから削除して残りの部分を難読化するものである。
【００２４】
解析項目および難読化方法のそれぞれに対応して，コンピュータ・ソフトウエアのうち欠損可能な部分が規定されている場合には，上記難読化方法決定手段は，たとえば，上記解析項目指定手段によって指定された解析項目に対応して規定されている，コンピュータ・ソフトウエアのうち欠損可能な部分に対応する難読化方法を決定するものとなろう。
【００２５】
上記サーバ・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，たとえば，同一のコンピュータ・ソフトウエアを難読化すると同一の難読化済コンピュータ・ソフトウエアを出力するものである。
【００２６】
上記サーバ・コンピュータは，上記コンピュータ・ソフトウエア解析手段において復元された解析結果データを，コンピュータ・ソフトウエアに対応して記憶する解析結果データ記憶手段，および上記コンピュータ・ソフトウエア解析手段において上記コンピュータ・ソフトウエア送信手段から送信された難読化済コンピュータ・ソフトウエアを解析して生成された解析結果データと，生成された解析結果データのコンピュータ・ソフトウエアに対応して上記解析結果データ記憶手段に記憶されている解析結果データと，を比較して比較結果を出力する比較手段をさらに備えてもよい。
【００２７】
上記クライアント・コンピュータは，上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法を，コンピュータ・ソフトウエアに対応して記憶する難読化方法記憶手段をさらに備えてもよい。この場合，上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，たとえば，新たなコンピュータ・ソフトウエアについて難読化する際に，そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている難読化方法を用いてコンピュータ・ソフトウエアを難読化するものである。
【００２８】
上記クライアント・コンピュータの難読化方法記憶手段は，たとえば，上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段によって行われた難読化方法および解析項目を，コンピュータ・ソフトウエアに対応して記憶している。この場合，上記クライアント・コンピュータの上記コンピュータ・ソフトウエア難読化手段は，新たなコンピュータ・ソフトウエアについて難読化する際に，そのコンピュータ・ソフトウエアに対応して上記難読化方法記憶手段に記憶されている解析項目を上記サーバ・コンピュータに送信する解析項目送信手段をさらに備えてもよい。
【図面の簡単な説明】
【００２９】
【図１】コンピュータ・ソフトウエア解析システムの概要である。
【図２】クライアント・コンピュータの電気的構成を示すブロック図である。
【図３】クライアント・コンピュータの処理手順を示すフローチャートである。
【図４】サーバ・コンピュータの処理手順を示すフローチャートである。
【図５】オリジナル・コンピュータ・ソフトウエアの一例である。
【図６】難読化済コンピュータ・ソフトウエアの一例である。
【図７】復元テーブルの一例である。
【図８】難読化済解析結果データの一例である。
【図９】復元済解析結果データの一例である。
【図１０】クライアント・コンピュータの処理手順の一部を示すフローチャートである。
【図１１】サーバ・コンピュータの処理手順を示すフローチャートである。
【図１２】オリジナル・コンピュータ・ソフトウエアの一例である。
【図１３】解析制御データ難読化テーブルの一例である。
【図１４】解析制御データの一例である。
【図１５】難読化済コンピュータ・ソフトウエアの一例である。
【図１６】解析制御データの一例である。
【図１７】プログラム要素／解析制御データの一例である。
【図１８】解析結果の一例である。
【図１９】解析結果の一例である。
【図２０】クライアント・コンピュータの処理手順を示すフローチャートである。
【図２１】クライアント・コンピュータの処理手順を示すフローチャートである。
【図２２】オリジナル・コンピュータ・ソフトウエアの一例である。
【図２３】解析項目リストの一例である。
【図２４】難読化方法リストの一例である。
【図２５】難読化済コンピュータ・ソフトウエアの一例である。
【図２６】難読化済コンピュータ・ソフトウエアの一例である。
【図２７】難読化済コンピュータ・ソフトウエアの一例である。
【図２８】解析結果の一例である。
【図２９】解析結果の一例である。
【図３０】難読化方法決定処理手順を示すフローチャートである。
【図３１】難読化方法／削除項目特定テーブルの一例である。
【図３２】解析項目／欠損項目特定テーブルの一例である。
【図３３】難読化方法決定処理手順を示すフローチャートである。
【図３４】解析項目と難読化方法との対応関係を示している。
【図３５】クライアント・コンピュータの処理手順の一部を示すフローチャートである。
【図３６】サーバ・コンピュータの処理手順を示すフローチャートである。
【図３７】ソフトウエア解析設定履歴データの一例である。
【図３８】過去ソフトウエア履歴データの一例である。
【図３９】解析比較データの一例である。
【実施例】
【００３０】
図１は，この発明の実施例を示すもので，コンピュータ・ソフトウエア解析システムを示している。
【００３１】
コンピュータ・ソフトウエア解析システムには，インターネット（インターネットに限らない）などのようなネットワークを介して互いに通信可能なクライアント・コンピュータ１およびサーバ・コンピュータ20が含まれている。
【００３２】
図２は，クライアント・コンピュータ１の電気的構成を示すブロック図である。サーバ・コンピュータ20の電気的構成もクライアント・コンピュータ１の電気的構成とほぼ同じである。
【００３３】
クライアント・コンピュータ１の全体の動作は，ＣＰＵ２によって統括される。
【００３４】
クライアント・コンピュータ１には，表示装置３，所定のデータを記憶するメモリ４，サーバ・コンピュータ20と通信するための通信装置５，キーボードなどの入力装置６，CD-ROMドライブ７，ハードディスク10およびハードディスク10にアクセスするためのハードディスク・ドライブ９が含まれている。
【００３５】
CD-ROMドライブ７に，CD-ROM８が装填されることにより，CD-ROM８に記録されているデータ，コンピュータ・ソフトウエアなどが読み取られる。CD-ROM８には，後述する動作を制御する制御プログラムが格納されており，その制御プログラムがクライアント・コンピュータ１にインストールされることにより，後述する動作が行われる。もっとも，制御プログラムはCD-ROM８に格納されていずに，他の記録媒体に記録されていてもよい。インターネットを介して送信された制御プログラムを，通信装置５を用いて受信し，クライアント・コンピュータ１に装填されてもよい。
【００３６】
図３はクライアント・コンピュータ１の処理手順を示すフローチャート，図４はサーバ・コンピュータ20の処理手順を示すフローチャートである。
【００３７】
この実施例は，コンピュータ・ソフトウエア（ソース・コード）の行数，凝集度，複雑度，結合度，などの品質を解析するもので，その品質の解析はサーバ・コンピュータ20において行われる。解析結果がサーバ・コンピュータ20に把握されないようにクライアント・コンピュータ１においてコンピュータ・ソフトウエアの難読化が行われ，難読化されたコンピュータ・ソフトウエアがクライアント・コンピュータ１からサーバ・コンピュータ20に送信される。
【００３８】
まず，解析対象となるオリジナル・コンピュータ・ソフトウエア（ソース・コード）がクライアント・コンピュータ１に入力される（図３ステップ31）。解析対象となるコンピュータ・ソフトウエアは，上述したように，CD-ROM８に格納されており，CD-ROM８から読み取ることによりクライアント・コンピュータ１に入力してもよいし，インターネットを介して送信されたコンピュータ・ソフトウエアを，通信装置５を用いて受信してクライアント・コンピュータ１に入力してもよい。
【００３９】
図５は，オリジナル・コンピュータ・ソフトウエアの一例である。
【００４０】
図５において，第１行はクラスを宣言しており，第２行は関数の一例である。
【００４１】
解析対象となるオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ１に入力すると，そのコンピュータ・ソフトウエアが難読化される（図３ステップ32）。難読化は，公知の手法を利用でき，たとえば，コンピュータ・ソフトウエア中に用いられる名称がランダムな文字列に置き換えられる。難読化されたコンピュータ・ソフトウエアを難読化前のコンピュータ・ソフトウエアに復元するための復元テーブルも生成される（図３ステップ32）。
【００４２】
図６は，難読化されたコンピュータ・ソフトウエアの一例である。
【００４３】
図５に示すオリジナル・コンピュータ・ソフトウエアと図６に示す難読化されたコンピュータ・ソフトウエアとを比較すると明らかなように，図５に示すオリジナル・コンピュータ・ソフトウエアの第１行目の「Shape」という名称が，図６に示す難読化済コンピュータ・ソフトウエアでは「Za112ay」という文字列に変換されている。同様に，図５に示すオリジナル・ソフトウエアの第２行目の「Result Movepoint (int x, int y)」という関数が，図６に示す難読化済コンピュータ・ソフトウエアでは「kop89 S5df5f41 (int sdfj, int js11)」という文字列に変換されている。
【００４４】
図７は，復元テーブルの一例である。
【００４５】
この復元テーブルは，図５に示すオリジナル・コンピュータ・ソフトウエアと図６に示す難読化済コンピュータ・ソフトウエアとを比較することにより生成できる。
【００４６】
復元テーブルの左側の列は，図５に示すオリジナル・コンピュータ・ソフトウエアに含まれているプログラム要素を示している。復元テーブルの右側の列は，図６に示す難読化済コンピュータ・ソフトウエアに含まれるプログラム要素である。復元テーブルの左側の列の文字列と復元テーブルの右側の文字列とを比較することにより，難読化前後のプログラム要素が分かる。復元テーブルを用いて，難読化されたコンピュータ・ソフトウエアを難読化前のオリジナル・コンピュータ・ソフトウエアに復元できることは理解できよう。
【００４７】
オリジナル・コンピュータ・ソフトウエアが難読化されると，図６に示す難読化済コンピュータ・ソフトウエアが表示装置３の表示画面に表示される（図３ステップ33）。表示画面に表示された難読化済コンピュータ・ソフトウエアを，ユーザが確認すると，ユーザによって入力装置６から送信指令が入力される。すると，難読化済コンピュータ・ソフトウエアがクライアント・コンピュータ１からサーバ・コンピュータ20に送信される（図３ステップ34）。コンピュータ・ソフトウエアが難読化されていることをユーザが確認した後に，サーバ・コンピュータ20に難読化済コンピュータ・ソフトウエアに送信できる。
【００４８】
クライアント・コンピュータ１から送信された難読化済コンピュータ・ソフトウエアがサーバ・コンピュータ20において受信されると（図４ステップ41），受信した難読化済コンピュータ・ソフトウエアの品質解析処理が行われる（図４ステップ42）。品質解析処理は，公知の手法を用いることができる。品質解析処理により，たとえば，難読化済コンピュータ・ソフトウエアの複雑度を表す解析結果データが得られる。難読化済コンピュータ・ソフトウエアについて品質解析処理が行われているので，解析結果データも難読化されているものとなる。
【００４９】
図８は，難読化済解析結果データ・テーブルの一例である。
【００５０】
難読化済解析結果データ・テーブルの左側の列は，難読化済コンピュータ・ソフトウエアのプログラム要素である。難読化済解析結果データ・テーブルの右側の列は，解析結果（複雑度）である。難読化済解析結果データ・テーブルから，「Za112ay」というプログラム要素の複雑度が24であり，「kop89 S5df5f41 (int sdfj, int js11)」というプログラム要素の複雑度が７であることが分かる。
【００５１】
難読化済コンピュータ・ソフトウエアについて品質解析が行われているから，解析結果がどのようなプログラム要素について行われたものか分からず，コンピュータ・ソフトウエアの秘匿性が確保される。
【００５２】
難読化済解析結果データがサーバ・コンピュータ20からクライアント・コンピュータ１に送信される（図４ステップ43）。
【００５３】
サーバ・コンピュータ20から送信された難読化済解析結果データがクライアント・コンピュータ１において受信されると（図３ステップ36），復元テーブル（図７参照）を用いて難読化済解析結果データの少なくとも一部が復元される（図３ステップ37）。
【００５４】
図９は，復元された解析結果データを示す解析結果データ・テーブルの一例である。
【００５５】
解析結果データ・テーブルの左側の列には，復元されたプログラム要素が格納されている。解析結果データ・テーブルの右側の列には，そのプログラム要素に対応して解析結果である複雑度が格納されている。プログラム要素は復元されているので，プログラム要素について複雑度が認識できる。
【００５６】
復元済の解析結果データが表示画面の表示などにより，クライアント・コンピュータ１から出力される（図３ステップ38）。
【００５７】
図10から図19は，他の実施例を示している。この実施例は，サーバ・コンピュータ20におけるコンピュータ・ソフトウエアの品質解析を制御する解析制御データがクライアント・コンピュータ１からサーバ・コンピュータ20に送信され，その解析制御データにもとづいてサーバ・コンピュータ20においてコンピュータ・ソフトウエアの品質解析が制御されるものである。
【００５８】
図10は，クライアント・コンピュータ１の処理手順を示すフローチャート，図11は，サーバ・コンピュータ20の処理手順を示すフローチャートである。
【００５９】
クライアント・コンピュータ１にオリジナル・コンピュータ・ソフトウエアが入力する（図10ステップ51）。
【００６０】
図12は，オリジナル・コンピュータ・ソフトウエアの一例である。このようなオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ１に入力する。図12に示されているオリジナル・コンピュータ・ソフトウエアは一部が省略されているのはいうまでもない。
【００６１】
つづいて，クライアント・コンピュータ１のユーザは，解析制御データをクライアント・コンピュータ１に入力する（図10ステップ52）。解析制御データは，サーバ・コンピュータ20において行われる品質解析を制御するものである。解析制御データには，コンピュータ・ソフトウエアに含まれるプログラム要素の行数などの解析項目，プログラム要素のグループ化などが含まれる。つづいて，入力された解析制御データについて難読化の要否の識別処理が行われる（図10ステップ53）。
【００６２】
解析制御データについての難読化の要否識別処理は，解析制御データ難読化識別テーブルが用いられる。
【００６３】
図13は，解析制御データ難読化識別テーブルの一例である。
【００６４】
解析制御データ難読化識別テーブルの左側の列には解析制御データ名称が格納され，右側の列には難読化の要否が格納されている。左側の列には「解析項目」，「解析グループ」および「解析グループ構成」が示されているが，その他の解析制御データについても難読化の要否が格納されているのはいうまでもない。「解析項目」は，解析対象を指示するもので，「解析グループ」は，「解析グループ構成」のプログラム要素を「解析グループ」のグループにするようにコンピュータ・ソフトウエアを制御するものである。
【００６５】
図14は，難読化前解析制御データ・テーブルの一例である。
【００６６】
「解析項目」として「行数」が指定され，「解析グループ」として「ConcreteShape」が指定され，「解析グループ構成」として「Circle」および「Rectangle」が指定されたものとする。図13に示す解析制御データ難読化識別テーブルを参照すると，「解析項目」は難読化が不要であり，「解析グループ」および「解析グループ構成」は難読化が必要であるから，「行数」は難読化が不要であり，「Circle」および「Rectangle」は難読化が必要であると判断される。
【００６７】
解析制御データの難読化の要否識別処理が行われると，オリジナル・コンピュータ・ソフトウエアの難読化および解析制御データのうち難読化が必要と識別された解析制御データが同じ処理により難読化が行われる（図10ステップ54）。復元テーブルも生成されるのはいうまでもない。
【００６８】
図15は，難読化済コンピュータ・ソフトウエアの一例である。
【００６９】
図12に示すオリジナル・コンピュータ・ソフトウエアが難読化されることにより，オリジナル・コンピュータ・ソフトウエアの「Shape」，「Circle」および「Rectangle」が，図15に示す難読化済コンピュータ・ソフトウエアの「Za112ay」，「jkidLL」および「654skJI」に変更される。
【００７０】
図16は，一部が難読化されている難読化済解析制御データ・テーブルの一例である。
【００７１】
解析制御データが難読化されているので，解析制御データがインターネットを介してクライアント・コンピュータ１からサーバ・コンピュータ20に送信され，第三者に傍受されても解析制御データの秘匿性を保つことができる。
【００７２】
図17は，復元テーブルの一例である。
【００７３】
図12に示すオリジナル・コンピュータ・ソフトウエアと図15に示す難読化済コンピュータ・ソフトウエアとを比較し，かつ図14に示す難読化前解析制御データ・テーブルの制御データ内容と図16に示す難読化済解析制御データ・テーブルの制御データ内容とを比較することにより，上述のように復元テーブルが生成される。
【００７４】
図17の復元テーブルの左側の列は，オリジナル・コンピュータ・ソフトウエアまたは解析制御データのプログラム要素であり，図17の復元テーブルの右側の列は難読化済コンピュータ・ソフトウエアまたは難読化済解析制御データのプログラム要素である。
【００７５】
図17に示す復元テーブルを利用することにより難読化されているコンピュータ・ソフトウエアおよび難読化されている解析制御データを難読化前のデータに復元できるようになる。
【００７６】
つづいて，難読化済コンピュータ・ソフトウエアおよび解析制御データ（難読化されたもの，難読化されていないものを含む）が表示装置３の表示画面に表示され（図10ステップ55），ユーザからの送信指令に応じて難読化済コンピュータ・ソフトウエアおよび解析制御データがクライアント・コンピュータ１からサーバ・コンピュータ20に送信される（図10ステップ56でＹＥＳ，ステップ57）。
【００７７】
クライアント・コンピュータ１から送信された難読化済コンピュータ・ソフトウエアおよび解析制御データがサーバ・コンピュータ20において受信されると（図11ステップ61），解析制御データにもとづいて難読化済コンピュータ・ソフトウエアの品質解析が行われる（図11ステップ62）。
【００７８】
難読化済コンピュータ・ソフトウエアの品質解析が行われることにより，上述したように，難読化されている解析結果データが得られる。難読化されている解析結果データがサーバ・コンピュータ20からクライアント・コンピュータ１に送信される（ステップ63）。
【００７９】
図18は，難読化されている解析結果データの一例である。
【００８０】
図18の左側の列は難読化されているプログラム要素または一部難読化されている解析制御データであり，右側の列は解析結果を示している。
【００８１】
このように難読化されている解析結果データが，上述した復元データを用いて復元される。
【００８２】
図19は，復元された解析結果データの一例である。
【００８３】
図19の左側の列は難読化が復元されたプログラム要素および解析制御データであり，右側の列は解析結果を示している。
【００８４】
このように，サーバ・コンピュータ20におけるコンピュータ・ソフトウエアの解析をクライアント・コンピュータ１から制御できる。しかも，クライアント・コンピュータ１からサーバ・コンピュータ20に送信される解析制御データは難読化されているので，第三者に対して秘匿化を維持できる。
【００８５】
図20から図34は，他の実施例を示している。
【００８６】
図20および図21は，クライアント・コンピュータ１の処理手順を示すフローチャートである。
【００８７】
上述したのと同様に，クライアント・コンピュータ１にオリジナル・コンピュータ・ソフトウエアが入力される（図20ステップ71）。
【００８８】
図22は，オリジナル・コンピュータ・ソフトウエアの一例である。
【００８９】
図22に示したオリジナル・コンピュータ・ソフトウエアは難読化されていないので，その内容を把握できる。図22においても，一部が省略されている。
【００９０】
クライアント・コンピュータ１において，解析項目リストから解析項目が選択され（図20ステップ72），難読化方法リストから難読化方法が決定される（ステップ73）。
【００９１】
図23は，解析項目リストの一例である。
【００９２】
解析項目リストは，サーバ・コンピュータ20において品質解析を行う項目がリスト化されているものである。解析項目リストには行数および複雑度が格納されている。
【００９３】
図24は，難読化方法リストの一例である。
【００９４】
難読化方法リストには，難読化方法として，「名前変換」，「名前変換＋処理空化」（名前変換と処理空化との両方の処理が行われる）および「名前変換＋処理削除」（名前変換と処理削除との両方の処理が行われる）が格納されている。
【００９５】
これらの解析項目リストおよび難読化方法リストが利用されて難読化方法が決定されるが，その詳細については後述する。
【００９６】
難読化方法が決定されると，その決定された難読化方法にしたがって，入力されたオリジナル・コンピュータ・ソフトウエアが難読化される（図20ステップ74）。この場合も復元テーブルが生成される。
【００９７】
図25から図27は，難読化されたコンピュータ・ソフトウエアの一例である。
【００９８】
図25は，名前変換により難読化されたコンピュータ・ソフトウエアの一例である。
【００９９】
オリジナル・コンピュータ・ソフトウエアの「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)」に変換されている。
【０１００】
図26は，名前変換と処理空化により難読化されたコンピュータ・ソフトウエアの一例である。
【０１０１】
オリジナル・コンピュータ・ソフトウエアの「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);」などのように処理に無関係なソフトウエアを追加することにより難読化してもよい。
【０１０２】
図27は，名前変換と処理削除により難読化されたコンピュータ・ソフトウエアの一例である。
【０１０３】
オリジナル・コンピュータ・ソフトウエアの「Shape」および「Result Movepoint (int x,int y)」が，「Za112ay」および「kop89 S5df5f41(int sdfj, int js11」に変換されている。また，「int r2=x*x*+y*y」および「if (r2==0)」のそれぞれの処理内容が削除されている。
【０１０４】
難読化されたコンピュータ・ソフトウエアがクライアント・コンピュータ１からサーバ・コンピュータ20に送信されると，上述したように，サーバ・コンピュータ20において，難読化済コンピュータ・ソフトウエアの品質解析が行われ，難読化済解析結果データが得られる。得られた難読化済解析結果データは，サーバ・コンピュータ20からクライアント・コンピュータ１に送信される。
【０１０５】
サーバ・コンピュータ20から送信された難読化済解析結果データがクライアント・コンピュータ１において受信されると（図21ステップ78），難読化済解析結果データが復元され，解析結果データが得られる。
【０１０６】
図28は，復元された解析結果データの一例である。
【０１０７】
解析項目として，解析項目リストに含まれているように行数と複雑度とがあり，それらの解析項目について品質が解析されている。たとえば，行数は37，複雑度は５である。
【０１０８】
つづいて，上述したように解析項目選択処理（図20ステップ72）によって選択されていない解析項目のデータが解析データから削除される（図21ステップ80）。
【０１０９】
図29は，選択されていない項目である行数についてのデータが削除されている解析結果データの一例である。
【０１１０】
このように，解析項目として，複雑度が選択され，行数が選択されていないと解析データから行数のデータが削除される。
【０１１１】
図30は，難度化方法決定処理手順（図20ステップ73の処理手順）を示すフローチャートの一例である。
【０１１２】
上述したように，図24に示す難読化方法リストが読み取られ（ステップ91），難読化方法／削除項目特定テーブルが読み取られる（ステップ92）。
【０１１３】
図31は，難読化方法／削除項目特定テーブルの一例である。
【０１１４】
難読化方法／削除項目特定テーブルは，コンピュータ・ソフトウエアのプログラム要素のうち欠損するものと欠損しないものとを難読化方法に対応して格納するものである。たとえば，難読化方法が「名前変換」の場合には，プログラム要素の名前は欠損するが，条件文および処理数は欠損しない。難読化方法が「名前変換＋処理空化」の場合には，プログラム要素の名前および条件文は欠損するが，処理数は欠損しない。難読化方法が「名前変換＋処理削除」の場合には，プログラム要素の名前および処理数は欠損するが，条件文は欠損しない。
【０１１５】
難読化方法／削除項目特定テーブルが読み取られると，解析項目削除可能項目テーブルが読み取られる（図30ステップ92）。
【０１１６】
図32は，難読化方法／削除項目特定テーブルの一例である。
【０１１７】
難読化方法／削除項目特定テーブルは，コンピュータ・ソフトウエアのプログラム要素のうち欠損するものと欠損しないものとを解析項目に対応して格納するものである。たとえば，解析項目が行数の場合には，プログラム要素の名前および条件文は欠損するが，処理数は欠損しない。解析項目が複雑度の場合には，プログラム要素の名前および処理数は欠損するが，条件文は欠損しない。
【０１１８】
このようにして，テーブルが読み取られると，選択された解析項目（図20ステップ72）に対応する欠損可能なプログラム要素が，図32に示す解析項目／欠損可能項目特定テーブルから分かり，欠損可能なプログラム要素に対応した難読化方法が，図31に示す難読化方法／削除項目テーブルから決定される。たとえば，解析項目として「行数」が選択されると，図32から名前と条件文とが欠損可能なので，これらのプログラム要素が欠損可能な難読化方法として「名前変換＋処理空化」が図31から決定される。
【０１１９】
図33は，難読化方法決定処理手順の他の処理手順を示すフローチャートである。
【０１２０】
上述したのと同様に，図24に示す難読化方法リストが読み取られる（ステップ101）。つづいて，解析項目／難読化方法選択テーブルが読み取られる（ステップ102）。
【０１２１】
図34は，解析項目／難読化方法選択テーブルの一例である。
【０１２２】
解析項目／難読化方法選択テーブルは，解析項目に対応して難読化方法が格納されている。たとえば，解析項目が行数の場合には，「名前変換＋処理空化」と「名前変換」とが対応して格納され，解析項目が複雑度の場合には，「名前変換＋処理削除」と「名前変換」とが対応して格納されている。
【０１２３】
解析項目／難読化方法選択テーブルが読み取られると，その読み取られたテーブルから難読化方法が決定される（ステップ103）。たとえば，解析項目として行数が選択されていると，「名前変換＋処理空化」と「名前変換」とが難読化方法として決定され，解析項目として複雑度が選択されていると「名前変換＋処理削除」と「名前変換」とが難読化方法として決定される。解析項目として，行数および複雑度とが選択されていると，「名前変換」が難読化方法として決定される。
【０１２４】
図35から図39は，さらに他の実施例を示している。この実施例は，過去の履歴を利用して難読化方法などを決定するものである。
【０１２５】
図35は，クライアント・コンピュータ１の処理手順を示すフローチャート，図36は，サーバ・コンピュータ20の処理手順を示すフローチャートである。
【０１２６】
まず，クライアント・コンピュータ１に過去のソフトウエア解析設定履歴データが記憶されているかどうかが確認される（図35ステップ111）。
【０１２７】
図37は，ソフトウエア解析設定履歴データが格納されているテーブルの一例である。
【０１２８】
ソフトウエア解析設定履歴データは，上述した難読化方法の決定などの過去の設定状況を示すものである。第１列，第２列および第３列には，それぞれソース・コード（ソフトウエア）の名称，難読化方法のパターンおよび解析項目が格納されている。これらのデータを確認することにより，過去にどのようなソフトウエアについて，どのような難読化方法が行われ，どのような解析項目について品質解析が行われたかがわかる。たとえば，第１行から，ソース・コードの名称が「ClassA」について，パターンII（「名前変換＋処理空化」）の難読化方法が行数について行われたことがわかる。過去の難度化処理と同一の難度化処理を行うことができる。
【０１２９】
クライアント・コンピュータ１にソフトウエア解析設定履歴データが格納されていなければ（図35ステップ111でＮＯ），クライアント・コンピュータ１のユーザによってソフトウエア解析設定処理が行われる（図35ステップ112）。上述したようにして解析項目および難読化方法が設定される。すると，設定された情報がソフトウエア解析設定履歴データとして，記憶される（図35ステップ113）。クライアント・コンピュータ１にソフトウエア解析設定履歴データが格納されていれば（図35ステップ111でＹＥＳ），ステップ112および113の処理はスキップされる。
【０１３０】
つづいて，ユーザによって解析対象となるオリジナル・コンピュータ・ソフトウエアが選択され（図35ステップ114），選択されたオリジナル・コンピュータ・ソフトウエアがクライアント・コンピュータ１に入力する（図35ステップ115）。
【０１３１】
上述したように，クライアント・コンピュータ１に入力したオリジナル・コンピュータ・ソフトウエアが難読化され，かつ復元テーブルが生成される（図35ステップ116）。どの難読化方法で行うかは，図37に示すソフトウエア解析設定履歴データにもとづいて決定される。上述したように，入力したソース・コード（オリジナル・コンピュータ・ソフトウエア）が「ClassA」であるとすると，パターンII（「名前変換＋処理空化」）の難読化方法で難読化処理が行われる。
【０１３２】
難読化済みコンピュータ・ソフトウエアが表示され（図35ステップ117），クライアント・コンピュータ１に送信指令が与えられることにより，難読化済コンピュータ・ソフトウエアがクライアント・コンピュータ１からサーバ・コンピュータ20に送信される（図35ステップ118でＹＥＳ，ステップ119）。
【０１３３】
クライアント・コンピュータ１から送信された難読化済コンピュータ・ソフトウエアがサーバ・コンピュータ20において受信されると（図36ステップ121），サーバ・コンピュータ20において過去ソフトウエア履歴データが検索される（図36ステップ122）。過去ソフトウエア履歴データは，サーバ・コンピュータ20において過去に行われた品質解析の結果を表わすものである。
【０１３４】
図38は，過去ソフトウエア履歴データが格納されているテーブルの一例である。
【０１３５】
ソース・コード名に対応して，過去の品質解析の結果である行数と複雑度とが格納されている。上述したように，コンピュータ・ソフトウエアは難読化されているので，その名称（ソース・コード名）の難読化される。たとえば，ソース・コード名が「ClassA」のコンピュータ・ソフトウエアが難読化されることにより，ソース・コード名は，「nrBCZ12」に変更される。図38においては，難読化されたソース・コード名に対応して行数と複雑度とがテーブルに格納されている。
【０１３６】
つづいて，難読化済コンピュータ・ソフトウエアの品質解析が行われる（図36ステップ123）。品質解析により得られた解析結果データは過去ソフトウエア履歴データが格納されているテーブルに記憶される（図36ステップ124）。すでに品質解析が行われた難読化済コンピュータ・ソフトウエアについての解析結果データが過去ソフトウエア履歴データ・テーブルに格納されている場合には，その解析結果データに上書きされる。これにより過去ソフトウエア履歴データが更新される。もっとも，解析結果データを上書きせずに時系列的に記憶するようにしてもよい。過去に行われた解析結果データと，新たに行われた解析結果データとが比較されることにより解析結果の変更の程度が分る。
【０１３７】
図39は，過去に行われた解析結果データと，新たに行われた解析結果データとの比較を表わす比較データを格納されている比較データ・テーブルの一例である。
【０１３８】
上述したように，過去に行われた解析結果データと，新たに行われた解析結果データとが比較されることにより解析結果の変更の程度が分る。図39においては，過去に行われた行数の解析結果と新たに行われた行数の解析結果の増減および過去に行われた複雑度の解析結果と新たに行われた複雑度の解析結果の増減が格納されている。このように，過去の解析結果との比較結果を得ることができる。
【０１３９】
難読化されている解析結果データおよび過去の解析結果との比較結果を表わすデータがサーバ・コンピュータ20からクライアント・コンピュータ１に送信される（図36ステップ125）。
【符号の説明】
【０１４０】
１  クライアント・コンピュータ
２  ＣＰＵ
８  CD-ROM
20  サーバ・コンピュータ
【図１】
2013061843.tif 000003
【図２】
2013061843.tif 000004
【図３】
2013061843.tif 000005
【図４】
2013061843.tif 000006
【図５】
2013061843.tif 000007
【図６】
2013061843.tif 000008
【図７】
2013061843.tif 000009
【図８】
2013061843.tif 000010
【図９】
2013061843.tif 000011
【図１０】
2013061843.tif 000012
【図１１】
2013061843.tif 000013
【図１２】
2013061843.tif 000014
【図１３】
2013061843.tif 000015
【図１４】
2013061843.tif 000016
【図１５】
2013061843.tif 000017
【図１６】
2013061843.tif 000018
【図１７】
2013061843.tif 000019
【図１８】
2013061843.tif 000020
【図１９】
2013061843.tif 000021
【図２０】
2013061843.tif 000022
【図２１】
2013061843.tif 000023
【図２２】
2013061843.tif 000024
【図２３】
2013061843.tif 000025
【図２４】
2013061843.tif 000026
【図２５】
2013061843.tif 000027
【図２６】
2013061843.tif 000028
【図２７】
2013061843.tif 000029
【図２８】
2013061843.tif 000030
【図２９】
2013061843.tif 000031
【図３０】
2013061843.tif 000032
【図３１】
2013061843.tif 000033
【図３２】
2013061843.tif 000034
【図３３】
2013061843.tif 000035
【図３４】
2013061843.tif 000036
【図３５】
2013061843.tif 000037
【図３６】
2013061843.tif 000038
【図３７】
2013061843.tif 000039
【図３８】
2013061843.tif 000040
【図３９】
2013061843.tif 000041