JP6466234B2 - Application analysis apparatus, application analysis method, and program - Google Patents
Application analysis apparatus, application analysis method, and program Download PDFInfo
- 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
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.
従来の自動操作技術では、アプリケーションの挙動のうちどの程度の挙動が実現されたかという点が評価される。しかし、プライバシー評価では、利用者情報の取得に関する処理がアプリケーションに対する操作により確実に実行されたかどうかが重要である。例えば、アプリケーションの挙動の全体に対して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.
以下、図面を参照し、本発明の実施形態を説明する。図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
静的解析部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
例えば、出力部50は、情報を表示する表示部である。あるいは、出力部50は、表示部等を有する外部装置に情報を送信する送信部である。あるいは、出力部50は、情報を外部記憶媒体または記憶部60に記録する記録部である。
For example, the
記憶部60は、アプリケーションのプログラム等を記憶する。記憶部60は、静的解析部10と、動的解析部30と、評価部40との処理結果を適宜記憶してもよい。記憶部60は、アプリケーション解析装置1に対して着脱が可能な外部記憶媒体であってもよい。
The
アプリケーション解析装置1のコンピュータが、静的解析部10と、実行部20と、動的解析部30と、評価部40と、出力部50との動作を規定する命令を含むプログラムを読み込み、読み込まれたプログラムを実行してもよい。つまり、静的解析部10と、実行部20と、動的解析部30と、評価部40と、出力部50との機能はソフトウェアにより実現されてもよい。このプログラムは、例えばフラッシュメモリのような「コンピュータ読み取り可能な記録媒体」により提供されてもよい。また、上述したプログラムは、このプログラムが保存された記憶装置等を有するコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波によりアプリケーション解析装置1に伝送されてもよい。プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体である。また、上述したプログラムは、前述した機能の一部を実現してもよい。さらに、上述したプログラムは、前述した機能をコンピュータに既に記録されているプログラムとの組合せで実現できる差分ファイル(差分プログラム)であってもよい。
The computer of the
以下では、一例として、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
静的解析部10は、アプリケーションのプログラムを逆コンパイルして得られるプログラムコードを解析する静的解析を行う(ステップS100)。ステップS100では、以下の処理が行われる。
The
静的解析部10は、記憶部60からアプリケーションのプログラムを読み出す。静的解析部10は、アプリケーションのプログラムを逆コンパイルし、解析可能なコードを取得する。
The
図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
アプリケーションのプログラム300を逆コンパイルするためのツールとして、apk−tool、soot、およびdex−2−jar等がある。本実施形態の説明では、apk−toolを利用する。
Examples of tools for decompiling the
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
静的解析部10は、smaliファイルに含まれるコードから、利用者情報を取得する関数の情報を取得する。図4は、利用者情報を取得する関数(第1の関数)の例を示している。図4に示す関数は、OSが基本的な機能の実現のために提供しているAPI(Application Programming Interface)である。それぞれの関数はクラスに定義されている。図4では、関数として、getDeviceId関数と、getSubscriberId関数と、requestLocationUpdates関数と、getLatitude関数と、getLongitude関数とが示されている。
The
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
図4に示すクラス名と関数名とを含む関数リストが記憶部60に予め記憶されている。静的解析部10は、関数リストに含まれるクラス名と関数名とに基づいてsmaliファイルを解析する。
A function list including the class name and the function name shown in FIG. The
図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
静的解析部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
静的解析部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
静的解析部10は、図4に示す全ての関数に対して、上記と同様の処理を行う。ステップS100では、上記の処理が行われる。
The
ステップS100の処理が行われた後、実行部20は、アプリケーションのプログラムを記憶部60から読み出す。実行部20は、読み出されたアプリケーションのプログラムを実行する(ステップS110)。アプリケーションのプログラムの実行中、アプリケーションに対する操作が適宜行われる。アプリケーションに対する操作は、自動操作と手動操作とのどちらであってもよい。
After the process of step S100 is performed, the
ステップS110の処理が行われた後、動的解析部30は、アプリケーションの挙動を解析する動的解析を行う(ステップS120)。ステップS120では、以下の処理が行われる。
After the processing of step S110 is performed, the
動的解析部30は、アプリケーションのプログラムの実行結果を解析する。具体的には、動的解析部30は、アプリケーションのプログラムが実行されているときに出力されるログを解析する。アプリケーションのプログラムの実行結果であるログには、プログラムが実行されたときに呼び出された第3の関数の第2の関数名と、第3の関数が定義された第2のクラスの第2のクラス名とが含まれる。動的解析部30は、ログに、第1のクラス名と第1の関数名との組み合わせが含まれるか否かを解析することにより、第2の関数が実行されたか否かを判定する。
The
動的解析部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
アプリケーションから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,
図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,
動的解析部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
つまり、動的解析部30は、検索の文字列と一致する文字列がログから検出された場合、第2の関数が実行されたと判定する。また、動的解析部30は、検索の文字列と一致する文字列がログから検出されなかった場合、第2の関数が実行されていないと判定する。検索の文字列は、静的解析(ステップS100)で取得された第1のクラス名と第1の関数名とを文字「.」で繋いだ文字列である。ステップS120では、上記の処理が行われる。
That is, the
第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
ステップS120の処理が行われた後、評価部40は、第1のクラス名と第1の関数名との組み合わせの総数に対する、実行された第2の関数に関する第1のクラス名と第1の関数名との組み合わせの数の割合を算出する(ステップS130)。実行された第2の関数は、動的解析部30によって、実行されたと判定された第2の関数である。実行率は、(1)式により算出される。
After the process of step S120 is performed, the
図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
出力部50は、ステップS120の処理結果を出力してもよい。例えば、出力部50は、利用者情報を取得する第1の関数を実行する第2の関数の第1の関数名と、第2の関数が定義された第1のクラスの第1のクラス名と、アプリケーションのプログラムの実行時に第2の関数が実行されたか否かを示す情報とを出力してもよい。したがって、アプリケーション解析装置1は、評価部40を有していなくてもよい。
The
本実施形態によれば、アプリケーションのプログラムが実行されたときに、利用者情報を取得する第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
静的解析部10はさらに、第1のクラスが定義されたアプリケーションの名称である第3のパッケージ名を、アプリケーションのプログラムを解析して取得する。プログラムの実行結果は、第3の関数の第2の関数名と、第2のクラスの第2のクラス名と、第2のクラスが定義されたアプリケーションの第3のパッケージ名とを含む。動的解析部30は、アプリケーションのプログラムの実行結果に、第1のクラス名と第1の関数名と第3のパッケージ名との組み合わせが含まれるか否かを解析することにより、第2の関数が実行されたか否かを判定する。
The
一般的に、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
アプリケーションに搭載されうるライブラリの第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
図3に示すマニフェストファイル302には、アプリケーションの第3のパッケージ名の情報が含まれる。具体的には、マニフェストファイル302には、文字列「<manifest package=XXXXX>」が含まれる。文字列「XXXXX」は任意の文字列であり、アプリケーションの第3のパッケージ名を示している。
The
静的解析で取得される第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
アプリケーションのパッケージ名は存在するが、そのパッケージ名がマニフェストファイル302に記録されない場合がある。マニフェストファイル302からアプリケーションのパッケージ名が取得できない場合、静的解析により取得されたパッケージ名のうちライブラリリストに含まれる第1のパッケージ名と一致しないパッケージ名はアプリケーションの第3のパッケージ名であると判断してもよい。
Although the package name of the application exists, the package name may not be recorded in the
ログに記録される第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
図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
動的解析部30は、検索の文字列と一致する文字列がログから検出された場合、第2の関数が実行されたと判定する。また、動的解析部30は、検索の文字列と一致する文字列がログから検出されなかった場合、第2の関数が実行されていないと判定する。検索の文字列がライブラリの第1のパッケージ名を含む場合、動的解析部30は、ライブラリで定義された第2の関数が実行されたと判定する。検索の文字列がアプリケーションの第3のパッケージ名を含む場合、動的解析部30は、アプリケーション本体で定義された第2の関数が実行されたと判定する。
The
評価部40は、パッケージ名毎に実行率を算出する。具体的には、評価部40は、ライブラリの第1のパッケージ名と対応する第1のクラス名を含む組み合わせに対して実行率を算出する。また、評価部40は、アプリケーションの第3のパッケージ名と対応する第1のクラス名を含む組み合わせに対して実行率を算出する。
The
図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
本実施形態の変形例によれば、アプリケーションのプログラムが実行されたときに、ライブラリまたはアプリケーション本体で定義された第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
Claims (6)
前記プログラムを実行する実行部と、
前記プログラムが実行されたときに呼び出された第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に記載のアプリケーション解析装置。 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.
前記動的解析部は、前記第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:
前記プログラムを実行する第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.
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)
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 |
-
2015
- 2015-04-16 JP JP2015084033A patent/JP6466234B2/en active Active
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 |