JP6466234B2 - Application analysis apparatus, application analysis method, and program - Google Patents

Application analysis apparatus, application analysis method, and program Download PDF

Info

Publication number
JP6466234B2
JP6466234B2 JP2015084033A JP2015084033A JP6466234B2 JP 6466234 B2 JP6466234 B2 JP 6466234B2 JP 2015084033 A JP2015084033 A JP 2015084033A JP 2015084033 A JP2015084033 A JP 2015084033A JP 6466234 B2 JP6466234 B2 JP 6466234B2
Authority
JP
Japan
Prior art keywords
name
function
class
application
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015084033A
Other languages
Japanese (ja)
Other versions
JP2016206739A (en
Inventor
秀明 川端
秀明 川端
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2015084033A priority Critical patent/JP6466234B2/en
Publication of JP2016206739A publication Critical patent/JP2016206739A/en
Application granted granted Critical
Publication of JP6466234B2 publication Critical patent/JP6466234B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、アプリケーションを解析する技術に関する。   The present invention relates to a technique for analyzing an application.

アプリケーションの安全性を解析する技術として、アプリケーションの挙動に基づいてアプリケーションの安全性を判定する動的解析技術がある(例えば、特許文献1参照)。プライバシーの観点でアプリケーションの安全性を評価するプライバシー評価では、アプリケーションが提示するプライバシーポリシーの内容とアプリケーションの実際の挙動とが一致しているか否かを判断することが重要である。プライバシーポリシーでは、アプリケーションが取り扱う情報と、情報を取り扱う目的と、情報の送信先とが規定されている。動的解析では、アプリケーションが個人情報(利用者情報)を含むデータを送信した場合、その挙動がプライバシーポリシーに規定された挙動と一致しているか否かが解析される。   As a technique for analyzing the safety of an application, there is a dynamic analysis technique for determining the safety of an application based on the behavior of the application (see, for example, Patent Document 1). In privacy evaluation that evaluates the safety of an application from the viewpoint of privacy, it is important to determine whether or not the content of the privacy policy presented by the application matches the actual behavior of the application. In the privacy policy, information handled by the application, the purpose of handling the information, and the transmission destination of the information are defined. In the dynamic analysis, when the application transmits data including personal information (user information), it is analyzed whether the behavior matches the behavior defined in the privacy policy.

動的解析技術では、アプリケーションに対する操作に関する課題がある。利用者がアプリケーション対する操作を行わない限り、完全な動的解析を行うことはできない。人が手動による操作を行う場合、人件コストが発生する。このため、コンピュータがアプリケーションに対する操作を行う自動操作技術が提案されている。この自動操作技術と動的解析技術とを利用する自動安全性解析装置がある。また、自動操作技術に関しては、テストケースに従ってアプリケーションのプログラムを実行し、プログラムのエラーを検知する技術もある。   In the dynamic analysis technology, there are problems related to operations on applications. Unless the user performs an operation on the application, a complete dynamic analysis cannot be performed. If a person performs a manual operation, personnel costs are incurred. For this reason, an automatic operation technique in which a computer performs an operation on an application has been proposed. There is an automatic safety analysis device that uses this automatic operation technology and dynamic analysis technology. As for the automatic operation technique, there is a technique for detecting a program error by executing an application program according to a test case.

自動操作技術において、アプリケーションの実行時に現れる可能性がある挙動のうちどの程度の挙動が実現されたかという点を評価する技術がある。例えば、呼び出されたクラスとメソッドとの数を確認する方法(コードカバレッジ)、および表示されたアプリケーション画面の数を確認する方法などがある。   In the automatic operation technology, there is a technology for evaluating how much of the behavior that may appear at the time of executing an application is realized. For example, there are a method for confirming the number of called classes and methods (code coverage), a method for confirming the number of displayed application screens, and the like.

国際公開第2010/134325号International Publication No. 2010/134325

従来の自動操作技術では、アプリケーションの挙動のうちどの程度の挙動が実現されたかという点が評価される。しかし、プライバシー評価では、利用者情報の取得に関する処理がアプリケーションに対する操作により確実に実行されたかどうかが重要である。例えば、アプリケーションの挙動の全体に対して90%の挙動が実現された場合でも、利用者情報の取得に関する処理が実行されていなければ、プライバシー評価が不十分である。あるいは、アプリケーションの挙動の全体に対して10%の挙動が実現された場合でも、利用者情報の取得に関する処理が実行されていれば、十分なプライバシー評価が可能である。プライバシー評価が十分であれば、実現されていない挙動の実現を待たずにアプリケーションの操作を終了することができる。   In the conventional automatic operation technology, it is evaluated how much of the application behavior is realized. However, in the privacy evaluation, it is important whether or not the processing related to the acquisition of user information is surely executed by an operation on the application. For example, even when 90% of the behavior of the entire application behavior is realized, the privacy evaluation is insufficient if the process related to the acquisition of user information is not executed. Alternatively, even when 10% of the behavior of the entire application behavior is realized, sufficient privacy evaluation is possible as long as the processing related to acquisition of user information is executed. If the privacy evaluation is sufficient, the operation of the application can be terminated without waiting for the realization of an unrealized behavior.

本発明は、上記に鑑み、アプリケーションのプライバシー評価に有益な情報を取得することができる技術を提供することを目的とする。   In view of the above, an object of the present invention is to provide a technique capable of acquiring information useful for privacy evaluation of an application.

本発明は、利用者情報を取得する第1の関数を実行する第2の関数の名称である第1の関数名と、前記第2の関数が定義された第1のクラスの名称である第1のクラス名とを、アプリケーションのプログラムを解析して取得する静的解析部と、前記プログラムを実行する実行部と、前記プログラムが実行されたときに呼び出された第3の関数の名称である第2の関数名と、前記第3の関数が定義された第2のクラスの名称である第2のクラス名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定する動的解析部と、前記動的解析部による判定の結果を示す情報を出力する出力部と、を有することを特徴とするアプリケーション解析装置である。   The present invention provides a first function name that is a name of a second function that executes a first function that acquires user information, and a name of a first class in which the second function is defined. The class name of 1 is the name of a static analysis unit that analyzes and acquires an application program, an execution unit that executes the program, and a third function that is called when the program is executed. The execution result of the program includes a second function name and a second class name that is a name of a second class in which the third function is defined. A dynamic analysis unit that determines whether or not the second function has been executed by analyzing whether or not a combination with the function name is included, and information indicating a result of the determination by the dynamic analysis unit An output unit for outputting It is a publication analyzing device.

また、本発明のアプリケーション解析装置は、前記第1のクラス名と前記第1の関数名との組み合わせの総数に対する、実行された前記第2の関数に関する前記第1のクラス名と前記第1の関数名との組み合わせの数の割合を算出する評価部をさらに有し、前記出力部は、前記割合を出力することを特徴とする。   In addition, the application analysis apparatus according to the present invention provides the first class name and the first class related to the executed second function with respect to the total number of combinations of the first class name and the first function name. It further includes an evaluation unit that calculates a ratio of the number of combinations with function names, and the output unit outputs the ratio.

また、本発明のアプリケーション解析装置において、前記プログラムは、ライブラリを含み、前記静的解析部はさらに、前記第1のクラスが定義された第1のライブラリの名称である第1のパッケージ名を、前記プログラムを解析して取得し、前記動的解析部は、前記第2の関数名と、前記第2のクラス名と、前記第2のクラスが定義された第2のライブラリの名称である第2のパッケージ名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名と前記第1のパッケージ名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定することを特徴とする。   In the application analysis apparatus of the present invention, the program includes a library, and the static analysis unit further includes a first package name that is a name of the first library in which the first class is defined, The dynamic analysis unit is obtained by analyzing the program, and the dynamic analysis unit is a name of the second library in which the second function name, the second class name, and the second class are defined. By analyzing whether the combination of the first class name, the first function name, and the first package name is included in the execution result of the program including two package names, It is determined whether or not the second function has been executed.

また、本発明のアプリケーション解析装置において、前記静的解析部はさらに、前記第1のクラスが定義された前記アプリケーションの名称である第3のパッケージ名を、前記プログラムを解析して取得し、前記動的解析部は、前記第2の関数名と、前記第2のクラス名と、前記第2のクラスが定義された前記アプリケーションの前記第3のパッケージ名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名と前記第3のパッケージ名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定することを特徴とする。   In the application analysis apparatus of the present invention, the static analysis unit further obtains a third package name that is a name of the application in which the first class is defined by analyzing the program, The dynamic analysis unit includes, in the execution result of the program, the second function name, the second class name, and the third package name of the application in which the second class is defined. Determining whether the second function has been executed by analyzing whether a combination of the first class name, the first function name, and the third package name is included. It is characterized by that.

また、本発明は、静的解析部と、実行部と、動的解析部と、出力部とを有するアプリケーション解析装置におけるアプリケーション解析方法であって、前記静的解析部が、利用者情報を取得する第1の関数を実行する第2の関数の名称である第1の関数名と、前記第2の関数が定義された第1のクラスの名称である第1のクラス名とを、アプリケーションのプログラムを解析して取得する第1のステップと、前記実行部が前記プログラムを実行する第2のステップと、前記動的解析部が、前記プログラムが実行されたときに呼び出された第3の関数の名称である第2の関数名と、前記第3の関数が定義された第2のクラスの名称である第2のクラス名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定する第3のステップと、前記出力部が、前記第3のステップによる判定の結果を示す情報を出力する第4のステップと、を有することを特徴とするアプリケーション解析方法である。 The present invention also provides an application analysis method in an application analysis apparatus having a static analysis unit, an execution unit, a dynamic analysis unit, and an output unit, wherein the static analysis unit acquires user information. The first function name that is the name of the second function that executes the first function to be executed and the first class name that is the name of the first class in which the second function is defined are a first step of acquiring and analyzing program, a second step of the execution unit executes the program, the dynamic analysis section, a third function that is called when the program is executed The first class name is included in the execution result of the program including the second function name that is the name of the second class name and the second class name that is the name of the second class in which the third function is defined. And the first function name combination By analyzing whether include Align, and the second function third determining is whether the execution of the step, the output unit, information indicating the result of the determination by said third step And a fourth step of outputting the application.

また、本発明は、利用者情報を取得する第1の関数を実行する第2の関数の名称である第1の関数名と、前記第2の関数が定義された第1のクラスの名称である第1のクラス名とを、アプリケーションのプログラムを解析して取得する第1のステップと、前記プログラムを実行する第2のステップと、前記プログラムが実行されたときに呼び出された第3の関数の名称である第2の関数名と、前記第3の関数が定義された第2のクラスの名称である第2のクラス名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定する第3のステップと、前記第3のステップによる判定の結果を示す情報を出力する第4のステップと、をコンピュータに実行させるためのプログラムである。   The present invention also provides a first function name that is a name of a second function that executes a first function for obtaining user information, and a name of a first class in which the second function is defined. A first step of obtaining a first class name by analyzing an application program, a second step of executing the program, and a third function called when the program is executed The first class name is included in the execution result of the program including the second function name that is the name of the second class name and the second class name that is the name of the second class in which the third function is defined. And determining whether or not the second function is executed by analyzing whether or not a combination of the first function name and the first function name is included. A fourth step that outputs information indicating the result. Is a program for executing a flop, to the computer.

本発明によれば、アプリケーションのプログラムが実行されたときに、利用者情報を取得する第1の関数を実行する第2の関数が実行されたか否かを判定することが可能となる。このため、アプリケーションのプライバシー評価に有益な情報を取得することができる。   According to the present invention, when an application program is executed, it is possible to determine whether or not a second function for executing a first function for obtaining user information has been executed. Therefore, it is possible to acquire information useful for application privacy evaluation.

本発明の一実施形態によるアプリケーション解析装置の構成を示すブロック図である。It is a block diagram which shows the structure of the application analysis apparatus by one Embodiment of this invention. 本発明の一実施形態によるアプリケーション解析装置の動作の手順を示すフローチャートである。It is a flowchart which shows the procedure of operation | movement of the application analysis apparatus by one Embodiment of this invention. 本発明の一実施形態におけるアプリケーションのプログラムの構成を示す参考図である。It is a reference figure which shows the structure of the program of the application in one Embodiment of this invention. 本発明の一実施形態において、利用者情報を取得する関数を示す参考図である。In one Embodiment of this invention, it is a reference figure which shows the function which acquires user information. 本発明の一実施形態において、アプリケーションのプログラムの逆コンパイルにより取得されるファイルの内容を示す参考図である。In one Embodiment of this invention, it is a reference figure which shows the content of the file acquired by de-compilation of the program of an application. 本発明の一実施形態において、利用者情報を取得する関数のコードを示す参考図である。In one Embodiment of this invention, it is a reference figure which shows the code | symbol of the function which acquires user information. 本発明の一実施形態において、アプリケーションのプログラムの実行時に出力されるログを示す参考図である。FIG. 15 is a reference diagram illustrating a log output when an application program is executed in an embodiment of the present invention. 本発明の一実施形態において、静的解析によって取得されたクラス名と関数名とを示す参考図である。In one Embodiment of this invention, it is a reference figure which shows the class name and function name which were acquired by static analysis. 本発明の一実施形態において、動的解析によって取得されたクラス名と関数名とを示す参考図である。In one Embodiment of this invention, it is a reference figure which shows the class name and function name which were acquired by the dynamic analysis. 本発明の一実施形態において、ライブラリリストを示す参考図である。FIG. 6 is a reference diagram showing a library list in an embodiment of the present invention.

以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態によるアプリケーション解析装置1の構成を示している。図1に示すように、アプリケーション解析装置1は、静的解析部10と、実行部20と、動的解析部30と、評価部40と、出力部50と、記憶部60とを有する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 1 shows the configuration of an application analysis apparatus 1 according to an embodiment of the present invention. As illustrated in FIG. 1, the application analysis apparatus 1 includes a static analysis unit 10, an execution unit 20, a dynamic analysis unit 30, an evaluation unit 40, an output unit 50, and a storage unit 60.

静的解析部10は、利用者情報を取得する第1の関数を実行する第2の関数の名称である第1の関数名と、第2の関数が定義された第1のクラスの名称である第1のクラス名とを、アプリケーションのプログラムを解析して取得する。実行部20は、アプリケーションのプログラムを実行する。動的解析部30は、アプリケーションのプログラムが実行されたときに呼び出された第3の関数の名称である第2の関数名と、第3の関数が定義された第2のクラスの名称である第2のクラス名とを含む、アプリケーションのプログラムの実行結果に、第1のクラス名と第1の関数名との組み合わせが含まれるか否かを解析することにより、第2の関数が実行されたか否かを判定する。評価部40は、第1のクラス名と第1の関数名との組み合わせの総数に対する、実行された第2の関数に関する第1のクラス名と第1の関数名との組み合わせの数の割合を算出する。出力部50は、動的解析部30による判定の結果を示す情報を出力する。例えば、出力部50は、評価部40によって算出された割合を出力する。   The static analysis unit 10 includes a first function name that is a name of a second function that executes a first function that acquires user information, and a name of a first class in which the second function is defined. A certain first class name is obtained by analyzing an application program. The execution unit 20 executes an application program. The dynamic analysis unit 30 is the name of the second function that is the name of the third function that is called when the application program is executed, and the name of the second class in which the third function is defined. The second function is executed by analyzing whether or not the combination of the first class name and the first function name is included in the execution result of the application program including the second class name. It is determined whether or not. The evaluation unit 40 calculates a ratio of the number of combinations of the first class name and the first function name related to the executed second function to the total number of combinations of the first class name and the first function name. calculate. The output unit 50 outputs information indicating the result of determination by the dynamic analysis unit 30. For example, the output unit 50 outputs the ratio calculated by the evaluation unit 40.

例えば、出力部50は、情報を表示する表示部である。あるいは、出力部50は、表示部等を有する外部装置に情報を送信する送信部である。あるいは、出力部50は、情報を外部記憶媒体または記憶部60に記録する記録部である。   For example, the output unit 50 is a display unit that displays information. Alternatively, the output unit 50 is a transmission unit that transmits information to an external device having a display unit and the like. Alternatively, the output unit 50 is a recording unit that records information in an external storage medium or the storage unit 60.

記憶部60は、アプリケーションのプログラム等を記憶する。記憶部60は、静的解析部10と、動的解析部30と、評価部40との処理結果を適宜記憶してもよい。記憶部60は、アプリケーション解析装置1に対して着脱が可能な外部記憶媒体であってもよい。   The storage unit 60 stores application programs and the like. The storage unit 60 may appropriately store the processing results of the static analysis unit 10, the dynamic analysis unit 30, and the evaluation unit 40. The storage unit 60 may be an external storage medium that can be attached to and detached from the application analysis apparatus 1.

アプリケーション解析装置1のコンピュータが、静的解析部10と、実行部20と、動的解析部30と、評価部40と、出力部50との動作を規定する命令を含むプログラムを読み込み、読み込まれたプログラムを実行してもよい。つまり、静的解析部10と、実行部20と、動的解析部30と、評価部40と、出力部50との機能はソフトウェアにより実現されてもよい。このプログラムは、例えばフラッシュメモリのような「コンピュータ読み取り可能な記録媒体」により提供されてもよい。また、上述したプログラムは、このプログラムが保存された記憶装置等を有するコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波によりアプリケーション解析装置1に伝送されてもよい。プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体である。また、上述したプログラムは、前述した機能の一部を実現してもよい。さらに、上述したプログラムは、前述した機能をコンピュータに既に記録されているプログラムとの組合せで実現できる差分ファイル(差分プログラム)であってもよい。   The computer of the application analysis apparatus 1 reads and reads a program including instructions that define the operations of the static analysis unit 10, the execution unit 20, the dynamic analysis unit 30, the evaluation unit 40, and the output unit 50. You may run the program. That is, the functions of the static analysis unit 10, the execution unit 20, the dynamic analysis unit 30, the evaluation unit 40, and the output unit 50 may be realized by software. This program may be provided by a “computer-readable recording medium” such as a flash memory. The above-described program may be transmitted to the application analysis apparatus 1 from a computer having a storage device or the like in which the program is stored via a transmission medium or by a transmission wave in the transmission medium. A “transmission medium” for transmitting a program is a medium having a function of transmitting information, such as a network (communication network) such as the Internet or a communication line (communication line) such as a telephone line. Further, the above-described program may realize a part of the functions described above. Further, the above-described program may be a difference file (difference program) that can realize the above-described function in combination with a program already recorded in the computer.

以下では、一例として、Android(登録商標)がOS(Operating Systems)に用いられている端末で動作するアプリケーションの解析について主に説明する。本明細書および図面では、便宜上、必要に応じてandroid(登録商標)という文字列を*andrd*という文字列で代用し、java(登録商標)という文字列を*jv*という文字列で代用している。すなわち、*andrd*という文字列はandroid(登録商標)という文字列と等価であり、*jv*という文字列はjava(登録商標)という文字列と等価である。   Hereinafter, as an example, an analysis of an application that runs on a terminal in which Android (registered trademark) is used in an OS (Operating Systems) will be mainly described. In this specification and drawings, for the sake of convenience, the character string “android (registered trademark)” is substituted with the character string “* andrd *” and the character string “java (registered trademark)” is substituted with the character string “* jv *” as necessary. ing. That is, the character string * andrd * is equivalent to the character string Android (registered trademark), and the character string * jv * is equivalent to the character string Java (registered trademark).

図2は、アプリケーション解析装置1の動作の手順を示している。図2を参照し、アプリケーション解析装置1の動作を説明する。   FIG. 2 shows an operation procedure of the application analysis apparatus 1. The operation of the application analysis apparatus 1 will be described with reference to FIG.

静的解析部10は、アプリケーションのプログラムを逆コンパイルして得られるプログラムコードを解析する静的解析を行う(ステップS100)。ステップS100では、以下の処理が行われる。   The static analysis unit 10 performs a static analysis for analyzing a program code obtained by decompiling an application program (step S100). In step S100, the following processing is performed.

静的解析部10は、記憶部60からアプリケーションのプログラムを読み出す。静的解析部10は、アプリケーションのプログラムを逆コンパイルし、解析可能なコードを取得する。   The static analysis unit 10 reads an application program from the storage unit 60. The static analysis unit 10 decompiles the application program and obtains an analyzable code.

図3は、アプリケーションのプログラムの構成を示している。図3に示すように、アプリケーションのプログラム300は、実行コード301と、マニフェストファイル302と、ライブラリ303と、パラメータ304とを含む。実行コード301は、アプリケーション本体の動作を規定する命令列を含む。マニフェストファイル302は、アプリケーションのパッケージ名およびアプリケーションが利用するコンポーネント等の情報を含む。ライブラリ303は、実行コード301の実行時に参照される実行コードを含む。パラメータ304は、実行コード301の実行時に参照されるパラメータである。   FIG. 3 shows the configuration of the application program. As shown in FIG. 3, the application program 300 includes an execution code 301, a manifest file 302, a library 303, and a parameter 304. The execution code 301 includes an instruction sequence that defines the operation of the application main body. The manifest file 302 includes information such as a package name of the application and a component used by the application. The library 303 includes an execution code that is referred to when the execution code 301 is executed. The parameter 304 is a parameter referred to when the execution code 301 is executed.

アプリケーションのプログラム300を逆コンパイルするためのツールとして、apk−tool、soot、およびdex−2−jar等がある。本実施形態の説明では、apk−toolを利用する。   Examples of tools for decompiling the application program 300 include apk-tool, soot, and dex-2-jar. In the description of the present embodiment, apk-tool is used.

Android(登録商標)アプリケーションはDalvik仮想マシンで実行される。実行コード301は、classes.dexと呼ばれるバイナリファイルである。apk−toolを利用してアプリケーションのプログラム300を逆コンパイルすることにより、実行コード301がDalvik仮想マシンの中間コードに変換される。apk−toolを利用すると、パッケージ毎にフォルダが作成され、クラス毎にsmaliファイルが作成される。静的解析部10は、中間コードであるsmaliファイルを解析する。   The Android (registered trademark) application is executed in the Dalvik virtual machine. The execution code 301 is a class. It is a binary file called dex. By decompiling the application program 300 using apk-tool, the execution code 301 is converted into an intermediate code of the Dalvik virtual machine. When apk-tool is used, a folder is created for each package, and a small file is created for each class. The static analysis unit 10 analyzes a small file that is an intermediate code.

静的解析部10は、smaliファイルに含まれるコードから、利用者情報を取得する関数の情報を取得する。図4は、利用者情報を取得する関数(第1の関数)の例を示している。図4に示す関数は、OSが基本的な機能の実現のために提供しているAPI(Application Programming Interface)である。それぞれの関数はクラスに定義されている。図4では、関数として、getDeviceId関数と、getSubscriberId関数と、requestLocationUpdates関数と、getLatitude関数と、getLongitude関数とが示されている。   The static analysis unit 10 acquires information on a function that acquires user information from the code included in the small file. FIG. 4 shows an example of a function (first function) for acquiring user information. The function shown in FIG. 4 is an API (Application Programming Interface) provided by the OS for realizing basic functions. Each function is defined in a class. In FIG. 4, a getDeviceId function, a getSubscriberId function, a requestLocationUpdates function, a getLatitude function, and a getLongtude function are shown as functions.

getDeviceId関数は、端末識別子であるIMEI(International Mobile Equipment Identity)を取得する関数である。getSubscriberId関数は、加入者識別子であるIMSI(International Mobile Subscriber Identity)を取得する関数である。requestLocationUpdates関数は、端末の位置情報を定期的に取得する関数である。getLatitude関数は、端末の位置における緯度情報を取得する関数である。getLongitude関数は、端末の位置における経度情報を取得する関数である。getDeviceId関数とgetSubscriberId関数とは、*andrd*.telephony.TelephonyManagerクラスに定義されている。requestLocationUpdates関数と、getLatitude関数と、getLongitude関数とは、*andrd*.location.LocationManagerクラスに定義されている。図4に示すgetDeviceId等が関数の名称(関数名)である。図4に示す*andrd*.telephony.TelephonyManager等がクラスの名称(クラス名)である。   The getDeviceId function is a function that acquires an IMEI (International Mobile Equipment Identity) that is a terminal identifier. The getSubscriberId function is a function that acquires an IMSI (International Mobile Subscriber Identity) that is a subscriber identifier. The requestLocationUpdates function is a function that periodically acquires terminal location information. The getLatitude function is a function for acquiring latitude information at the position of the terminal. The getLongitude function is a function for acquiring longitude information at the position of the terminal. The getDeviceId function and the getSubscriberId function are * andrd *. telephony. Defined in the TelephonyManager class. The requestLocationUpdates function, the getLatitude function, and the getLongitude function are * andrd *. location. It is defined in the LocationManager class. The getDeviceId and the like shown in FIG. 4 are function names (function names). * Andrd *. telephony. TelephonyManager is a class name (class name).

図4に示す関数を実行することにより、アプリケーションが、アプリケーション解析装置1を含む端末に格納されている利用者情報を取得することが可能である。アプリケーションの開発者は、図4に示す関数を利用する独自の関数をアプリケーションのプログラムに定義することが可能である。   By executing the function shown in FIG. 4, an application can acquire user information stored in a terminal including the application analysis apparatus 1. The application developer can define a unique function using the function shown in FIG. 4 in the application program.

図4に示すクラス名と関数名とを含む関数リストが記憶部60に予め記憶されている。静的解析部10は、関数リストに含まれるクラス名と関数名とに基づいてsmaliファイルを解析する。   A function list including the class name and the function name shown in FIG. The static analysis unit 10 analyzes the small file based on the class name and the function name included in the function list.

図5は、smaliファイルの内容の例を示している。図5において、smaliファイルに含まれる一部のコードのみが示されている。図5において、「・・・」は、コードが省略されている部分を示している。   FIG. 5 shows an example of the contents of a small file. In FIG. 5, only some codes included in the small file are shown. In FIG. 5, “...” Indicates a portion where the code is omitted.

静的解析部10は、関数リストに含まれるクラス名を構成する文字列のうち「.」を「/」に変換した文字列と、「;−>」という文字列と、関数名を構成する文字列とを組み合わせた文字列をコードから検索する。例えば、getDeviceId関数に関する情報を取得する場合、静的解析部10は、検索の文字列として「*andrd*/telephony/TelephonyManager;−>getDeviceId」を使用する。図5において、文字列500が検索の文字列と一致する。このため、静的解析部10は文字列500を検出する。利用者情報を取得する第1の関数を実行する第2の関数であって、アプリケーションの開発者によって定義された第2の関数がsmaliファイルに含まれる。   The static analysis unit 10 configures a function name with a character string obtained by converting “.” Into “/” among character strings constituting a class name included in the function list, a character string “;->”, and the like. Search for a character string combined with a character string from the code. For example, when acquiring information related to the getDeviceId function, the static analysis unit 10 uses “* andrd * / telephony / TelephonyManager;-> getDeviceId” as a search character string. In FIG. 5, the character string 500 matches the character string of the search. For this reason, the static analysis unit 10 detects the character string 500. A second function that executes a first function for obtaining user information and is defined by an application developer is included in the sali file.

静的解析部10は、利用者情報を取得する第1の関数を実行する第2の関数の第1の関数名を取得する。具体的には、静的解析部10は、文字列500の位置よりも上にある文字列から文字列「.method」を検索する。静的解析部10は、文字列500の位置から上に向かって1行ずつ文字列を辿り、最初に出現する文字列「.method」を検出する。図5において、文字列510の先頭の文字列が検索の文字列と一致するため、静的解析部10は文字列510を検出する。文字列510において、検索の文字列と、プログラムで定義された文字列とを除いて最初に登場する文字列が第1の関数名である。プログラムで定義された文字列は、「public」、「private」、および「abstract」等である。文字列510では、「private」が、プログラムで定義された文字列である。文字列510から、文字列「.method」と文字列「private」とを除いて最初に登場する文字列「getImei」が第1の関数名である。アプリケーションの開発者によって定義されたgetImeiは、getDeviceId関数を実行する。静的解析部10は、文字列510から第1の関数名「getImei」を取得する。   The static analysis unit 10 acquires the first function name of the second function that executes the first function for acquiring user information. Specifically, the static analysis unit 10 searches the character string “.method” from the character string above the position of the character string 500. The static analysis unit 10 traces the character string line by line upward from the position of the character string 500, and detects the character string “.method” that appears first. In FIG. 5, since the first character string of the character string 510 matches the character string of the search, the static analysis unit 10 detects the character string 510. In the character string 510, the first character string that appears except for the character string for search and the character string defined by the program is the first function name. Character strings defined by the program are “public”, “private”, “abstract”, and the like. In the character string 510, “private” is a character string defined by the program. The character string “getImei” that appears first, excluding the character string “.method” and the character string “private” from the character string 510 is the first function name. The getImei defined by the application developer executes the getDeviceId function. The static analysis unit 10 acquires the first function name “getImei” from the character string 510.

静的解析部10は、利用者情報を取得する第1の関数を実行する第2の関数が定義された第1のクラスの第1のクラス名を取得する。具体的には、静的解析部10は、文字列500を含むsmaliファイルの先頭の行の文字列520から第1のクラス名を取得する。文字列520において、文字「L」と文字「;」との間の文字列の文字「/」を文字「.」に変換した文字列「com.example.sample.Mainactivity」が第1のクラス名である。静的解析部10は、文字列520から第1のクラス名「com.example.sample.Mainactivity」を取得する。異なるクラスにおいて同一の関数名で関数を定義することが可能であるため、クラス名と関数名との組み合わせで関数が識別される。   The static analysis unit 10 acquires a first class name of a first class in which a second function that executes a first function that acquires user information is defined. Specifically, the static analysis unit 10 acquires the first class name from the character string 520 in the first line of the small file including the character string 500. In the character string 520, the character string “com.example.sample.Mainactivity” obtained by converting the character “/” of the character string between the character “L” and the character “;” into the character “.” Is the first class name. It is. The static analysis unit 10 acquires the first class name “com.example.sample.Mainactivity” from the character string 520. Since it is possible to define a function with the same function name in different classes, the function is identified by a combination of the class name and the function name.

静的解析部10は、図4に示す全ての関数に対して、上記と同様の処理を行う。ステップS100では、上記の処理が行われる。   The static analysis unit 10 performs the same processing as described above for all functions shown in FIG. In step S100, the above processing is performed.

ステップS100の処理が行われた後、実行部20は、アプリケーションのプログラムを記憶部60から読み出す。実行部20は、読み出されたアプリケーションのプログラムを実行する(ステップS110)。アプリケーションのプログラムの実行中、アプリケーションに対する操作が適宜行われる。アプリケーションに対する操作は、自動操作と手動操作とのどちらであってもよい。   After the process of step S100 is performed, the execution unit 20 reads the application program from the storage unit 60. The execution unit 20 executes the read application program (step S110). During the execution of the application program, operations on the application are appropriately performed. The operation for the application may be either an automatic operation or a manual operation.

ステップS110の処理が行われた後、動的解析部30は、アプリケーションの挙動を解析する動的解析を行う(ステップS120)。ステップS120では、以下の処理が行われる。   After the processing of step S110 is performed, the dynamic analysis unit 30 performs dynamic analysis for analyzing the behavior of the application (step S120). In step S120, the following processing is performed.

動的解析部30は、アプリケーションのプログラムの実行結果を解析する。具体的には、動的解析部30は、アプリケーションのプログラムが実行されているときに出力されるログを解析する。アプリケーションのプログラムの実行結果であるログには、プログラムが実行されたときに呼び出された第3の関数の第2の関数名と、第3の関数が定義された第2のクラスの第2のクラス名とが含まれる。動的解析部30は、ログに、第1のクラス名と第1の関数名との組み合わせが含まれるか否かを解析することにより、第2の関数が実行されたか否かを判定する。   The dynamic analysis unit 30 analyzes the execution result of the application program. Specifically, the dynamic analysis unit 30 analyzes a log output when an application program is being executed. In the log that is the execution result of the program of the application, the second function name of the third function called when the program is executed and the second function name of the second class in which the third function is defined are displayed. Class name. The dynamic analysis unit 30 determines whether or not the second function has been executed by analyzing whether or not the log includes a combination of the first class name and the first function name.

動的解析部30によるログの解析を可能とするため、OSで定義された、利用者情報を取得する関数のコードが予め変更される。例えば、端末識別子を取得するgetDeviceId関数は、/framework/base/telephony/*jv*/*andrd*/telephony/TelephonyManager.*jv*クラスに定義されている。例えば、このクラスのソースコードを、https://android.googlesource.com/platform/frameworks/base/+/android−4.4.4_r2.0.1/telephony/java/android/telephony/TelephonyManager.javaから取得することが可能である。   In order to enable log analysis by the dynamic analysis unit 30, the code of the function for obtaining user information defined in the OS is changed in advance. For example, the getDeviceId function for acquiring a terminal identifier is / framework / base / telephony / * jv * / * andrd * / telephony / TelephonyManager. It is defined in the * jv * class. For example, the source code of this class is https: // android. googlesource. com / platform / frameworks / base / + / android-4.4.4_r2.0.1 / telephony / java / android / telephony / TelephonyManager. It can be obtained from Java.

アプリケーションからgetDeviceId関数が呼び出されたときに、StackTraceを利用して、スタックフレーム情報がログに出力されるように関数が変更される。スタックフレーム情報とは、プログラムの実行過程を記録した情報である。この情報には、実行された関数とクラスとの情報が含まれる。   When the getDeviceId function is called from the application, the function is changed using StackTrace so that the stack frame information is output to the log. The stack frame information is information that records a program execution process. This information includes information on the executed function and class.

図6は、getDeviceId関数について、変更されたコードの例を示している。図6において、285から293の数字は行番号を示している。287行目の文字列600が、追加された文字列である。標準的なログ出力関数であるgetStackTraceStringを利用してスタックフレーム情報をログに出力するようにコードが変更されている。利用者情報を取得する他の関数のコードも、文字列600と同様の文字列が追加されることにより変更される。変更されたコードを含むOSのプログラムがビルドされる。上記のように変更されたOS上でアプリケーションのプログラムが実行される。   FIG. 6 shows an example of changed code for the getDeviceId function. In FIG. 6, numerals 285 to 293 indicate line numbers. A character string 600 on the 287th line is an added character string. The code has been changed so that stack frame information is output to a log using getStackTraceString, which is a standard log output function. The code of another function for acquiring user information is also changed by adding a character string similar to the character string 600. An OS program including the changed code is built. The application program is executed on the OS changed as described above.

図7は、ログの例を示している。図7において、1から16の数字は行番号を示している。2行目以降の各行において、文字列「at」の後ろに、クラス名と関数名とを含む文字列が記録されている。2行目に、*andrd*.telephony.TelephonyManagerクラスのgetDeviceId関数が実行されたことが記録されている。2行目の次の3行目に、getDeviceId関数を実行した第3の関数の情報が記録されている。具体的には、com.example.sample.MainActivityクラスのgetImei関数が実行されたことが記録されている。   FIG. 7 shows an example of a log. In FIG. 7, numerals 1 to 16 indicate line numbers. In each line after the second line, a character string including a class name and a function name is recorded after the character string “at”. On the second line, * andrd *. telephony. It is recorded that the getDeviceId function of the TelephonyManager class has been executed. In the third line next to the second line, information on a third function that executes the getDeviceId function is recorded. Specifically, com. example. sample. It is recorded that the getImei function of the MainActivity class has been executed.

動的解析部30は、静的解析(ステップS100)で取得された第1のクラス名と第1の関数名とを文字「.」で繋いだ文字列をログから検索する。例えば、動的解析部30は、文字列「com.example.sample.Mainactivity.getImei」をログから検索する。これによって、文字列700が検出される。文字列700は、アプリケーションのプログラムが実行されたときに呼び出された第3の関数の第2の関数名を示す文字列「getImei」と、第3の関数が定義された第2のクラスの第2のクラス名を示す文字列「com.example.sample.Mainactivity」とを含む。したがって、動的解析部30は、getImei関数が実行されたと判定する。   The dynamic analysis unit 30 searches the log for a character string obtained by connecting the first class name and the first function name acquired in the static analysis (step S100) with the character “.”. For example, the dynamic analysis unit 30 searches the log for a character string “com.example.sample.Mainactivity.getImei”. Thereby, the character string 700 is detected. The character string 700 includes a character string “getImei” indicating the second function name of the third function called when the application program is executed, and the second class of the second class in which the third function is defined. 2 including a character string “com.example.sample.Mainactivity” indicating a class name of 2. Therefore, the dynamic analysis unit 30 determines that the getImei function has been executed.

つまり、動的解析部30は、検索の文字列と一致する文字列がログから検出された場合、第2の関数が実行されたと判定する。また、動的解析部30は、検索の文字列と一致する文字列がログから検出されなかった場合、第2の関数が実行されていないと判定する。検索の文字列は、静的解析(ステップS100)で取得された第1のクラス名と第1の関数名とを文字「.」で繋いだ文字列である。ステップS120では、上記の処理が行われる。   That is, the dynamic analysis unit 30 determines that the second function has been executed when a character string that matches the search character string is detected from the log. The dynamic analysis unit 30 determines that the second function is not executed when a character string that matches the search character string is not detected from the log. The search character string is a character string in which the first class name acquired in the static analysis (step S100) and the first function name are connected by the character “.”. In step S120, the above processing is performed.

第2の関数が実行されたときに、第2の関数のコードにおいて定義された条件分岐により、利用者情報を取得する第1の関数が実行されない場合がある。このため、動的解析部30は、ログにおいて、第1の関数の関数名およびクラス名が記録された行の次の行に、第2の関数の関数名およびクラス名が記録されているか否かを確認してもよい。第1の関数の情報と第2の関数の情報とがセットでログに記録されているか否かを確認することによって、第1の関数が実行される条件で第2の関数が実行されたか否かを判定することができる。   When the second function is executed, the first function for obtaining user information may not be executed due to a conditional branch defined in the code of the second function. For this reason, the dynamic analysis unit 30 determines whether or not the function name and class name of the second function are recorded in the line next to the line where the function name and class name of the first function are recorded in the log. You may check. Whether or not the second function has been executed under conditions for executing the first function by checking whether or not the information of the first function and the information of the second function are recorded in the log as a set. Can be determined.

ステップS120の処理が行われた後、評価部40は、第1のクラス名と第1の関数名との組み合わせの総数に対する、実行された第2の関数に関する第1のクラス名と第1の関数名との組み合わせの数の割合を算出する(ステップS130)。実行された第2の関数は、動的解析部30によって、実行されたと判定された第2の関数である。実行率は、(1)式により算出される。   After the process of step S120 is performed, the evaluation unit 40 determines the first class name and the first class related to the executed second function with respect to the total number of combinations of the first class name and the first function name. The ratio of the number of combinations with function names is calculated (step S130). The executed second function is a second function determined by the dynamic analysis unit 30 to be executed. The execution rate is calculated by equation (1).

Figure 0006466234
Figure 0006466234

図8は、静的解析により取得された第1のクラス名と第1の関数名との組み合わせの例を示している。図8では、利用者情報を取得する関数(利用者情報取得関数)と、利用者情報取得関数を含んで定義された関数(定義関数)が定義されたクラス(定義クラス)と、定義関数とが示されている。   FIG. 8 shows an example of a combination of the first class name and the first function name acquired by static analysis. In FIG. 8, a function (user information acquisition function) for acquiring user information, a class (definition class) in which a function (definition function) defined including the user information acquisition function is defined, a definition function, It is shown.

図9は、動的解析で検出された第1のクラス名と第1の関数名との組み合わせの例を示している。図9では、利用者情報取得関数と、利用者情報取得関数を実行した関数(実行関数)が定義されたクラス(実行クラス)と、実行関数とが示されている。   FIG. 9 shows an example of a combination of the first class name and the first function name detected by the dynamic analysis. FIG. 9 shows a user information acquisition function, a class (execution class) in which a function (execution function) that executes the user information acquisition function is defined, and an execution function.

図8に示す例では、静的解析において5つの組み合わせが取得される。また、図9に示す例では、動的解析において、アプリケーションのプログラムが実行されたときに実行された第2の関数に関する4つの組み合わせが取得される。このため、実行率は80%である。   In the example shown in FIG. 8, five combinations are acquired in the static analysis. In the example shown in FIG. 9, in the dynamic analysis, four combinations related to the second function executed when the application program is executed are acquired. For this reason, the execution rate is 80%.

ステップS130の処理が行われた後、出力部50は、ステップS130で算出された実行率を出力する(ステップS140)。例えば、出力部50が表示部である場合、出力部50は実行率を表示する。あるいは、出力部50が通信部である場合、出力部50は実行率を外部装置に送信する。あるいは、出力部50が記録部である場合、出力部50は実行率を外部記憶媒体または記憶部60に記録する。   After the process of step S130 is performed, the output unit 50 outputs the execution rate calculated in step S130 (step S140). For example, when the output unit 50 is a display unit, the output unit 50 displays the execution rate. Or when the output part 50 is a communication part, the output part 50 transmits an execution rate to an external device. Alternatively, when the output unit 50 is a recording unit, the output unit 50 records the execution rate in the external storage medium or the storage unit 60.

出力部50は、ステップS120の処理結果を出力してもよい。例えば、出力部50は、利用者情報を取得する第1の関数を実行する第2の関数の第1の関数名と、第2の関数が定義された第1のクラスの第1のクラス名と、アプリケーションのプログラムの実行時に第2の関数が実行されたか否かを示す情報とを出力してもよい。したがって、アプリケーション解析装置1は、評価部40を有していなくてもよい。   The output unit 50 may output the processing result of step S120. For example, the output unit 50 includes the first function name of the second function that executes the first function for acquiring the user information, and the first class name of the first class in which the second function is defined. And information indicating whether or not the second function has been executed when the application program is executed. Therefore, the application analysis apparatus 1 may not include the evaluation unit 40.

本実施形態によれば、アプリケーションのプログラムが実行されたときに、利用者情報を取得する第1の関数を実行する第2の関数が実行されたか否かを判定することが可能となる。このため、アプリケーションのプライバシー評価に有益な情報を取得することができる。したがって、アプリケーションに対して、プライバシー評価に必要な操作が行われたか否かを判断することができる。   According to the present embodiment, when the application program is executed, it is possible to determine whether or not the second function for executing the first function for obtaining user information has been executed. Therefore, it is possible to acquire information useful for application privacy evaluation. Therefore, it is possible to determine whether or not an operation necessary for privacy evaluation has been performed on the application.

次に、本実施形態の変形例を説明する。図3に示すように、アプリケーションのプログラム300は、ライブラリ303を含む。上記のように、静的解析部10は、利用者情報を取得する第1の関数を実行する第2の関数の第1の関数名と、第2の関数が定義された第1のクラスの第1のクラス名とを取得する。静的解析部10はさらに、第1のクラスが定義された第1のライブラリの名称である第1のパッケージ名を、アプリケーションのプログラムを解析して取得する。プログラムの実行結果は、アプリケーションのプログラムが実行されたときに呼び出された第3の関数の第2の関数名と、第3の関数が定義された第2のクラスの第2のクラス名と、第2のクラスが定義された第2のライブラリの名称である第2のパッケージ名とを含む。動的解析部30は、アプリケーションのプログラムの実行結果に、第1のクラス名と第1の関数名と第1のパッケージ名との組み合わせが含まれるか否かを解析することにより、第2の関数が実行されたか否かを判定する。   Next, a modification of this embodiment will be described. As shown in FIG. 3, the application program 300 includes a library 303. As described above, the static analysis unit 10 includes the first function name of the second function that executes the first function for acquiring the user information, and the first class in which the second function is defined. Get the first class name. The static analysis unit 10 further acquires the first package name, which is the name of the first library in which the first class is defined, by analyzing the application program. The execution result of the program includes the second function name of the third function called when the application program is executed, the second class name of the second class in which the third function is defined, And a second package name which is the name of the second library in which the second class is defined. The dynamic analysis unit 30 analyzes whether or not the combination of the first class name, the first function name, and the first package name is included in the execution result of the application program. Determine whether the function has been executed.

静的解析部10はさらに、第1のクラスが定義されたアプリケーションの名称である第3のパッケージ名を、アプリケーションのプログラムを解析して取得する。プログラムの実行結果は、第3の関数の第2の関数名と、第2のクラスの第2のクラス名と、第2のクラスが定義されたアプリケーションの第3のパッケージ名とを含む。動的解析部30は、アプリケーションのプログラムの実行結果に、第1のクラス名と第1の関数名と第3のパッケージ名との組み合わせが含まれるか否かを解析することにより、第2の関数が実行されたか否かを判定する。   The static analysis unit 10 further acquires the third package name, which is the name of the application in which the first class is defined, by analyzing the application program. The execution result of the program includes the second function name of the third function, the second class name of the second class, and the third package name of the application in which the second class is defined. The dynamic analysis unit 30 analyzes whether or not a combination of the first class name, the first function name, and the third package name is included in the execution result of the application program. Determine whether the function has been executed.

一般的に、Android(登録商標)アプリケーションには2個または3個のライブラリが搭載されている。例えば、広告表示用のライブラリおよびゲームエンジン用のライブラリ等がある。ライブラリ会社は、自身のライブラリのプログラムを公開している。アプリケーションの開発者は、自身の好みでライブラリをアプリケーションに組み込むことができる。ライブラリのパッケージ名は、基本的にアプリケーションのパッケージ名と異なる。動的解析部30は、上記のクラス名と関数名とパッケージ名との組み合わせに含まれるパッケージ名が第1のパッケージ名または第3のパッケージ名であるか否かを判定することによって、ライブラリとアプリケーション本体とのどちらのクラスで定義された第2の関数が実行されたかを識別することができる。   In general, Android (registered trademark) applications are equipped with two or three libraries. For example, there are an advertisement display library and a game engine library. Library companies publish their library programs. Application developers can embed libraries into their applications as they like. The library package name is basically different from the application package name. The dynamic analysis unit 30 determines whether the package name included in the combination of the class name, the function name, and the package name is the first package name or the third package name. It is possible to identify which class of the application main body and the second function defined by the application body are executed.

アプリケーションに搭載されうるライブラリの第1のパッケージ名を含むライブラリリストが記憶部60に予め記憶されている。図10は、ライブラリリストの例を示している。図10では、提供会社と、種別と、パッケージ名とが示されている。提供会社は、ライブラリを提供する会社の名称である。種別は、ライブラリリストが提供する機能の種類を示している。パッケージ名は、ライブラリの第1のパッケージ名である。   A library list including a first package name of a library that can be installed in the application is stored in the storage unit 60 in advance. FIG. 10 shows an example of a library list. FIG. 10 shows the provider, type, and package name. The provider is the name of the company that provides the library. The type indicates the type of function provided by the library list. The package name is the first package name of the library.

図3に示すマニフェストファイル302には、アプリケーションの第3のパッケージ名の情報が含まれる。具体的には、マニフェストファイル302には、文字列「<manifest package=XXXXX>」が含まれる。文字列「XXXXX」は任意の文字列であり、アプリケーションの第3のパッケージ名を示している。   The manifest file 302 shown in FIG. 3 includes information on the third package name of the application. Specifically, the manifest file 302 includes a character string “<manifest package = XXXX>”. The character string “XXXX” is an arbitrary character string and indicates the third package name of the application.

静的解析で取得される第1のクラス名は、アプリケーションまたはライブラリのパッケージ名を含む。例えば、第1のクラス名を示す文字列「com.example.sample.Mainactivity」において、文字列「com.example.sample」はアプリケーションの第3のパッケージ名を示している。ライブラリで定義されたクラスのクラス名は、ライブラリの第1のパッケージ名を含む。例えば、図10に示すA会社が提供するライブラリで定義されたクラスのクラス名は、第1のパッケージ名「com.sample.ad」を含む。   The first class name acquired by the static analysis includes the package name of the application or library. For example, in the character string “com.example.sample.Mainactivity” indicating the first class name, the character string “com.example.sample” indicates the third package name of the application. The class name of the class defined in the library includes the first package name of the library. For example, the class name of the class defined in the library provided by the company A shown in FIG. 10 includes the first package name “com.sample.ad”.

したがって、静的解析部10は、静的解析により取得された第1のクラス名からパッケージ名を取得することが可能である。静的解析部10は、静的解析により取得されたパッケージ名を、ライブラリリストに含まれる第1のパッケージ名と比較する。静的解析により取得されたパッケージ名が、ライブラリリストに含まれる第1のパッケージ名と一致する場合、静的解析により取得されたパッケージ名は、ライブラリの第1のパッケージ名である。また、静的解析部10は、静的解析により取得されたパッケージ名をアプリケーションの第3のパッケージ名と比較する。静的解析により取得されたパッケージ名がアプリケーションの第3のパッケージ名と一致する場合、静的解析により取得されたパッケージ名はアプリケーションの第3のパッケージ名である。   Therefore, the static analysis unit 10 can acquire the package name from the first class name acquired by the static analysis. The static analysis unit 10 compares the package name acquired by the static analysis with the first package name included in the library list. When the package name acquired by the static analysis matches the first package name included in the library list, the package name acquired by the static analysis is the first package name of the library. In addition, the static analysis unit 10 compares the package name acquired by the static analysis with the third package name of the application. When the package name acquired by the static analysis matches the third package name of the application, the package name acquired by the static analysis is the third package name of the application.

アプリケーションのパッケージ名は存在するが、そのパッケージ名がマニフェストファイル302に記録されない場合がある。マニフェストファイル302からアプリケーションのパッケージ名が取得できない場合、静的解析により取得されたパッケージ名のうちライブラリリストに含まれる第1のパッケージ名と一致しないパッケージ名はアプリケーションの第3のパッケージ名であると判断してもよい。   Although the package name of the application exists, the package name may not be recorded in the manifest file 302. When the package name of the application cannot be acquired from the manifest file 302, the package name that does not match the first package name included in the library list among the package names acquired by the static analysis is the third package name of the application. You may judge.

ログに記録される第2のクラス名は、第2のクラスが定義されたライブラリまたはアプリケーションのパッケージ名を含む。例えば、図7の文字列700に含まれる第2のクラス名「com.example.sample.Mainactivity」は、アプリケーションの第3のパッケージ名「com.example.sample」を含む。   The second class name recorded in the log includes the package name of the library or application in which the second class is defined. For example, the second class name “com.example.sample.Mainactivity” included in the character string 700 of FIG. 7 includes the third package name “com.example.sample” of the application.

図8は、静的解析により取得された第1のクラス名と第1の関数名との組み合わせの例を示している。図8において、getId関数とgetLoc関数とのそれぞれが定義された第1のクラスの第1のクラス名「com.sample.ad.main」は、ライブラリの第1のパッケージ名「com.sample.ad」を含む。また、SendLocation関数が定義された第1のクラスの第1のクラス名「co.jp.adad.send」は、ライブラリの第1のパッケージ名「co.jp.adad」を含む。また、getImei関数とgetLocation関数とのそれぞれが定義された第1のクラスの第1のクラス名「com.example.sample.Mainactivity」は、アプリケーションの第3のパッケージ名「com.example.sample」を含む。   FIG. 8 shows an example of a combination of the first class name and the first function name acquired by static analysis. In FIG. 8, the first class name “com.sample.ad.main” of the first class in which each of the getId function and the getLoc function is defined is the first package name “com.sample.ad” of the library. "including. Further, the first class name “co.jp.adad.send” of the first class in which the SendLocation function is defined includes the first package name “co.jp.adad” of the library. Further, the first class name “com.example.sample.Mainactivity” of the first class in which each of the getImei function and the getLocation function is defined is changed to the third package name “com.example.sample” of the application. Including.

動的解析部30は、静的解析で取得された第1のクラス名と第1の関数名とライブラリの第1のパッケージ名とを含む文字列をログから検索する。また、動的解析部30は、静的解析で取得された第1のクラス名と第1の関数名とアプリケーションの第3のパッケージ名とを含む文字列をログから検索する。第1のクラス名が第1のパッケージ名または第3のパッケージ名を含むため、動的解析部30は、第1のクラス名と第1の関数名とを含む文字列をログから検索すればよい。   The dynamic analysis unit 30 searches the log for a character string including the first class name, the first function name, and the first package name of the library acquired by the static analysis. In addition, the dynamic analysis unit 30 searches the log for a character string including the first class name, the first function name, and the third package name of the application acquired by the static analysis. Since the first class name includes the first package name or the third package name, the dynamic analysis unit 30 should search the log for a character string including the first class name and the first function name. Good.

動的解析部30は、検索の文字列と一致する文字列がログから検出された場合、第2の関数が実行されたと判定する。また、動的解析部30は、検索の文字列と一致する文字列がログから検出されなかった場合、第2の関数が実行されていないと判定する。検索の文字列がライブラリの第1のパッケージ名を含む場合、動的解析部30は、ライブラリで定義された第2の関数が実行されたと判定する。検索の文字列がアプリケーションの第3のパッケージ名を含む場合、動的解析部30は、アプリケーション本体で定義された第2の関数が実行されたと判定する。   The dynamic analysis unit 30 determines that the second function has been executed when a character string that matches the search character string is detected from the log. The dynamic analysis unit 30 determines that the second function is not executed when a character string that matches the search character string is not detected from the log. When the search character string includes the first package name of the library, the dynamic analysis unit 30 determines that the second function defined in the library has been executed. When the search character string includes the third package name of the application, the dynamic analysis unit 30 determines that the second function defined in the application body has been executed.

評価部40は、パッケージ名毎に実行率を算出する。具体的には、評価部40は、ライブラリの第1のパッケージ名と対応する第1のクラス名を含む組み合わせに対して実行率を算出する。また、評価部40は、アプリケーションの第3のパッケージ名と対応する第1のクラス名を含む組み合わせに対して実行率を算出する。   The evaluation unit 40 calculates an execution rate for each package name. Specifically, the evaluation unit 40 calculates an execution rate for the combination including the first class name corresponding to the first package name of the library. Further, the evaluation unit 40 calculates an execution rate for the combination including the first class name corresponding to the third package name of the application.

図8では、ライブラリの第1のパッケージ名「com.sample.ad」と対応する第1のクラス名「com.sample.ad.main」を含む組み合わせは、getId関数に関する組み合わせとgetLoc関数に関する組み合わせとの2個である。図9では、ライブラリの第1のパッケージ名「com.sample.ad」と対応する第1のクラス名「com.sample.ad.main」を含む組み合わせは、getId関数に関する組み合わせの1個である。このため、ライブラリの第1のパッケージ名「com.sample.ad」に関する実行率は50%である。   In FIG. 8, the combination including the first class name “com.sample.ad.main” corresponding to the first package name “com.sample.ad” of the library includes a combination related to the getId function and a combination related to the getLoc function. It is two. In FIG. 9, the combination including the first class name “com.sample.ad.main” corresponding to the first package name “com.sample.ad” of the library is one of the combinations related to the getId function. Therefore, the execution rate for the first package name “com.sample.ad” of the library is 50%.

図8では、ライブラリの第1のパッケージ名「co.jp.adad」と対応する第1のクラス名「co.jp.adad.send」を含む組み合わせは、SendLocation関数に関する組み合わせの1個である。図9では、ライブラリの第1のパッケージ名「co.jp.adad」と対応する第1のクラス名「co.jp.adad.send」を含む組み合わせは、SendLocation関数に関する組み合わせの1個である。このため、ライブラリの第1のパッケージ名「co.jp.adad」に関する実行率は100%である。   In FIG. 8, the combination including the first class name “co.jp.adad.send” corresponding to the first package name “co.jp.adad” of the library is one of the combinations related to the SendLocation function. In FIG. 9, the combination including the first package name “co.jp.adad” of the library and the first class name “co.jp.adad.send” corresponding to the first package name is one of the combinations related to the SendLocation function. For this reason, the execution rate for the first package name “co.jp.adad” of the library is 100%.

図8では、アプリケーションの第3のパッケージ名「com.example.sample」と対応する第1のクラス名「com.example.sample.Mainactivity」を含む組み合わせは、getImei関数に関する組み合わせとgetLocation関数に関する組み合わせとの2個である。図9では、アプリケーションの第3のパッケージ名「com.example.sample」と対応する第1のクラス名「com.example.sample.Mainactivity」を含む組み合わせは、getImei関数に関する組み合わせとgetLocation関数に関する組み合わせとの2個である。このため、アプリケーションの第3のパッケージ名「com.example.sample」に関する実行率は100%である。   In FIG. 8, a combination including the first package name “com.example.sample.Mainactivity” corresponding to the third package name “com.example.sample” of the application is a combination related to the getImei function and a combination related to the getLocation function. It is two. In FIG. 9, the combination including the first package name “com.example.sample.Mainactivity” corresponding to the third package name “com.example.sample” of the application is a combination related to the getImei function and a combination related to the getLocation function. It is two. For this reason, the execution rate for the third package name “com.example.sample” of the application is 100%.

したがって、パッケージ名が「co.jp.adad」であるライブラリで定義された第2の関数と、アプリケーション本体で定義された第2の関数とによる全ての挙動が動的解析により検出されている。一方、パッケージ名が「com.sample.ad」であるライブラリで定義された第2の関数による一部の挙動のみが動的解析により検出されている。つまり、パッケージ名が「co.jp.adad」であるライブラリと、アプリケーション本体とによる挙動を実現させるためのアプリケーションに対する操作は十分であることが分かる。一方、パッケージ名が「com.sample.ad」であるライブラリによる挙動を実現させるためのアプリケーションに対する操作は不十分であることが分かる。   Accordingly, all behaviors of the second function defined in the library whose package name is “co.jp.adad” and the second function defined in the application main body are detected by the dynamic analysis. On the other hand, only a part of the behavior by the second function defined in the library whose package name is “com.sample.ad” is detected by the dynamic analysis. That is, it can be seen that the operation for the application for realizing the behavior by the library whose package name is “co.jp.adad” and the application main body is sufficient. On the other hand, it is understood that the operation for the application for realizing the behavior by the library whose package name is “com.sample.ad” is insufficient.

出力部50は、上記のパッケージ名毎の実行率を出力する。出力部50は、利用者情報を取得する第1の関数を実行する第2の関数の第1の関数名と、第2の関数が定義された第1のクラスの第1のクラス名と、ライブラリの第1のパッケージ名またはアプリケーションの第3のパッケージ名と、アプリケーションのプログラムの実行時に第2の関数が実行されたか否かを示す情報とを出力してもよい。   The output unit 50 outputs the execution rate for each package name. The output unit 50 includes a first function name of a second function that executes a first function for obtaining user information, a first class name of a first class in which the second function is defined, The first package name of the library or the third package name of the application, and information indicating whether or not the second function is executed when the application program is executed may be output.

本実施形態の変形例によれば、アプリケーションのプログラムが実行されたときに、ライブラリまたはアプリケーション本体で定義された第2の関数が実行されたか否かを判定することが可能となる。したがって、ライブラリによる挙動と、アプリケーション本体とによる挙動とを区別することが可能となる。このため、プライバシー評価に必要な操作が行われたか否かをより詳細に判断することができる。   According to the modification of the present embodiment, it is possible to determine whether or not the second function defined in the library or the application main body has been executed when the application program is executed. Therefore, it is possible to distinguish between the behavior by the library and the behavior by the application main body. For this reason, it can be judged in detail whether operation required for privacy evaluation was performed.

以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。   As described above, the embodiments of the present invention have been described in detail with reference to the drawings. However, the specific configuration is not limited to the above-described embodiments, and includes design changes and the like without departing from the gist of the present invention. .

1 アプリケーション解析装置、10 静的解析部、20 実行部、30 動的解析部、40 評価部、50 出力部、60 記憶部   DESCRIPTION OF SYMBOLS 1 Application analysis apparatus, 10 Static analysis part, 20 Execution part, 30 Dynamic analysis part, 40 Evaluation part, 50 Output part, 60 Storage part

Claims (6)

利用者情報を取得する第1の関数を実行する第2の関数の名称である第1の関数名と、前記第2の関数が定義された第1のクラスの名称である第1のクラス名とを、アプリケーションのプログラムを解析して取得する静的解析部と、
前記プログラムを実行する実行部と、
前記プログラムが実行されたときに呼び出された第3の関数の名称である第2の関数名と、前記第3の関数が定義された第2のクラスの名称である第2のクラス名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定する動的解析部と、
前記動的解析部による判定の結果を示す情報を出力する出力部と、
を有することを特徴とするアプリケーション解析装置。
The first function name that is the name of the second function that executes the first function that obtains the user information, and the first class name that is the name of the first class in which the second function is defined And a static analysis unit for analyzing and acquiring an application program,
An execution unit for executing the program;
A second function name that is a name of a third function that is called when the program is executed, and a second class name that is a name of a second class in which the third function is defined. It is determined whether or not the second function has been executed by analyzing whether or not the combination of the first class name and the first function name is included in the execution result of the program A dynamic analysis unit to
An output unit that outputs information indicating a result of determination by the dynamic analysis unit;
An application analysis apparatus characterized by comprising:
前記第1のクラス名と前記第1の関数名との組み合わせの総数に対する、実行された前記第2の関数に関する前記第1のクラス名と前記第1の関数名との組み合わせの数の割合を算出する評価部をさらに有し、
前記出力部は、前記割合を出力する
ことを特徴とする請求項1に記載のアプリケーション解析装置。
The ratio of the number of combinations of the first class name and the first function name related to the executed second function to the total number of combinations of the first class name and the first function name. It further has an evaluation unit for calculating,
The application analysis apparatus according to claim 1, wherein the output unit outputs the ratio.
前記プログラムは、ライブラリを含み、
前記静的解析部はさらに、前記第1のクラスが定義された第1のライブラリの名称である第1のパッケージ名を、前記プログラムを解析して取得し、
前記動的解析部は、前記第2の関数名と、前記第2のクラス名と、前記第2のクラスが定義された第2のライブラリの名称である第2のパッケージ名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名と前記第1のパッケージ名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定する
ことを特徴とする請求項1または請求項2に記載のアプリケーション解析装置。
The program includes a library,
The static analysis unit further obtains a first package name that is a name of a first library in which the first class is defined by analyzing the program,
The dynamic analysis unit includes the second function name, the second class name, and a second package name that is a name of a second library in which the second class is defined. Whether the second function was executed by analyzing whether or not a combination of the first class name, the first function name, and the first package name is included in the execution result of the program The application analysis apparatus according to claim 1, wherein the application analysis apparatus determines whether or not.
前記静的解析部はさらに、前記第1のクラスが定義された前記アプリケーションの名称である第3のパッケージ名を、前記プログラムを解析して取得し、
前記動的解析部は、前記第2の関数名と、前記第2のクラス名と、前記第2のクラスが定義された前記アプリケーションの前記第3のパッケージ名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名と前記第3のパッケージ名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定する
ことを特徴とする請求項3に記載のアプリケーション解析装置。
The static analysis unit further obtains a third package name that is a name of the application in which the first class is defined by analyzing the program,
The dynamic analysis unit includes the execution result of the program including the second function name, the second class name, and the third package name of the application in which the second class is defined. Whether or not the second function has been executed by analyzing whether or not a combination of the first class name, the first function name, and the third package name is included. The application analysis apparatus according to claim 3, wherein:
静的解析部と、実行部と、動的解析部と、出力部とを有するアプリケーション解析装置におけるアプリケーション解析方法であって、
前記静的解析部が、利用者情報を取得する第1の関数を実行する第2の関数の名称である第1の関数名と、前記第2の関数が定義された第1のクラスの名称である第1のクラス名とを、アプリケーションのプログラムを解析して取得する第1のステップと、
前記実行部が前記プログラムを実行する第2のステップと、
前記動的解析部が、前記プログラムが実行されたときに呼び出された第3の関数の名称である第2の関数名と、前記第3の関数が定義された第2のクラスの名称である第2のクラス名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定する第3のステップと、
前記出力部が、前記第3のステップによる判定の結果を示す情報を出力する第4のステップと、
を有することを特徴とするアプリケーション解析方法。
An application analysis method in an application analysis apparatus having a static analysis unit, an execution unit, a dynamic analysis unit, and an output unit,
A first function name that is a name of a second function that executes a first function for obtaining user information by the static analysis unit, and a name of a first class in which the second function is defined A first class name is obtained by analyzing an application program;
A second step in which the execution unit executes the program;
The dynamic analysis unit is a second function name that is a name of a third function that is called when the program is executed, and a name of a second class in which the third function is defined. By analyzing whether or not the combination of the first class name and the first function name is included in the execution result of the program including the second class name, the second function is A third step of determining whether it has been executed;
A fourth step in which the output unit outputs information indicating a result of the determination in the third step;
An application analysis method characterized by comprising:
利用者情報を取得する第1の関数を実行する第2の関数の名称である第1の関数名と、前記第2の関数が定義された第1のクラスの名称である第1のクラス名とを、アプリケーションのプログラムを解析して取得する第1のステップと、
前記プログラムを実行する第2のステップと、
前記プログラムが実行されたときに呼び出された第3の関数の名称である第2の関数名と、前記第3の関数が定義された第2のクラスの名称である第2のクラス名とを含む、前記プログラムの実行結果に、前記第1のクラス名と前記第1の関数名との組み合わせが含まれるか否かを解析することにより、前記第2の関数が実行されたか否かを判定する第3のステップと、
前記第3のステップによる判定の結果を示す情報を出力する第4のステップと、
をコンピュータに実行させるためのプログラム。
The first function name that is the name of the second function that executes the first function that obtains the user information, and the first class name that is the name of the first class in which the second function is defined And a first step of analyzing and obtaining an application program;
A second step of executing the program;
A second function name that is a name of a third function that is called when the program is executed, and a second class name that is a name of a second class in which the third function is defined. It is determined whether or not the second function has been executed by analyzing whether or not the combination of the first class name and the first function name is included in the execution result of the program A third step,
A fourth step of outputting information indicating a result of the determination in the third step;
A program that causes a computer to execute.
JP2015084033A 2015-04-16 2015-04-16 Application analysis apparatus, application analysis method, and program Active JP6466234B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015084033A JP6466234B2 (en) 2015-04-16 2015-04-16 Application analysis apparatus, application analysis method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015084033A JP6466234B2 (en) 2015-04-16 2015-04-16 Application analysis apparatus, application analysis method, and program

Publications (2)

Publication Number Publication Date
JP2016206739A JP2016206739A (en) 2016-12-08
JP6466234B2 true JP6466234B2 (en) 2019-02-06

Family

ID=57489722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015084033A Active JP6466234B2 (en) 2015-04-16 2015-04-16 Application analysis apparatus, application analysis method, and program

Country Status (1)

Country Link
JP (1) JP6466234B2 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5690689B2 (en) * 2011-09-16 2015-03-25 Kddi株式会社 Application analysis apparatus and program
US9971896B2 (en) * 2011-12-30 2018-05-15 International Business Machines Corporation Targeted security testing

Also Published As

Publication number Publication date
JP2016206739A (en) 2016-12-08

Similar Documents

Publication Publication Date Title
CN108427646B (en) Android App automatic test framework construction method and device based on Apium
CN108595329B (en) Application testing method and device and computer storage medium
US10481964B2 (en) Monitoring activity of software development kits using stack trace analysis
CN105094783B (en) method and device for testing stability of android application
CN106716398B (en) Visually distinguishing character strings for testing
WO2018059393A1 (en) Test method for mobile application program, server, terminal and storage medium
CN111045944A (en) Regression testing method, device and system and computer readable storage medium
CN107015841B (en) Preprocessing method for program compiling and program compiling device
US9507691B2 (en) Conditional component breakpoint setting system and method
CN105989294B (en) Android installation kit detection method and device
CN113114680B (en) Detection method and detection device for file uploading vulnerability
US20080127037A1 (en) System and method for detecting software on a computing device
CN106776266B (en) Configuration method of test tool and terminal equipment
JP4587976B2 (en) Application vulnerability inspection method and apparatus
CN109739492B (en) Method, terminal, equipment and medium for generating script code
CN106919431B (en) Code comparison method, equipment and system in continuous integration
WO2019200808A1 (en) Test case recommendation method, electronic device, and readable storage medium
JP6466234B2 (en) Application analysis apparatus, application analysis method, and program
JP2009237654A (en) Test program management system
CN110377514A (en) Management method, device, electronic equipment and the storage medium of software component
US10108525B2 (en) Optimizing automated interactions with web applications
KR101824699B1 (en) Apparatus and method for analyzing android application, and computer-readable medium storing program for method thereof
JP7331681B2 (en) Test execution program, test execution method, and test execution device
CN110297854B (en) APP domain name verification method and system
CN108366040B (en) Programmable firewall logic code detection method and device and electronic equipment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190109

R150 Certificate of patent or registration of utility model

Ref document number: 6466234

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150