(57)【要約】      （修正有）【課題】アプリケーションに含まれるアプリケーション本体のコードとライブラリのコードとを区別することに寄与する情報を提供する。【解決手段】アプリケーション解析装置１０は、アプリケーションのマニフェストファイルで指定されたアプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とをマニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成部１１と、アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する呼び出し関係リスト作成部１２と、呼び出し関係リストにおいて、アプリケーション本体領域リストに含まれるパッケージ名のパッケージを呼び出す呼び出し元パッケージのパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト追加部１３と、を備える。【選択図】図１
2020197907.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成部と、
前記アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する呼び出し関係リスト作成部と、
前記呼び出し関係リストにおいて、前記アプリケーション本体領域リストに含まれるパッケージ名のパッケージを呼び出す呼び出し元パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加部と、
を備えるアプリケーション解析装置。
【請求項２】
アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成部、
を備えるアプリケーション解析装置。
【請求項３】
アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成部と、
前記アプリケーション本体領域リストに含まれるパッケージ名であってトップレベルドメインを含むパッケージ名から前記トップレベルドメインを削除した残りの部分において上位パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加部と、
を備えるアプリケーション解析装置。
【請求項４】
コンピュータに、
アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップと、
前記アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する呼び出し関係リスト作成ステップと、
前記呼び出し関係リストにおいて、前記アプリケーション本体領域リストに含まれるパッケージ名のパッケージを呼び出す呼び出し元パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加ステップと、
を実行させるためのコンピュータプログラム。
【請求項５】
コンピュータに、
アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップ、
を実行させるためのコンピュータプログラム。
【請求項６】
コンピュータに、
アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップと、
前記アプリケーション本体領域リストに含まれるパッケージ名であってトップレベルドメインを含むパッケージ名から前記トップレベルドメインを削除した残りの部分において上位パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加ステップと、
を実行させるためのコンピュータプログラム。
【請求項７】
アプリケーション解析装置が、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップと、
前記アプリケーション解析装置が、前記アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する呼び出し関係リスト作成ステップと、
前記アプリケーション解析装置が、前記呼び出し関係リストにおいて、前記アプリケーション本体領域リストに含まれるパッケージ名のパッケージを呼び出す呼び出し元パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加ステップと、
を含むアプリケーション解析方法。
【請求項８】
アプリケーション解析装置が、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップ、
を含むアプリケーション解析方法。
【請求項９】
アプリケーション解析装置が、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップと、
前記アプリケーション解析装置が、前記アプリケーション本体領域リストに含まれるパッケージ名であってトップレベルドメインを含むパッケージ名から前記トップレベルドメインを削除した残りの部分において上位パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加ステップと、
を含むアプリケーション解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション解析装置、コンピュータプログラム及びアプリケーション解析方法に関する。
【背景技術】
【０００２】
従来、例えばスマートフォンやタブレット型のコンピュータ（タブレットＰＣ）等の端末装置に適用されるアプリケーションを解析するアプリケーション解析技術として、例えば非特許文献１が知られている。非特許文献１に記載の従来技術では、アプリケーションに含まれるライブラリを特定するために、膨大な量のアプリケーションデータセットからライブラリを一意に特定するプロファイルを作成している。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Y. Zhang et al., “Detecting third-party libraries in Android applications with high precision and recall,” 25th IEEE Int. Conf. Softw. Anal. Evol. Reengineering, SANER 2018 - Proc., vol. 2018-March, pp. 141-152, 2018.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上述した従来のアプリケーション解析技術では、プロファイルがないライブラリを含むアプリケーションに対して、アプリケーション本体のコードとライブラリのコードとを区別することが難しい。
【０００５】
本発明は、このような事情を考慮してなされたものであり、その目的は、アプリケーションに含まれるアプリケーション本体のコードとライブラリのコードとを区別することに寄与する情報を提供することにある。
【課題を解決するための手段】
【０００６】
（１）本発明の一態様は、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成部と、前記アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する呼び出し関係リスト作成部と、前記呼び出し関係リストにおいて、前記アプリケーション本体領域リストに含まれるパッケージ名のパッケージを呼び出す呼び出し元パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加部と、を備えるアプリケーション解析装置である。
（２）本発明の一態様は、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成部、を備えるアプリケーション解析装置である。
（３）本発明の一態様は、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成部と、前記アプリケーション本体領域リストに含まれるパッケージ名であってトップレベルドメインを含むパッケージ名から前記トップレベルドメインを削除した残りの部分において上位パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加部と、を備えるアプリケーション解析装置である。
【０００７】
（４）本発明の一態様は、コンピュータに、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップと、前記アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する呼び出し関係リスト作成ステップと、前記呼び出し関係リストにおいて、前記アプリケーション本体領域リストに含まれるパッケージ名のパッケージを呼び出す呼び出し元パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加ステップと、を実行させるためのコンピュータプログラムである。
（５）本発明の一態様は、コンピュータに、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップ、を実行させるためのコンピュータプログラムである。
（６）本発明の一態様は、コンピュータに、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップと、前記アプリケーション本体領域リストに含まれるパッケージ名であってトップレベルドメインを含むパッケージ名から前記トップレベルドメインを削除した残りの部分において上位パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加ステップと、を実行させるためのコンピュータプログラムである。
【０００８】
（７）本発明の一態様は、アプリケーション解析装置が、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップと、前記アプリケーション解析装置が、前記アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する呼び出し関係リスト作成ステップと、前記アプリケーション解析装置が、前記呼び出し関係リストにおいて、前記アプリケーション本体領域リストに含まれるパッケージ名のパッケージを呼び出す呼び出し元パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加ステップと、を含むアプリケーション解析方法である。
（８）本発明の一態様は、アプリケーション解析装置が、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップ、を含むアプリケーション解析方法である。
（９）本発明の一態様は、アプリケーション解析装置が、アプリケーションを構成するパッケージのパッケージ名のうち、前記アプリケーションのマニフェストファイルで指定された前記アプリケーションのパッケージ名と、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名とを前記マニフェストファイルから取得し、当該取得したパッケージ名をアプリケーション本体領域リストに追加する本体領域リスト作成ステップと、前記アプリケーション解析装置が、前記アプリケーション本体領域リストに含まれるパッケージ名であってトップレベルドメインを含むパッケージ名から前記トップレベルドメインを削除した残りの部分において上位パッケージのパッケージ名を前記アプリケーション本体領域リストに追加する本体領域リスト追加ステップと、を含むアプリケーション解析方法である。
【発明の効果】
【０００９】
本発明によれば、アプリケーションに含まれるアプリケーション本体のコードとライブラリのコードとを区別することに寄与する情報を提供することができるという効果が得られる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に係るアプリケーション解析装置の構成例を示すブロック図である。
【図２】一実施形態に係るアプリケーション解析方法の手順を示すフロー図である。
【図３】一実施形態に係るアプリケーション解析方法の説明図である。
【図４】一実施形態に係るアプリケーション解析方法の説明図である。
【図５】一実施形態に係るアプリケーション解析方法の説明図である。
【図６】一実施形態に係るアプリケーション解析方法の説明図である。
【図７】一実施形態に係るアプリケーション解析方法の説明図である。
【図８】一実施形態に係るアプリケーション解析方法の説明図である。
【図９】一実施形態に係るアプリケーション解析方法の説明図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照し、本発明の実施形態について説明する。本実施形態では、アプリケーションの例として、「Android（登録商標）」と呼ばれるＯＳ（Operating System：オペレーティングシステム）上で動作するアプリケーションを挙げて説明する。
【００１２】
図１は、一実施形態に係るアプリケーション解析装置の構成例を示すブロック図である。図１において、アプリケーション解析装置１０は、本体領域リスト作成部１１と、呼び出し関係リスト作成部１２と、本体領域リスト追加部１３とを備える。図１に示されるアプリケーション解析装置１０の各機能は、アプリケーション解析装置１０が備えるＣＰＵ（Central Processing Unit：中央演算処理装置）がコンピュータプログラムを実行することにより実現される。なお、アプリケーション解析装置１０として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。
【００１３】
本体領域リスト作成部１１は、解析対象のアプリケーション（以下、解析対象アプリケーションと称する）についてアプリケーション本体領域リストを作成する。アプリケーション本体領域リストには、解析対象アプリケーションを構成するパッケージのパッケージ名のうち、解析対象アプリケーションのアプリケーション本体を構成するパッケージのパッケージ名が記載される。
【００１４】
呼び出し関係リスト作成部１２は、解析対象アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する。
【００１５】
本体領域リスト追加部１３は、アプリケーション本体領域リストに対して、解析対象アプリケーションのアプリケーション本体を構成するパッケージのパッケージ名を追加する処理（本体領域リスト追加処理）を実行する。
【００１６】
次に図２から図９を参照して本実施形態に係るアプリケーション解析方法を説明する。図２は、本実施形態に係るアプリケーション解析方法の手順を示すフロー図である。図３から図９は、本実施形態に係るアプリケーション解析方法の説明図である。
【００１７】
（ステップＳ１：本体領域リスト作成ステップ）  本体領域リスト作成部１１は、解析対象アプリケーションについてアプリケーション本体領域リストを作成する。以下、アプリケーション本体領域リストの作成方法を説明する。
【００１８】
（アプリケーション本体領域リストの作成方法）
本体領域リスト作成部１１は、解析対象アプリケーションの「AndroidManifest.xml」と呼ばれるマニフェスト（宣言）ファイルから以下に示すパッケージ名の例１，例２を取得し、取得したパッケージ名の例１，例２をアプリケーション本体領域リストに記載する。
【００１９】
（パッケージ名の例１）
パッケージ名１は、解析対象アプリケーションの「AndroidManifest.xml」で指定された解析対象アプリケーションのパッケージ名「PackageName」である。本体領域リスト作成部１１は、解析対象アプリケーションの「AndroidManifest.xml」から「manifest」要素の「package」属性の値を取得し、取得した「manifest」要素の「package」属性の値をアプリケーション本体領域リストに追加する。
【００２０】
（パッケージ名の例２）
パッケージ名の例２は、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名である。本体領域リスト作成部１１は、解析対象アプリケーションの「AndroidManifest.xml」における「application」要素内の「activity」要素内の「intent-filter」要素内において、「action」要素の「android:name」属性の値が「android.intent.action.MAIN」であり、且つ、「category」要素の「android:name」属性の値が「android.intent.category.LAUNCHER」であった場合、当該「activity」要素の「android:name」属性の値（クラス名）が所属するパッケージのパッケージ名を取得する。当該取得されたパッケージ名は、ユーザが操作する画面から起動されるクラスが所属するパッケージのパッケージ名である。本体領域リスト作成部１１は、当該取得されたパッケージ名をアプリケーション本体領域リストに追加する。
【００２１】
上記したパッケージ名の例１，例２は、解析対象アプリケーションの開発者が自身のアプリケーションのパッケージ名として設定するので、解析対象アプリケーションのアプリケーション本体を構成するパッケージのパッケージ名であると考えられる。
【００２２】
なお、クラス名とパッケージ名との関係は、例えばクラス名が「com.example.app.MainActivity」であるクラスが所属するパッケージのパッケージ名は「com.example.app」である。また、クラス名が「.」から始まる場合は相対パスを示しており、「.」のパスは「PackageName」となる。例えば、「PackageName=「com.example.app」」、クラス名「.MainActivity」の場合、「com.example.app.MainActivity」がクラス名「.MainActivity」の絶対パスとなる。
【００２３】
図３は、解析対象アプリケーションの構成例を示す説明図である。ここでの例では、図４に示されるように、パッケージ名の例１として「jp.company_x.app_main」が取得され、また、パッケージ名の例２として「jp.application_x.main」が取得され、当該「jp.company_x.app_main」及び「jp.application_x.main」がアプリケーション本体領域リストに追加される。
【００２４】
（ステップＳ２：呼び出し関係リスト作成ステップ）  呼び出し関係リスト作成部１２は、解析対象アプリケーションを構成するパッケージの間の呼び出し関係を示す呼び出し関係リストを作成する。以下、呼び出し関係リストの作成方法を説明する。
【００２５】
（呼び出し関係リストの作成方法）
呼び出し関係リスト作成部１２は、解析対象アプリケーションを構成するパッケージの間の呼び出し関係を解析し、解析結果に基づいて呼び出し関係リストを作成する。解析対象アプリケーションがソースコードで提供される場合には、当該ソースコードを解析に使用する。一方、解析対象アプリケーションがコンパイル後のコードで提供される場合には、例えば「apk-tool」と呼ばれるツールを利用して解析対象アプリケーションのコンパイル後のコードを逆コンパイルし、逆コンパイル後のデータを解析に使用する。
【００２６】
「Android」の実行環境の「Dalvik仮想マシン」では、メソッドの呼び出しは、「invoke-」で始まるオペレーションコードで行われると定義されている。このため、解析対象アプリケーションのクラスファイル（例えば「apk-tool」を利用して逆コンパイルした場合、拡張子「.smali」が付いたファイル）から「invoke-」で始まる行を抽出する。クラスファイルのオペレーションコードで始まる行は、「OPCODE Register番号 クラス名;->メソッド名（型）」で記載されるので、当該呼び出し先のクラス名が所属するパッケージのパッケージ名を取得する。例えば、クラス名「com.sample.main」のクラスからクラス名「com.test.main」のクラスのメソッドを実行していた場合、パッケージ名「com.sample」のパッケージからパッケージ名「com.test」のパッケージにメソッドの呼び出し関係が存在するとして、当該呼び出し関係を示す「呼び出し元パッケージ名「com.sample」、呼び出し先パッケージ名「com.test」」の組を呼び出し関係リストに追加する。この呼び出し関係リスト作成処理をすべてのクラスファイルに対して実行し、呼び出し関係リストを作成する。呼び出し関係リストの構成例は、［（呼び出し元パッケージＡ、呼び出し先パッケージＢ）、（呼び出し元パッケージＡ、呼び出し先パッケージＣ）、・・・、（呼び出し元パッケージＮ、呼び出し先パッケージＭ）、・・・］となる。
【００２７】
図５には、呼び出し関係の例が示される。図５の呼び出し関係の例は、図４に示される解析対象アプリケーションについてである。図５において、呼び出し関係は破線で示される、破線の始点が呼び出し元パッケージを示し、破線の終点が呼び出し先パッケージを示す。
【００２８】
（ステップＳ３：本体領域リスト追加ステップ）  本体領域リスト追加部１３は、ステップＳ１で作成されたアプリケーション本体領域リストに対して、本体領域リスト追加処理を実行する。以下、本体領域リスト追加処理の例１，例２，例３を説明する。
【００２９】
（本体領域リスト追加処理の例１）
本体領域リスト追加部１３は、アプリケーション本体領域リストに含まれるパッケージ名に基づいて、上位のパッケージの存在を解析する。具体的には、本体領域リスト追加部１３は、トップレベルドメインのリストを備える。本体領域リスト追加部１３は、アプリケーション本体領域リストに含まれるパッケージ名であってトップレベルドメインを含むパッケージ名から当該トップレベルドメインを削除した残りの部分において上位パッケージのパッケージ名を取得する。本体領域リスト追加部１３は、当該取得した上位パッケージのパッケージ名をアプリケーション本体領域リストに追加する。
【００３０】
図６は、本体領域リスト追加処理の例１の説明図である。図６の例は、図５に示される解析対象アプリケーションについてである。例えば、アプリケーション本体領域リストに含まれるパッケージ名「jp.application_x.main」について、先頭の「jp」がトップレベルドメインである。このため、パッケージ名「jp.application_x.main」から「jp」を削除した残りの部分「application_x.main」において上位の「application_x」に係るパッケージ名「jp.application_x」を上位パッケージのパッケージ名としてアプリケーション本体領域リストに追加する。また、アプリケーション本体領域リストに含まれるパッケージ名「jp.company_x.app_main」について、先頭の「jp」がトップレベルドメインである。このため、パッケージ名「jp.company_x.app_main」から「jp」を削除した残りの部分「company_x.app_main」において上位の「company_x」に係るパッケージ名「jp.company_x」を上位パッケージのパッケージ名としてアプリケーション本体領域リストに追加する。この結果、アプリケーション本体領域リストには、パッケージ名「jp.application_x.main」、「jp.application_x」、「jp.company_x.app_main」及び「jp.company_x」が記載される。
【００３１】
（本体領域リスト追加処理の例２）
本体領域リスト追加部１３は、アプリケーション本体領域リストに含まれるパッケージ名のパッケージから下位に位置するすべてのパッケージをアプリケーション本体のパッケージであるとして、当該下位に位置するすべてのパッケージのパッケージ名をアプリケーション本体領域リストに追加する。
【００３２】
図７は、本体領域リスト追加処理の例２の説明図である。図７の例は、図６に示される解析対象アプリケーションについてである。例えば、アプリケーション本体領域リストに含まれるパッケージ名「jp.application_x」について下位に位置するパッケージのパッケージ名「jp.application_x.network」をアプリケーション本体領域リストに追加する。また、アプリケーション本体領域リストに含まれるパッケージ名「jp.application_x.main」について下位に位置するパッケージのパッケージ名「jp.application_x.main.view」をアプリケーション本体領域リストに追加する。この結果、アプリケーション本体領域リストには、パッケージ名「jp.application_x.main」、「jp.application_x」、「jp.application_x.network」、「jp.application_x.main.view」、「jp.company_x.app_main」及び「jp.company_x」が記載される。
【００３３】
（本体領域リスト追加処理の例３）
本体領域リスト追加部１３は、呼び出し関係リストにおいて、アプリケーション本体領域リストに含まれるパッケージ名のパッケージを呼び出す呼び出し元パッケージのパッケージ名をアプリケーション本体領域リストに追加する。
【００３４】
図８は、本体領域リスト追加処理の例３の説明図である。図８の例は、図７に示される解析対象アプリケーションについてである。呼び出し関係リストにおいて、例えば、パッケージ名「jp.widget.time」のパッケージ（呼び出し元パッケージ）からアプリケーション本体領域リストに含まれるパッケージ名「jp.application_x.main」のパッケージを呼び出している。このため、呼び出し元パッケージのパッケージ名「jp.widget.time」をアプリケーション本体領域リストに追加する。
【００３５】
以上が、本体領域リスト追加処理の例１，例２，例３の説明である。本体領域リスト追加部１３は、アプリケーション本体領域リストに追加する新規のパッケージ名が発見されなくなるまで、本体領域リスト追加処理の例１，例２，例３を繰り返し実行する。この結果、図９に示されるように、アプリケーション本体領域リストに含まれる「jp.widget.time」から発見された上位パッケージのパッケージ名「jp.widget」がさらにアプリケーション本体領域リストに追加される。
【００３６】
なお、本体領域リスト追加処理の例１，例２，例３のうち、いずれか一つが単独で実行されてもよく、又は、複数が実行されてよい。
【００３７】
本体領域リスト追加ステップが終了すると、図２の処理を終了する。
【００３８】
上述した実施形態によれば、解析対象アプリケーションを構成するパッケージのパッケージ名のうち、解析対象アプリケーションのアプリケーション本体を構成するパッケージのパッケージ名が記載されたアプリケーション本体領域リストを作成することができる。このアプリケーション本体領域リストによって、アプリケーションに含まれるアプリケーション本体のコードを判別することができる。これにより、アプリケーションに含まれるアプリケーション本体のコードとライブラリのコードとを区別することに寄与することができるという効果が得られる。
【００３９】
例えば、アプリケーションの悪性解析を行う場合に、解析対象にしなくてもよい第三者ライブラリを解析対象から除外することができる。また、アプリケーションがプライバシーポリシーに準拠して動作しているか否かを解析する場合に、解析対象にしなくてもよい第三者ライブラリを解析対象から除外することができる。第三者ライブラリとしては、例えば、広告を表示するための広告ライブラリやアプリケーションの利用実態を解析するための解析ライブラリなどが挙げられる。このように本実施形態のアプリケーション本体領域リストによれば、アプリケーションの解析の効率向上を図る効果が得られる。
【００４０】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００４１】
上述したアプリケーション解析装置の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disc）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００４２】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００４３】
１０…アプリケーション解析装置、１１…本体領域リスト作成部、１２…呼び出し関係リスト作成部、１３…本体領域リスト追加部
【図１】
2020197907.tif 000003
【図２】
2020197907.tif 000004
【図３】
2020197907.tif 000005
【図４】
2020197907.tif 000006
【図５】
2020197907.tif 000007
【図６】
2020197907.tif 000008
【図７】
2020197907.tif 000009
【図８】
2020197907.tif 000010
【図９】
2020197907.tif 000011