JP2013065168A - Application analyzer and program - Google Patents

Application analyzer and program Download PDF

Info

Publication number
JP2013065168A
JP2013065168A JP2011203010A JP2011203010A JP2013065168A JP 2013065168 A JP2013065168 A JP 2013065168A JP 2011203010 A JP2011203010 A JP 2011203010A JP 2011203010 A JP2011203010 A JP 2011203010A JP 2013065168 A JP2013065168 A JP 2013065168A
Authority
JP
Japan
Prior art keywords
application
api
analysis
analysis unit
source code
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.)
Granted
Application number
JP2011203010A
Other languages
Japanese (ja)
Other versions
JP5690689B2 (en
Inventor
Hideaki Kawabata
秀明 川端
Takamasa Isohara
隆将 磯原
Keisuke Takemori
敬祐 竹森
Ayumi Kubota
歩 窪田
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 JP2011203010A priority Critical patent/JP5690689B2/en
Publication of JP2013065168A publication Critical patent/JP2013065168A/en
Application granted granted Critical
Publication of JP5690689B2 publication Critical patent/JP5690689B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

PROBLEM TO BE SOLVED: To provide an application analyzer capable of reducing erroneous detection of a malicious application, and to provide a program.SOLUTION: An application analyzer comprises: a disassembly section 10 for disassembling an executable code of an application to be analyzed to obtain a source code corresponding to the executable code; an API extraction section 11 for extracting a first API that obtains information held in a terminal and a second API that transmits the information to an external device, from the source code; an analysis section 12 for analyzing the source code to identify a method that calls the extracted API, and for determining whether or not the identified method is invoked in response to an event not due to an operation performed by a user in a state where the application is activated; an application determination section 13 for determining whether or not the application to be analyzed is malicious on the basis of the analysis result by the analysis section 12.

Description

本発明は、アプリケーションの機能を解析するアプリケーション解析装置に関する。また、本発明は、本アプリケーション解析装置としてコンピュータを機能させるためのプログラムにも関する。   The present invention relates to an application analysis apparatus that analyzes application functions. The present invention also relates to a program for causing a computer to function as the application analysis apparatus.

汎用OS(オペレーティングシステム)を用いたオープンプラットフォームを採用する、スマートフォンと呼ばれる携帯情報端末が普及している。また、スマートフォンに搭載される汎用OSとして、端末で管理される情報や機能を利用するための命令や関数の集合であるAPI(Application Program Interface) が豊富に用意されているAndroid(登録商標) OS が注目を集めている。本明細書では一例として、Android(登録商標) OSを搭載したスマートフォンについて記載する。   Portable information terminals called smartphones that use an open platform using a general-purpose OS (operating system) have become widespread. In addition, as a general-purpose OS installed in smartphones, Android (registered trademark) OS that has abundant API (Application Program Interface) that is a set of instructions and functions for using information and functions managed by the terminal Has attracted attention. As an example, this specification describes a smartphone equipped with an Android (registered trademark) OS.

スマートフォンは、誰もが自由にアプリケーションを開発して公開でき、公開されたアプリケーションをユーザが自由にインストールできるプラットフォームである。公開されたアプリケーションをスマートフォンに導入することにより、スマートフォンの様々な機能を柔軟かつ容易に拡張することができる。   A smartphone is a platform that allows anyone to freely develop and publish applications and allow users to freely install published applications. By introducing a published application to a smartphone, various functions of the smartphone can be expanded flexibly and easily.

しかし、アプリケーションの中には、ユーザに気付かれないように、端末内の情報を収集して外部に送信する悪性アプリケーションが存在する。特に、正規のアプリケーションを装いつつ、こうした不正な振る舞いを行うアプリケーションはトロイの木馬と呼ばれており、ユーザがその脅威に気付くことは困難である。   However, among applications, there is a malicious application that collects information in a terminal and transmits it to the outside so that the user does not notice it. In particular, an application that impersonates a legitimate application and performs such illegal behavior is called a Trojan horse, and it is difficult for the user to notice the threat.

スマートフォンには、電話やカメラを制御するAPIが設けられており、アプリケーションがAPIを利用して発呼や、SMS通信、写真撮影を行うことができる。これらの行為を悪意のアプリケーションが密かに行った場合、勝手な課金やプライバシの漏洩が発生する。   Smartphones have APIs that control phones and cameras, and applications can make calls, send SMS messages, and take photos using the APIs. If these actions are secretly performed by a malicious application, self-accounting and privacy leakage will occur.

また、スマートフォンは、ユーザとの結びつきがPC(パーソナルコンピュータ)よりも緊密な機器であり、電話番号、メールアドレス、住所録、メールの送受信履歴、インターネットの閲覧履歴等の個人情報が集積している。また、端末の高機能化と、常に携帯される利用形態とから、従来のPCでは収集されなかった位置情報等の情報も容易に取得可能となり、情報が悪用される脅威に直面する。   Smartphones are more closely connected to users than PCs (personal computers), and they collect personal information such as phone numbers, e-mail addresses, address books, e-mail transmission / reception histories, and Internet browsing histories. . In addition, because of the high functionality of the terminal and the mode of use that is always carried, it is possible to easily acquire information such as location information that was not collected by conventional PCs, and face the threat of misuse of information.

また、スマートフォンでは、ユーザが明示的に操作を行ってアプリケーションを起動できる機能以外にも、端末の状態の変化に応じてアプリケーションが自動的に起動する機能がある。例えば、電話の着信があった、端末が再起動した、WiFiがオンになった等の端末の状態の変化によってアプリケーションを自動的に起動させることができる。よって、ユーザが誤って悪性アプリケーションを一旦端末にインストールしてしまうと、ユーザの知らないうちに情報漏洩が発生する可能性がある。したがって、アプリケーションを容易に入手可能な環境において情報が悪用される脅威からユーザを保護する必要がある。   In addition, the smartphone has a function of automatically starting the application in response to a change in the state of the terminal, in addition to a function that allows the user to explicitly operate to start the application. For example, the application can be automatically started by a change in the state of the terminal such as an incoming call, a terminal restarted, or WiFi turned on. Therefore, once a user mistakenly installs a malicious application on a terminal, information leakage may occur without the user's knowledge. Therefore, there is a need to protect users from threats where information is misused in environments where applications are readily available.

ユーザを悪性アプリケーションによる脅威から保護する手法として、アプリケーションの安全性を事前に検証し、悪性アプリケーションを検知する仕組みが有効である。情報漏洩を行うアプリケーションを検知する手法として、動的解析および静的解析の手法が提案されている。   As a technique for protecting users from threats caused by malicious applications, a mechanism for verifying application safety in advance and detecting malicious applications is effective. Dynamic analysis and static analysis methods have been proposed as methods for detecting applications that leak information.

動的解析とは、実際にアプリケーションを動作させ、アプリケーションの振る舞いが記録されたログを解析することで、アプリケーションの悪性/良性判定を行う手法である(例えば、非特許文献1参照)。代表的な解析方法として、straceログの情報を用いた手法がある。この手法は、アプリケーションがシステムの機能を利用した際にログに記録された情報から悪性の挙動を解析する手法である。しかしながら、この手法では、外部に送信する情報が暗号化されていた場合、悪性の挙動を検知することができない。また、アプリケーションがタイマー機能を持ち、アプリケーションが起動してから10時間後に悪性の挙動が発生するなどの設定が行われていることもあり、長時間の監視が必要になるなど、悪性の挙動を検知することが難しくなるといった課題がある。   The dynamic analysis is a method for determining malignancy / benignity of an application by actually operating the application and analyzing a log in which the behavior of the application is recorded (see, for example, Non-Patent Document 1). As a typical analysis method, there is a method using information of an strace log. This method is a method for analyzing malignant behavior from information recorded in a log when an application uses a system function. However, with this method, when information to be transmitted to the outside is encrypted, malignant behavior cannot be detected. In addition, the application has a timer function, and it may be configured that malignant behavior occurs 10 hours after the application starts, so it is necessary to monitor for a long time. There is a problem that it is difficult to detect.

一方、静的解析とは、アプリケーションの実行コードのディスアセンブルを行ってアプリケーションのソースコードを取得し、そのソースコードから悪性の挙動を解析する手法である。非特許文献2には、静的解析を用いてスマートフォン用のアプリケーションを検査し、解析対象のアプリケーションが情報漏洩アプリケーションか否かを判定する手法が記載されている。この手法では、具体的には、個人情報を取得するAPIと、外部に情報を送信するAPIとが繋がるかどうかを解析している。また、個人情報を取得するAPIが実行されるタイミングと、外部に情報を送信するAPIが実行されるタイミングとの間で、情報の利用に関するユーザの承諾(同意)の操作が行われるかどうかを考慮している。   On the other hand, the static analysis is a method of disassembling the execution code of the application to acquire the source code of the application and analyzing the malignant behavior from the source code. Non-Patent Document 2 describes a method of inspecting a smartphone application using static analysis and determining whether the analysis target application is an information leakage application. Specifically, this method analyzes whether an API for acquiring personal information is connected to an API for transmitting information to the outside. Also, whether the user's consent (consent) operation regarding the use of information is performed between the timing at which the API for acquiring personal information is executed and the timing at which the API for sending information to the outside is executed. I am considering.

竹森敬祐、磯原隆将、窪田歩、高野智秋、「Android携帯電話上での情報漏洩検知」、電子情報通信学会、SCIS2011シンポジウム、2011年1月Keisuke Takemori, Takamasa Sugawara, Ayumu Kubota, Tomoaki Takano, "Information leak detection on Android mobile phones", IEICE, SCIS2011 Symposium, January 2011 EGELE M., KRUEGEL C., KIRDA E., AND VIGNA G., PiOS:Detecting Privacy Leaks in iOS Applications., In Proceedings of the Network and Distributed System Security Symposium (2011)EGELE M., KRUEGEL C., KIRDA E., AND VIGNA G., PiOS: Detecting Privacy Leaks in iOS Applications., In Proceedings of the Network and Distributed System Security Symposium (2011)

非特許文献2に記載された手法では、個人情報を取得するAPIが実行されるタイミングと、外部に情報を送信するAPIが実行されるタイミングとの間でユーザの承諾の操作が行われることを良性アプリケーションの特徴としている。しかし、この手法では、ユーザが承諾のための操作を行うタイミングとして上記以外のタイミング(例えばアプリケーションの起動直後のタイミング)は考慮されていない。このため、ユーザによる明示的な承諾の操作が行われてから個人情報の取得および外部への情報送信を行うように構成された良性アプリケーションを解析した場合に、個人情報を取得するAPIが実行されるタイミングと、外部に情報を送信するAPIが実行されるタイミングとの間でユーザの承諾の操作が行われないことが分かると、悪性アプリケーションとして誤検知する可能性があった。   In the method described in Non-Patent Document 2, the user's consent operation is performed between the timing at which the API for acquiring personal information is executed and the timing at which the API for transmitting information to the outside is executed. It is a feature of benign applications. However, in this method, timings other than those described above (for example, timing immediately after activation of the application) are not considered as timing for the user to perform an operation for consent. For this reason, when a benign application configured to acquire personal information and send information to the outside is analyzed after an explicit consent operation by the user, an API for acquiring personal information is executed. If it is found that the user's consent operation is not performed between the timing at which the API for transmitting information to the outside and the timing at which the API for transmitting information is executed, there is a possibility that it is erroneously detected as a malicious application.

本発明は、上述した課題に鑑みてなされたものであって、ユーザが端末に対して行う操作を考慮してアプリケーションの良性/悪性を判定する従来の手法で発生しうる悪性アプリケーションの誤検知を低減することができるアプリケーション解析装置およびプログラムを提供することを目的とする。   The present invention has been made in view of the above-described problems, and detects erroneous detection of a malignant application that may occur in a conventional method of determining benign / malignant application in consideration of an operation performed by a user on a terminal. An object of the present invention is to provide an application analysis apparatus and a program that can be reduced.

本発明は、上記の課題を解決するためになされたもので、解析対象のアプリケーションの実行コードをディスアセンブルし、前記実行コードに対応するソースコードを得るディスアセンブル部と、端末内の情報を取得する第1のAPI(Application Program Interface)および情報を外部の機器へ送信する第2のAPIを前記ソースコードから抽出する抽出部と、前記ソースコードを解析し、前記抽出部によって抽出されたAPIを実行するメソッドを特定し、特定したメソッドが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されるか否かを判定する解析部と、前記第1のAPIおよび前記第2のAPIが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されると判定された場合に、前記解析対象のアプリケーションが悪性であると判定する判定部と、を備えたことを特徴とするアプリケーション解析装置である。   The present invention has been made to solve the above-described problem, and disassembles an execution code of an application to be analyzed, obtains a source code corresponding to the execution code, and acquires information in the terminal A first API (Application Program Interface) to be transmitted and a second API for transmitting information to an external device, and an extraction unit for extracting the API extracted from the source code by analyzing the source code An analysis unit that identifies a method to be executed and determines whether the identified method is executed based on an occurrence of an event that is not caused by an operation performed on a terminal by a user while the application is running; Occurrence of an event not caused by an operation performed by the user on the terminal while the application is running in the first API and the second API If it is determined to be executed on the basis of an application analyzing apparatus characterized by comprising: a determination unit and the analysis target application is malignant.

また、本発明のアプリケーション解析装置において、前記解析部は、前記ソースコードを解析し、前記抽出部によって抽出されたAPIを実行するメソッドを特定し、さらに、特定したメソッドを実行する他のメソッドを特定し、特定した他のメソッドが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されるか否かを判定することを特徴とする。   In the application analysis apparatus of the present invention, the analysis unit analyzes the source code, specifies a method for executing the API extracted by the extraction unit, and further selects another method for executing the specified method. It is characterized in that it is determined whether or not another specified method is executed based on the occurrence of an event not caused by an operation performed by the user on the terminal while the application is running.

また、本発明のアプリケーション解析装置において、メソッドが所定のメソッドを指定するときのメソッド名と前記所定のメソッドのメソッド名とが異なるソースコードから生成されたアプリケーションが解析対象である場合に、前記解析部は、特定したメソッドが前記所定のメソッドであれば、前記所定のメソッドを指定するときのメソッド名に基づいて前記他のメソッドを特定することを特徴とする。   Further, in the application analysis apparatus of the present invention, when an application generated from a source code in which a method name for specifying a predetermined method and a method name of the predetermined method are different from each other, the analysis is performed. The unit is characterized in that, if the specified method is the predetermined method, the other method is specified based on a method name when the predetermined method is designated.

また、本発明のアプリケーション解析装置において、前記解析部は、アプリケーションが利用する機能や権限を規定したマニフェストファイルに基づいて、特定したメソッドが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されるか否かを判定することを特徴とする。   In the application analysis apparatus of the present invention, the analysis unit performs the specified method on the terminal in a state where the application is activated based on a manifest file that defines the function and authority used by the application. It is characterized by determining whether or not to execute based on the occurrence of an event not caused by an operation.

また、本発明のアプリケーション解析装置において、前記解析部は、特定したメソッドが、アプリケーションを起動するためにユーザが端末上で操作を行ったときに実行されるか否かを判定することを特徴とする。   Further, in the application analysis apparatus of the present invention, the analysis unit determines whether or not the specified method is executed when the user performs an operation on the terminal to start the application. To do.

また、本発明のアプリケーション解析装置において、前記解析部は、特定したメソッドが、端末の状態変化に基づいてブロードキャストされるインテントが発生したときに実行されるか否かを判定することを特徴とする。   Further, in the application analysis apparatus of the present invention, the analysis unit determines whether or not the specified method is executed when an intent that is broadcast based on a state change of the terminal occurs. To do.

また、本発明のアプリケーション解析装置において、前記解析部は、特定したメソッドが、アプリケーションの状態遷移に関係するメソッドであるか否かを判定することを特徴とする。   In the application analysis apparatus of the present invention, the analysis unit determines whether or not the specified method is a method related to application state transition.

また、本発明のアプリケーション解析装置において、前記解析部は、特定した他のメソッドが、アプリケーションの状態遷移に関係するメソッドであるか否かを判定することを特徴とする。   In the application analysis apparatus of the present invention, the analysis unit determines whether or not the other specified method is a method related to application state transition.

また、本発明は、上記のアプリケーション解析装置としてコンピュータを機能させるためのプログラムである。   Further, the present invention is a program for causing a computer to function as the application analysis apparatus.

本発明によれば、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて情報の取得と送信を自動的に実行する悪性アプリケーションを検知することが可能となる。このため、ユーザが端末上で行う操作を考慮してアプリケーションの良性/悪性を判定する従来の手法で発生しうる悪性アプリケーションの誤検知を低減することができる。   According to the present invention, it is possible to detect a malignant application that automatically executes information acquisition and transmission based on the occurrence of an event that is not caused by an operation performed by a user on a terminal while the application is running. Become. For this reason, it is possible to reduce erroneous detection of a malignant application that may occur in a conventional method of determining benign / malignant of an application in consideration of an operation performed by a user on a terminal.

本発明の一実施形態によるアプリケーション解析装置の構成を示すブロック図である。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 file obtained by disassembling the file of the application in one Embodiment of this invention. 本発明の一実施形態において、個人情報を取得するAPIを示す参考図である。FIG. 5 is a reference diagram showing an API for acquiring personal information in an embodiment of the present invention. 本発明の一実施形態において、外部に情報を送信するAPIを示す参考図である。In one Embodiment of this invention, it is a reference figure which shows API which transmits information outside. 本発明の一実施形態によるアプリケーション解析装置の動作の手順を示すフローチャートである。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 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 source code of the application in one Embodiment of this invention. 本発明の一実施形態におけるアプリケーションのソースコードを示す参考図である。It is a reference figure which shows the source code of the application in one Embodiment of this invention. 本発明の一実施形態におけるアプリケーションのソースコードを示す参考図である。It is a reference figure which shows the source code of the application in one Embodiment of this invention. 本発明の一実施形態におけるアプリケーションのソースコードを示す参考図である。It is a reference figure which shows the source code of the application in one Embodiment of this invention. 本発明の一実施形態におけるマニフェストファイルの記述を示す参考図である。It is a reference figure which shows the description of the manifest file in one Embodiment of this invention. 本発明の一実施形態におけるアプリケーションのソースコードを示す参考図である。It is a reference figure which shows the source code of the application in one Embodiment of this invention. 本発明の一実施形態におけるBroadcastIntentを示す参考図である。It is a reference figure showing BroadcastIntent in one embodiment of the present invention. 本発明の一実施形態におけるマニフェストファイルの記述を示す参考図である。It is a reference figure which shows the description of the manifest file in one Embodiment of this invention. 本発明の一実施形態におけるアプリケーションのソースコードを示す参考図である。It is a reference figure which shows the source code of the application in one Embodiment of this invention.

以下、図面を参照し、本発明の実施形態を説明する。本明細書および図面では、便宜上、必要に応じてAndroid(登録商標)という文字列を*Andrd*という文字列で代用し、java(登録商標)という文字列を*jv*という文字列で代用している。すなわち、*Andrd*という文字列はAndroid(登録商標)という文字列と等価であり、*jv*という文字列はjava(登録商標)という文字列と等価である。また、本明細書では、ソースコードに記述されるメソッド名等の文字列を記載するときに、「と」で文字列を囲んで示すことがある。例えば、本明細書では、「XXX」はXXXという文字列を示すものとする。   Hereinafter, embodiments of the present invention will be described with reference to the drawings. In this specification and drawings, for 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). Further, in this specification, when a character string such as a method name described in the source code is described, the character string may be surrounded by “to”. For example, in this specification, “XXX” indicates a character string “XXX”.

本実施形態によるアプリケーション解析装置は、解析対象のアプリケーションの実行コードをディスアセンブル(逆アセンブル)して得られるソースコード(ソースファイル)を解析し、端末に格納された個人情報を取得するAPI(以下、個人情報取得APIと記載)と、情報を外部の機器へ送信するAPI(以下、外部送信APIと記載)とをソースコードから抽出する。また、本実施形態によるアプリケーション解析装置は、ソースコードから抽出した個人情報取得APIと外部送信APIを実行するメソッドを特定し、特定したメソッドが、ユーザが端末上で行う操作(アプリケーションを起動するための操作を除く)に起因しないイベントの発生に基づいて実行される場合に、解析対象のアプリケーションが悪性であると判定する。このようなイベントとして、端末の状態変化が発生したというイベントや、アプリケーションを起動する操作が行われたというイベント等がある。   The application analysis apparatus according to the present embodiment analyzes a source code (source file) obtained by disassembling (disassembling) an execution code of an application to be analyzed, and obtains personal information stored in the terminal (hereinafter referred to as an API). And an API for transmitting information to an external device (hereinafter referred to as an external transmission API) from the source code. In addition, the application analysis apparatus according to the present embodiment specifies a method for executing the personal information acquisition API and the external transmission API extracted from the source code, and the specified method is an operation performed on the terminal by the user (to start the application). In other words, it is determined that the analysis target application is malignant. Examples of such an event include an event that a terminal state change has occurred, an event that an operation for starting an application has been performed, and the like.

本実施形態では、端末に格納された情報の利用を承諾(同意)するためにユーザが行う操作を直接的な発生原因としない特定のイベントが発生したときに個人情報取得APIと外部送信APIを自動的に実行するアプリケーションが悪性アプリケーション(情報漏洩アプリケーション)として検知される。このため、ユーザが行う承諾の操作に伴って個人情報取得APIと外部送信APIを実行するように構成されたアプリケーションを解析した場合には、解析対象のアプリケーションは悪性アプリケーションとして検知されない。したがって、良性アプリケーションを悪性アプリケーションとして誤検知する可能性を低減することができる。   In this embodiment, when a specific event that does not directly cause the operation performed by the user to accept (agree) the use of the information stored in the terminal occurs, the personal information acquisition API and the external transmission API are set. An automatically executed application is detected as a malicious application (information leakage application). For this reason, when analyzing an application configured to execute the personal information acquisition API and the external transmission API in accordance with the consent operation performed by the user, the analysis target application is not detected as a malignant application. Therefore, the possibility that a benign application is erroneously detected as a malignant application can be reduced.

本実施形態によるアプリケーション解析装置は、例えばスマートフォン用のアプリケーションを通信ネットワーク上で販売する販売サイトを管理する企業に設置される。また、本実施形態によるアプリケーション解析装置が行う解析のアルゴリズムをアンチウイルスソフトに適用することも可能である。したがって、ユーザが端末にインストールするアプリケーションを事前に審査することができる。   The application analysis apparatus according to the present embodiment is installed in a company that manages a sales site that sells, for example, smartphone applications on a communication network. The analysis algorithm performed by the application analysis apparatus according to the present embodiment can also be applied to anti-virus software. Therefore, the application that the user installs on the terminal can be examined in advance.

図1は、本実施形態によるアプリケーション解析装置の構成を示している。図1に示すように、アプリケーション解析装置は、アプリケーション解析部1および記憶部2を有する。   FIG. 1 shows the configuration of the application analysis apparatus according to the present embodiment. As illustrated in FIG. 1, the application analysis apparatus includes an application analysis unit 1 and a storage unit 2.

アプリケーション解析部1は、解析対象のアプリケーションの実行ファイルであるパッケージファイル(アプリケーションファイル)からディスアセンブルによりソースコードを取得し、取得したソースコードを解析して解析対象のアプリケーションの良性/悪性の判定を行う。パッケージファイルは、例えば拡張子が.apkのファイルであり、命令列を含む実行コード(例えば拡張子が.dex)、アプリケーションが利用する機能や権限が定義されたマニフェストファイル(例えば拡張子が.xml)、アプリケーションが利用するテキストファイルや画像ファイル等の各種リソースファイルを含む。記憶部2は、解析対象のアプリケーションのパッケージファイルを記憶するほか、個人情報取得APIおよび外部送信API等の情報が記録されたリストを記憶する。   The application analysis unit 1 acquires source code by disassembly from a package file (application file) that is an execution file of the analysis target application, analyzes the acquired source code, and determines whether the analysis target application is benign / malignant. Do. A package file is a file with an extension of .apk, for example, an execution code including an instruction sequence (for example, extension .dex), a manifest file in which functions and privileges used by the application are defined (for example, extension .xml) ), Including various resource files such as text files and image files used by the application. The storage unit 2 stores a package file of an analysis target application and a list in which information such as a personal information acquisition API and an external transmission API is recorded.

アプリケーション解析部1は、ディスアセンブル部10、API抽出部11、解析部12、アプリケーション判定部13、および制御部14を有する。ディスアセンブル部10は、解析対象のアプリケーションの実行コードをディスアセンブル(逆アセンブル)し、実行コードに対応するソースコード(ソースファイル)を得る。API抽出部11は、ソースコードから個人情報取得APIと外部送信APIを抽出する。   The application analysis unit 1 includes a disassembly unit 10, an API extraction unit 11, an analysis unit 12, an application determination unit 13, and a control unit 14. The disassembler 10 disassembles (disassembles) the execution code of the application to be analyzed, and obtains a source code (source file) corresponding to the execution code. The API extraction unit 11 extracts a personal information acquisition API and an external transmission API from the source code.

解析部12は、ソースコードを解析し、API抽出部11によって抽出された個人情報取得APIと外部送信API のそれぞれを実行するメソッドを特定し、特定したメソッドが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されるか否かを判定する。アプリケーション判定部13は、解析部12がソースコードを解析した結果に基づいて、解析対象のアプリケーションの良性/悪性を判定する。制御部14は、アプリケーション解析部1における各部の動作を制御する。   The analysis unit 12 analyzes the source code, specifies a method for executing each of the personal information acquisition API and the external transmission API extracted by the API extraction unit 11, and the specified method is in a state where the application is activated. It is determined whether or not it is executed based on the occurrence of an event not caused by an operation performed on the terminal by the user. The application determination unit 13 determines benign / malignant of the analysis target application based on the result of the analysis unit 12 analyzing the source code. The control unit 14 controls the operation of each unit in the application analysis unit 1.

次に、本実施形態におけるアプリケーションの解析手法の概念を説明する。Android(登録商標)OS上で動作するアプリケーションの構成要素(コンポーネント)として、Activity、Service、BroadcastReceiver、ContentProviderの4つがある。以下、各コンポーネントについて説明する。   Next, the concept of the application analysis method in this embodiment will be described. There are four components (components) of an application that runs on an Android (registered trademark) OS: Activity, Service, BroadcastReceiver, and ContentProvider. Hereinafter, each component will be described.

Activityは、ユーザに対して視覚的なインターフェイスを提供し、画面上でユーザと対話を行うコンポーネントである。アプリケーションを起動すると画面が表示される場合、Activityに記述されたプログラムが動作している。   Activity is a component that provides a visual interface to the user and interacts with the user on the screen. If the screen is displayed when the application is started, the program described in Activity is running.

Serviceは、画面を表示する機能を持たずに、バックグラウンドで処理を実行するコンポーネントである。例えば、ユーザが音楽を聞きながらブラウザを起動してインターネットの利用を楽しむ場合、音楽用アプリケーションがServiceを起動することにより、ユーザはインターネットの利用中に音楽を聞くことができる。   Service is a component that executes processing in the background without having a function of displaying a screen. For example, when the user activates a browser while listening to music and enjoys using the Internet, the user can listen to the music while using the Internet by activating the service for the music application.

BroadcastReceiverは、Android(登録商標)OSが搭載された端末のシステム全体にブロードキャストされるINTENT(以下、BroadcastIntentと記載)を受け取るコンポーネントである。例えば、電池残量が減ってきたときに、「残りのバッテリー残量が少ないです」というメッセージを含む画面を表示するアプリケーションでは、電池残量が変化するときに発行されるBroadcastIntentをBroadcastReceiverにより受け取ったアプリケーションがActivityを起動して画面を表示する。   BroadcastReceiver is a component that receives INTENT (hereinafter referred to as “BroadcastIntent”) broadcasted to the entire system of a terminal equipped with an Android (registered trademark) OS. For example, an application that displays a screen that includes the message “Remaining battery level is low” when the battery level is low, receives the BroadcastIntent issued when the battery level changes by the BroadcastReceiver. The application starts Activity and displays the screen.

ContentProviderは、アプリケーションが保持するデータを他のコンポーネントでも使用可能にするコンポーネントである。例えば、あるアプリケーションが電話帳のデータを取得したい場合、そのアプリケーションは、電話帳アプリケーションのContentProviderを利用して、電話帳に登録されている情報を取得する。   ContentProvider is a component that makes it possible for other components to use data held by the application. For example, when an application wants to acquire phonebook data, the application acquires information registered in the phonebook using the ContentProvider of the phonebook application.

Android(登録商標)では、アプリケーションのライフサイクル(状態遷移)に関する特別なメソッドがある。ライフサイクルに関するメソッドとして、コンポーネントが起動したタイミングで呼び出されて実行されるメソッドであるonCreate、onStart、onBind等のほか、コンポーネントが終了するタイミングで呼び出されて実行されるメソッドであるonDestroy等がある。   In Android (registered trademark), there is a special method related to the life cycle (state transition) of an application. As methods related to the life cycle, there are onCreate, onStart, onBind, and the like that are called and executed when the component is activated, and onDestroy that is a method that is called and executed when the component is finished.

本実施形態におけるアプリケーションの解析手法は、特にトロイの木馬の検知に適している。悪意のユーザがAndroid(登録商標)のトロイの木馬を他人の端末に導入させる手法として、不正な挙動が発生するように正規のアプリケーションを改竄し、そのアプリケーションをマーケットに公開するという手法がとられるという特徴がある。不正な挙動が発生するように正規のアプリケーションを改竄する簡単な手法として、以下の2つの手法がある。これまでに出現したトロイの木馬では、2つの手法のどちらかがとられていることが多い。   The application analysis method in this embodiment is particularly suitable for detection of Trojan horses. As a technique for a malicious user to introduce an Android (registered trademark) Trojan to another person's terminal, a technique is adopted in which a legitimate application is falsified so that illegal behavior occurs and the application is released to the market. There is a feature. There are the following two methods as a simple method for falsifying a legitimate application so that an illegal behavior occurs. Trojan horses that have appeared so far often take one of two approaches.

第1の手法は、個人情報の取得と情報の送信を行う正規のアプリケーションに対して、BroadcastReceiverを利用して、端末の状態変化が発生したときに不正な挙動が発生するように改竄を施す手法である。この手法は、正規のアプリケーションの実行コードを改竄せずにマニフェストファイルだけを改竄するだけで容易に実現できる。   The first method uses a BroadcastReceiver for a legitimate application that acquires personal information and transmits information so that it can be tampered with when a terminal state change occurs. It is. This technique can be easily realized by falsifying only the manifest file without falsifying the execution code of a legitimate application.

第2の手法は、個人情報の取得と情報の送信を行う正規のアプリケーションのソースコードにおいて、アプリケーションが起動した際に最初に呼び出されて実行されるメソッドが記述されている箇所に、不正な挙動が発生するメソッドのコードを追記する手法である。アプリケーションが起動した際に最初に呼び出されるメソッドを解析することは容易であり、この手法は、数行のコードを挿入するという容易な手法で実現できる。   In the second method, in the source code of a legitimate application that acquires personal information and transmits information, an illegal behavior is found at the place where the method that is called and executed first when the application is started is described. This is a method of adding the code of the method that causes the problem. It is easy to analyze the method that is called first when the application is started, and this method can be realized by an easy method of inserting several lines of code.

上記の2つの手法で改竄されたアプリケーションは、端末の状態変化の発生やアプリケーションの起動等の特定のイベントが発生した際に自動的に実行されるメソッドによって個人情報取得APIと外部送信APIが実行されるという特徴を有する。そこで、本実施形態では、この特徴を有するアプリケーションを悪性アプリケーションと判定する解析手法をとっている。   The application modified by the above two methods is executed by the personal information acquisition API and the external transmission API by a method that is automatically executed when a specific event such as the occurrence of a terminal state change or application startup occurs. It has the feature of being. Therefore, in this embodiment, an analysis method for determining an application having this feature as a malicious application is adopted.

次に、本実施形態によるアプリケーション解析装置の動作を説明する。図2はアプリケーション解析装置の動作を示している。まず、ディスアセンブル部10は、記憶部2に格納されている解析対象のアプリケーションのパッケージファイルを読み出してディスアセンブルし、ソースコードを得る(ステップS100)。代表的なディスアセンブルツールであるapk-toolを用いてディスアセンブルを行うと、図3に示すように、パッケージファイル(Sample.apk)から、.smali形式のソースコード(Main$JsObj.smali等)と.xml形式のマニフェストファイル(*andrd*Manifest.xml)を得ることができる。   Next, the operation of the application analysis apparatus according to the present embodiment will be described. FIG. 2 shows the operation of the application analysis apparatus. First, the disassembly unit 10 reads and disassembles a package file of an analysis target application stored in the storage unit 2 to obtain a source code (step S100). When disassembly is performed using apk-tool, which is a typical disassembly tool, as shown in Fig. 3, the source code in the .smali format (Main $ JsObj.smali, etc.) from the package file (Sample.apk) And .xml format manifest file (* andrd * Manifest.xml) can be obtained.

続いて、API抽出部11は、ステップS100で得られたソースコードに対して、個人情報取得APIと外部送信APIのメソッド名で検索を行い、個人情報取得APIと外部送信APIを抽出する(ステップS110)。図4は、代表的な個人情報取得APIを示している。端末を識別するIDであるIMEI(International Mobile Equipment Identity)を取得するメソッドであるgetDeviceIdや、端末のソフトウェアのバージョンを取得するメソッドであるgetDeviceSoftwareVersion、端末の電話番号を取得するメソッドであるgetLine1Number等が個人情報取得APIである。図5は、代表的な外部送信APIを示している。SMS(Short Message Service)を送信するメソッドであるsendTextMessage等が外部送信APIである。   Subsequently, the API extraction unit 11 searches the source code obtained in step S100 using the method names of the personal information acquisition API and the external transmission API, and extracts the personal information acquisition API and the external transmission API (step S100). S110). FIG. 4 shows a typical personal information acquisition API. Personal methods include getDeviceId, which is a method to obtain IMEI (International Mobile Equipment Identity), which identifies the device, getDeviceSoftwareVersion, which obtains the software version of the device, and getLine1Number, which obtains the phone number of the device. Information acquisition API. FIG. 5 shows a typical external transmission API. SendTextMessage, which is a method for sending SMS (Short Message Service), is an external sending API.

記憶部2には、個人情報取得APIと外部送信APIのメソッド名が記録されたリストが格納されている。ステップS110では、API抽出部11はこのリストを記憶部2から読み出し、リストに含まれるメソッド名の文字列とソースコード中の文字列とを比較し、リストに含まれるメソッド名の文字列と一致する文字列を抽出する。また、API抽出部11はステップS110の処理結果を制御部14へ出力する。   The storage unit 2 stores a list in which method names of the personal information acquisition API and the external transmission API are recorded. In step S110, the API extraction unit 11 reads this list from the storage unit 2, compares the method name character string included in the list with the character string in the source code, and matches the method name character string included in the list. Extract the character string to be used. Further, the API extraction unit 11 outputs the processing result of step S110 to the control unit 14.

続いて、制御部14は、ステップS110の処理結果に基づいて、個人情報取得APIと外部送信APIの両方が抽出された否かを判定する(ステップS120)。ステップS110において、個人情報取得APIのメソッド名の文字列と一致する文字列、外部送信APIのメソッド名の文字列と一致する文字列のうちの少なくとも一方が抽出されなかった場合、処理はステップS140に進む。また、ステップS110において、個人情報取得APIのメソッド名の文字列と一致する文字列、外部送信APIのメソッド名の文字列と一致する文字列のうちの両方が抽出された場合、制御部14は、抽出された個人情報取得APIのメソッド名と外部送信APIのメソッド名を解析部12に与え、ステップS100で得られたソースコードを解析部12に解析させる。   Subsequently, the control unit 14 determines whether or not both the personal information acquisition API and the external transmission API are extracted based on the processing result of Step S110 (Step S120). If at least one of the character string that matches the character string of the method name of the personal information acquisition API and the character string that matches the character string of the method name of the external transmission API is not extracted in step S110, the process proceeds to step S140. Proceed to In step S110, if both a character string that matches the method name character string of the personal information acquisition API and a character string that matches the method name character string of the external transmission API are extracted, the control unit 14 Then, the method name of the extracted personal information acquisition API and the method name of the external transmission API are given to the analysis unit 12, and the analysis unit 12 is made to analyze the source code obtained in step S100.

解析部12は、ソースコードを解析し、ステップS110で抽出された個人情報取得APIと外部送信API のそれぞれを実行するメソッドの解析を行う(ステップS130)。続いて、アプリケーション判定部13は、解析部12による解析の結果に基づいて、解析対象のアプリケーションの良性/悪性を判定する(ステップS140)。ステップS130,S140における処理の詳細な内容については、後述する。   The analysis unit 12 analyzes the source code and analyzes a method for executing each of the personal information acquisition API and the external transmission API extracted in step S110 (step S130). Subsequently, the application determination unit 13 determines benign / malignant of the application to be analyzed based on the analysis result by the analysis unit 12 (step S140). Detailed contents of the processing in steps S130 and S140 will be described later.

図6および図7は、ステップS130におけるアプリケーション解析装置の詳細な動作を示している。解析部12は、API抽出部11によって抽出された個々のAPIに対応して、図6および図7に示す処理を実行する。図6および図7に示す処理では、ステップS100で得られた全てのソースコードが解析の対象となる。まず、解析部12は、APIを実行するメソッドとクラスを特定する(ステップS1300)。   6 and 7 show the detailed operation of the application analysis apparatus in step S130. The analysis unit 12 executes the processes shown in FIGS. 6 and 7 in correspondence with the individual APIs extracted by the API extraction unit 11. In the processing shown in FIGS. 6 and 7, all the source codes obtained in step S100 are to be analyzed. First, the analysis unit 12 specifies a method and class for executing an API (step S1300).

図8はソースコードの一例を示している。APIは、「.method」と「public」、「private」、「static」、「synthetic」のいずれかと、メソッド名(図8では「onCreate」)とが記述されている行と、「.end method」が記述されている行との間に記述されている。ステップS1300において解析部12は以下の処理を行う。まず、解析部12は、ソースコードにおいてAPI名(図4および図5に示したメソッド名)を検索する。API名やメソッド名の検索は、文字列のマッチングにより行われる。これは、後述する各検索においても同様である。   FIG. 8 shows an example of the source code. The API includes ".method", "public", "private", "static", "synthetic", a line describing the method name ("onCreate" in FIG. 8), and ".end method" "Is described between the line in which" is described. In step S1300, the analysis unit 12 performs the following processing. First, the analysis unit 12 searches for an API name (method name shown in FIGS. 4 and 5) in the source code. Search for API names and method names is performed by matching character strings. The same applies to each search described later.

API名を発見した場合、解析部12は、ソースコードにおいてAPI名が記述されている行よりも前の行において「.method」を検索し、「.method」が記述されている行からメソッド名(図8では「onCreate」)を抽出する。抽出したメソッド名を有するメソッドが、APIを実行するメソッドである。つまり、図8の例では、onCreateというメソッドが、個人情報取得APIであるgetDeviceIDを実行する。さらに、解析部12は、APIを実行するメソッドのメソッド名が記述されている行よりも前の行において、クラスを規定する文字列である「.class」を検索し、「.class」が記述されている行からクラス名(図8では「com/app/sample/Main_Activity」)を抽出する。   When the API name is found, the analysis unit 12 searches for “.method” in a line before the line in which the API name is described in the source code, and searches for the method name from the line in which “.method” is described. ("OnCreate" in FIG. 8) is extracted. The method having the extracted method name is a method for executing the API. That is, in the example of FIG. 8, a method called onCreate executes getDeviceID that is a personal information acquisition API. Further, the analysis unit 12 searches for “.class”, which is a character string defining the class, in a line before the line in which the method name of the method for executing the API is described, and “.class” is described in the line. The class name ("com / app / sample / Main_Activity" in FIG. 8) is extracted from the line that has been processed.

ステップS1300以外のステップにおいて、前の手順で特定したメソッドを実行するメソッドとクラスを特定する際にステップS1300と同様の処理を行う場合、上記のAPI名の代わりに、前の手順で特定したメソッドのメソッド名を使用して同様の処理を行い、メソッド名とクラス名を抽出すればよい。   In the steps other than step S1300, when the same processing as step S1300 is performed when specifying the method and class for executing the method specified in the previous procedure, the method specified in the previous procedure is used instead of the above API name. You can do the same process using the method name and extract the method name and class name.

ステップS1300に続いて、解析部12は、前の手順で特定したメソッドがonBindであるか否かを判定する(ステップS1301)。前の手順で特定したメソッドがonBindであった場合、解析部12は、onBindを実行するメソッドとクラスを特定する(ステップS1307)。   Subsequent to step S1300, the analysis unit 12 determines whether or not the method specified in the previous procedure is onBind (step S1301). When the method specified in the previous procedure is onBind, the analysis unit 12 specifies the method and class for executing onBind (step S1307).

Android(登録商標) OSに対応したアプリケーションを生成するためのソースコードでは、アプリケーションのライフサイクルに関するメソッドのうち所定のメソッドの記述に特別な記述が用いられる。具体的には、あるメソッドが所定のメソッドを呼び出して実行することを記述している部分では、所定のメソッドのメソッド名とは異なる特別なメソッド名が指定される。例えば、onBindは、他のメソッドからBindServiceというメソッド名で呼び出されて実行される。   In the source code for generating an application corresponding to the Android (registered trademark) OS, a special description is used to describe a predetermined method among methods related to the life cycle of the application. Specifically, in a portion describing that a certain method calls and executes a predetermined method, a special method name different from the method name of the predetermined method is designated. For example, onBind is called from another method with the method name BindService and executed.

ステップS1307において解析部12は以下の処理を行う。onBindを実行するメソッドが記述されている部分(「.method」と「.end method」の間の部分)には、「BindService」と、前の手順でonBindと共に特定したクラス名との両方が記述されている。したがって、解析部12は、「.method」と「.end method」の間の部分において、「BindService」と、前の手順でonBindと共に特定したクラス名との両方を検索する。「.method」と「.end method」の間の部分において、「BindService」と、前の手順でonBindと共に特定したクラス名との両方が記述されていた場合、解析部12はステップS1300と同様にして、BindServiceを実行するメソッドとクラスを特定する。ステップS1307の処理が終了すると、ステップS1308の処理が行われる。   In step S1307, the analysis unit 12 performs the following processing. In the part where the method to execute onBind is described (the part between “.method” and “.end method”), both “BindService” and the class name specified with onBind in the previous step are described. Has been. Accordingly, the analysis unit 12 searches both “BindService” and the class name specified together with onBind in the previous procedure in the portion between “.method” and “.end method”. If both “BindService” and the class name specified together with onBind in the previous procedure are described in the portion between “.method” and “.end method”, the analysis unit 12 performs the same as in step S1300. Identify the method and class that executes BindService. When the process of step S1307 ends, the process of step S1308 is performed.

ステップS1301において、前の手順で特定したメソッドがonBindでなかった場合、解析部12は、前の手順で特定したメソッドがonActivityResultであるか否かを判定する(ステップS1302)。前の手順で特定したメソッドがonActivityResultであった場合、解析部12は、onActivityResultを実行するメソッドとクラスを特定する(ステップS1307)。onActivityResultは、アプリケーションのライフサイクルに関するメソッドであって、他のメソッドからstartActivityForResultというメソッド名で呼び出されて実行される。   If the method specified in the previous procedure is not onBind in step S1301, the analysis unit 12 determines whether the method specified in the previous procedure is onActivityResult (step S1302). When the method identified in the previous procedure is onActivityResult, the analysis unit 12 identifies the method and class for executing onActivityResult (step S1307). onActivityResult is a method related to the life cycle of the application, and is called from another method with the method name startActivityForResult and executed.

ステップS1307において解析部12は以下の処理を行う。onActivityResultを実行するメソッドが記述されている部分(「.method」と「.end method」の間の部分)では、以下の3つの要件が満たされる。
第1の要件:「const-class」と、前の手順で特定したクラス名とが同一の行に記述されている。
第2の要件:第1の要件を満たす行よりも下の行に「startActivityForResult(L*andrd*/content/Intent;I)V」が記述されている。
第3の要件:第1の要件を満たす行と、第2の要件を満たす行との間の行に「const-class」が記述されていない。
In step S1307, the analysis unit 12 performs the following processing. In the part where the method for executing onActivityResult is described (the part between “.method” and “.end method”), the following three requirements are satisfied.
First requirement: “const-class” and the class name specified in the previous procedure are described on the same line.
Second requirement: “startActivityForResult (L * andrd * / content / Intent; I) V” is described in a row below the row satisfying the first requirement.
Third requirement: “const-class” is not described in a row between a row satisfying the first requirement and a row satisfying the second requirement.

図9は、onActivityResultを実行するメソッドが記述されたソースコードの一例を示している。前の手順で特定されたクラス名がcom/app/sample/classである場合、図9に示すように、「const-class」と「com/app/sample/class」が同一の行に記述されている(第1の要件)。また、この行よりも下の行に「startActivityForResult(L*andrd*/content/Intent;I)V」が記述されている(第2の要件)。さらに、「const-class」と「com/app/sample/class」が記述されている行と、「startActivityForResult(L*andrd*/content/Intent;I)V」が記述されている行との間の行に「const-class」が記述されていない(第3の要件)。   FIG. 9 shows an example of source code in which a method for executing onActivityResult is described. If the class name specified in the previous step is com / app / sample / class, “const-class” and “com / app / sample / class” are described on the same line as shown in FIG. (First requirement). Also, “startActivityForResult (L * andrd * / content / Intent; I) V” is described in a line below this line (second requirement). Furthermore, between the line where "const-class" and "com / app / sample / class" are written, and the line where "startActivityForResult (L * andrd * / content / Intent; I) V" is written “Const-class” is not described in the line (third requirement).

解析部12は、「.method」と「.end method」の間の部分で上記の3つの要件が満たされるか否かを判定する。上記の3つの要件が満たされる場合、解析部12はステップS1300と同様にして、onActivityResultを実行するメソッドとクラスを特定する。ステップS1307の処理が終了すると、ステップS1308の処理が行われる。   The analysis unit 12 determines whether or not the above three requirements are satisfied in a portion between “.method” and “.end method”. When the above three requirements are satisfied, the analysis unit 12 specifies a method and class for executing onActivityResult in the same manner as in step S1300. When the process of step S1307 ends, the process of step S1308 is performed.

ステップS1302において、前の手順で特定したメソッドがonActivityResultでなかった場合、解析部12は、前の手順で特定したメソッドがonCreateであるか否かを判定する(ステップS1303)。onCreateは、アプリケーションのライフサイクルに関するメソッドであって、他のメソッドから所定のメソッド名で呼び出されて実行される。他のメソッドがonCreateを呼び出して実行するために指定する所定のメソッド名は、onCreateを構成要素とするクラスが継承するコンポーネントによって異なる。   If the method specified in the previous procedure is not onActivityResult in step S1302, the analysis unit 12 determines whether the method specified in the previous procedure is onCreate (step S1303). onCreate is a method related to the life cycle of the application, and is called and executed from another method with a predetermined method name. Predetermined method names that other methods specify to call and execute onCreate differ depending on the component inherited by the class having onCreate as a constituent element.

図10は、ソースコードのうち、クラスが継承するコンポーネントが記述されている部分のみを示している。クラスが継承するコンポーネントが記述されることにより、そのクラスの構成要素であるメソッドはそのコンポーネントを利用することが可能となる。図10に示すように、クラスの宣言である「.class public Lcom/app/sample/Example」が記述されている行よりも下の行に、コンポーネント毎に異なる宣言が記述される。具体的には、クラスがActivityを継承する場合には「.super L*andrd*/app/Activity;」と記述され、クラスがServiceを継承する場合には「.super L*andrd*/app/Service;」と記述され、クラスがBroadcastReceiverを継承する場合には「.super L*andrd*/content/ BroadcastReceiver;」と記述される。   FIG. 10 shows only a part of the source code in which a component inherited by the class is described. By describing a component that a class inherits, a method that is a component of the class can use the component. As shown in FIG. 10, different declarations are described for each component in a line below the line in which “.class public Lcom / app / sample / Example”, which is a class declaration, is described. Specifically, when a class inherits Activity, it is described as “.super L * andrd * / app / Activity;”, and when a class inherits Service, it is denoted as “.super L * andrd * / app / Service. ”And“ .super L * andrd * / content / BroadcastReceiver; ”when the class inherits BroadcastReceiver.

前の手順で特定したメソッドがonCreateであった場合、解析部12は、特定したonCreateが記述されているソースコード(例えば、図8のソースコード)から、 onCreateを構成要素とするクラスが継承するコンポーネントを特定する(ステップS1310)。より具体的には、ステップS1310において解析部12は、前の手順で特定したonCreateとクラス名が記述されているソースコードにおいて、「.super」の後に記述されている文字列からコンポーネントを特定する。   When the method specified in the previous procedure is onCreate, the analysis unit 12 inherits a class having onCreate as a component from the source code in which the specified onCreate is described (for example, the source code in FIG. 8). A component is specified (step S1310). More specifically, in step S1310, the analysis unit 12 specifies a component from a character string described after “.super” in the source code in which onCreate and the class name specified in the previous procedure are described. .

続いて、ステップS1310で特定されたコンポーネントに応じて処理が分岐する(ステップS1311)。ステップS1310で特定されたコンポーネントがServiceであった場合、解析部12は、onCreateを実行するメソッドとクラスを特定する(ステップS1307)。onCreate を構成要素とするクラスがServiceを継承している場合、onCreateは、他のメソッドからstartServiceというメソッド名で呼び出されて実行される。   Subsequently, the process branches according to the component specified in step S1310 (step S1311). When the component specified in step S1310 is Service, the analysis unit 12 specifies a method and class for executing onCreate (step S1307). When a class that has onCreate as a component inherits Service, onCreate is called and executed by another method with the method name startService.

ステップS1307において解析部12は以下の処理を行う。onCreateを実行するメソッドが記述されている部分(「.method」と「.end method」の間の部分)では、以下の3つの要件が満たされる。
第1の要件:「const-class」と、前の手順で特定したクラス名とが同一の行に記述されている。
第2の要件:第1の要件を満たす行よりも下の行に「startService(L*andrd*/content/Intent;)L*andrd*/content/ComponentName」が記述されている。
第3の要件:第1の要件を満たす行と、第2の要件を満たす行との間の行に「const-class」が記述されていない。
In step S1307, the analysis unit 12 performs the following processing. In the part where the method for executing onCreate is described (the part between “.method” and “.end method”), the following three requirements are satisfied.
First requirement: “const-class” and the class name specified in the previous procedure are described on the same line.
Second requirement: “startService (L * andrd * / content / Intent;) L * andrd * / content / ComponentName” is described in a line below the line that satisfies the first requirement.
Third requirement: “const-class” is not described in a row between a row satisfying the first requirement and a row satisfying the second requirement.

図11は、onCreateを実行するメソッドが記述されたソースコードの一例を示している。前の手順で特定されたクラス名がcom/app/sample/classである場合、図11に示すように、「const-class」と「com/app/sample/class」が同一の行に記述されている(第1の要件)。また、この行よりも下の行に「startService(L*andrd*/content/Intent;)L*andrd*/content/ComponentName」が記述されている(第2の要件)。さらに、「const-class」と「com/app/sample/class」が記述されている行と、「startService(L*andrd*/content/Intent;)L*andrd*/content/ComponentName」が記述されている行との間の行に「const-class」が記述されていない(第3の要件)。   FIG. 11 shows an example of source code in which a method for executing onCreate is described. If the class name specified in the previous step is com / app / sample / class, “const-class” and “com / app / sample / class” are described on the same line as shown in FIG. (First requirement). Further, “startService (L * andrd * / content / Intent;) L * andrd * / content / ComponentName” is described in a line below this line (second requirement). In addition, a line describing "const-class" and "com / app / sample / class" and "startService (L * andrd * / content / Intent;) L * andrd * / content / ComponentName" are described. "Const-class" is not described in a line between the current line (third requirement).

解析部12は、「.method」と「.end method」の間の部分で上記の3つの要件が満たされるか否かを判定する。上記の3つの要件が満たされる場合、解析部12はステップS1300と同様にして、onCreateを実行するメソッドとクラスを特定する。ステップS1307の処理が終了すると、ステップS1308の処理が行われる。   The analysis unit 12 determines whether or not the above three requirements are satisfied in a portion between “.method” and “.end method”. When the above three requirements are satisfied, the analysis unit 12 specifies the method and class for executing onCreate in the same manner as in step S1300. When the process of step S1307 ends, the process of step S1308 is performed.

一方、ステップS1310で特定されたコンポーネントがActivityであった場合、解析部12は、onCreateがランチャーから呼び出されて実行されるか否かの確認を行うため、マニフェストファイル(*andrd*Manifest.xml)を解析する(ステップS1312)。前述したように、マニフェストファイルは、アプリケーションが利用する機能や権限を定義しているファイルである。ランチャーとは、ユーザがアプリケーションを起動するため、スマートフォンの待ち受け画面に表示されるアイコンをクリックした際に最初に実行されるプログラムの箇所である。onCreateがランチャーから呼び出されて実行される場合、ユーザが待ち受け画面上のアイコンをクリックしたというイベントが発生したときに、onCreateが自動的に実行され、情報漏洩が発生する可能性がある。   On the other hand, if the component identified in step S1310 is Activity, the analysis unit 12 checks whether or not onCreate is called from the launcher and executed, so a manifest file (* andrd * Manifest.xml) Is analyzed (step S1312). As described above, the manifest file is a file that defines functions and privileges used by the application. The launcher is a part of a program that is executed first when the user clicks an icon displayed on the standby screen of the smartphone in order to start an application. When onCreate is called from the launcher and executed, when an event occurs in which the user clicks an icon on the standby screen, onCreate is automatically executed and information leakage may occur.

図12はマニフェストファイルの記述の一例を示している。図12に示すように、「<activity」で始まるタグの中に、クラス名である「com.app.sample.Example_Activity」が記述されている。また、「<activity」で始まるタグと、これと対になるタグである「</activity>」との間に、「<intent-filter>」と「</intent-filter>」のタグがある。また、「<intent-filter>」と「</intent-filter>」の間に、ランチャーに関する記述「<category *andrd*:name="*andrd*.intent.category.LAUNCHER" />」がある。   FIG. 12 shows an example of the description of the manifest file. As shown in FIG. 12, the class name “com.app.sample.Example_Activity” is described in the tag starting with “<activity”. In addition, there are tags <intent-filter> and </ intent-filter> between the tag that begins with <activity and the tag </ activity> that is paired with it. . Also, there is a description about the launcher "<category * andrd *: name =" * andrd * .intent.category.LAUNCHER "/>" between "<intent-filter>" and "</ intent-filter>" .

ステップS1312において解析部12は以下の処理を行う。解析部12は、マニフェストファイルにおいて、「<activity」で始まり「</activity>」で終わる記述の部分を抽出する。続いて、解析部12は、抽出した部分において、「<activity」と同一の行に、前の手順で特定したクラス名が記述されているか否かを判定する。「<activity」と同一の行に、前の手順で特定したクラス名が記述されている場合、解析部12は、抽出した部分に「<intent-filter>」と「</intent-filter>」が記述されているか否かを判定する。抽出した部分に「<intent-filter>」と「</intent-filter>」が記述されている場合、解析部12は、「<intent-filter>」と「</intent-filter>」の間に「<category *andrd*:name="*andrd*.intent.category.LAUNCHER" />」が記述されているか否かを判定する。   In step S1312, the analysis unit 12 performs the following processing. The analysis unit 12 extracts a description portion starting with “<activity” and ending with “</ activity>” in the manifest file. Subsequently, the analysis unit 12 determines whether or not the class name specified in the previous procedure is described in the same line as “<activity” in the extracted portion. When the class name specified in the previous step is described in the same line as “<activity”, the analysis unit 12 adds “<intent-filter>” and “</ intent-filter>” to the extracted part. Whether or not is described is determined. When “<intent-filter>” and “</ intent-filter>” are described in the extracted part, the analysis unit 12 determines between “<intent-filter>” and “</ intent-filter>”. It is determined whether or not “<category * andrd *: name =" * andrd * .intent.category.LAUNCHER "/>" is described.

ステップS1312に続いて、解析部12は、マニフェストファイルにランチャーが登録されているか否かを判定する(ステップS1313)。ステップS1312でマニフェストファイルの解析を行った結果、「<intent-filter>」と「</intent-filter>」の間に「<category *andrd*:name="*andrd*.intent.category.LAUNCHER" />」が記述されている場合、マニフェストファイルにランチャーが登録されている。この場合、スマートフォンの待ち受け画面に表示されるアイコンをユーザがクリックしたときに、onCreateが呼び出されて実行されるため、個人情報取得APIまたは外部送信APIが自動的に実行される。この場合、解析部12は、ステップS110でAPI抽出部11によって抽出されたAPIのメソッド名と、APIが自動的に実行されることを示す情報と、APIを実行するメソッドのメソッド名(onCreate)とを含む解析結果をアプリケーション判定部13へ出力する。   Subsequent to step S1312, the analysis unit 12 determines whether or not a launcher is registered in the manifest file (step S1313). As a result of analyzing the manifest file in step S1312, "<category * andrd *: name =" * andrd * .intent.category.LAUNCHER "is inserted between" <intent-filter> "and" </ intent-filter> ". When “/>” is described, the launcher is registered in the manifest file. In this case, when the user clicks an icon displayed on the standby screen of the smartphone, onCreate is called and executed, so the personal information acquisition API or external transmission API is automatically executed. In this case, the analysis unit 12 uses the API method name extracted by the API extraction unit 11 in step S110, information indicating that the API is automatically executed, and the method name (onCreate) of the method that executes the API. Are output to the application determination unit 13.

また、ステップS1312でマニフェストファイルの解析を行った結果、マニフェストファイルにランチャーが登録されていることを確認できなかった場合、解析部12は、onCreateを実行するメソッドとクラスを特定する(ステップS1307)。onCreate を構成要素とするクラスがActivityを継承している場合、onCreateは、他のメソッドからstartActivityというメソッド名で呼び出されて実行される。   Also, as a result of analyzing the manifest file in step S1312, if the launcher is not registered in the manifest file, the analysis unit 12 identifies a method and class for executing onCreate (step S1307). . When a class having onCreate as a component inherits Activity, onCreate is called and executed by another method with the method name startActivity.

ステップS1307において解析部12は以下の処理を行う。onCreateを実行するメソッドが記述されている部分(「.method」と「.end method」の間の部分)では、以下の3つの要件が満たされる。
第1の要件:「const-class」と、前の手順で特定したクラス名とが同一の行に記述されている。
第2の要件:第1の要件を満たす行よりも下の行に「startActivity(L*andrd*/content/Intent;)V」が記述されている。
第3の要件:第1の要件を満たす行と、第2の要件を満たす行との間の行に「const-class」が記述されていない。
In step S1307, the analysis unit 12 performs the following processing. In the part where the method for executing onCreate is described (the part between “.method” and “.end method”), the following three requirements are satisfied.
First requirement: “const-class” and the class name specified in the previous procedure are described on the same line.
Second requirement: “startActivity (L * andrd * / content / Intent;) V” is described in a row below the row satisfying the first requirement.
Third requirement: “const-class” is not described in a row between a row satisfying the first requirement and a row satisfying the second requirement.

図13は、onCreateを実行するメソッドが記述されたソースコードの一例を示している。前の手順で特定されたクラス名がcom/app/sample/classである場合、図13に示すように、「const-class」と「com/app/sample/class」が同一の行に記述されている(第1の要件)。また、この行よりも下の行に「startActivity(L*andrd*/content/Intent;)V」が記述されている(第2の要件)。さらに、「const-class」と「com/app/sample/class」が記述されている行と、「startActivity(L*andrd*/content/Intent;)V」が記述されている行との間の行に「const-class」が記述されていない(第3の要件)。   FIG. 13 shows an example of source code in which a method for executing onCreate is described. If the class name specified in the previous step is com / app / sample / class, “const-class” and “com / app / sample / class” are described on the same line as shown in FIG. (First requirement). Further, “startActivity (L * andrd * / content / Intent;) V” is described in a line below this line (second requirement). Furthermore, between the line where "const-class" and "com / app / sample / class" are described, and the line where "startActivity (L * andrd * / content / Intent;) V" is described “Const-class” is not described in the line (third requirement).

解析部12は、「.method」と「.end method」の間の部分で上記の3つの要件が満たされるか否かを判定する。上記の3つの要件が満たされる場合、解析部12はステップS1300と同様にして、onCreateを実行するメソッドとクラスを特定する。ステップS1307の処理が終了すると、ステップS1308の処理が行われる。   The analysis unit 12 determines whether or not the above three requirements are satisfied in a portion between “.method” and “.end method”. When the above three requirements are satisfied, the analysis unit 12 specifies the method and class for executing onCreate in the same manner as in step S1300. When the process of step S1307 ends, the process of step S1308 is performed.

一方、ステップS1310で特定されたコンポーネントがBroadcastReceiverであった場合、解析部12は、onCreateがBroadcastIntentによって呼び出されて実行されるか否かの確認を行うため、マニフェストファイル(*andrd*Manifest.xml)を解析する(ステップS1314)。BroadcastIntentによってメソッドを実行する方法には、OS標準で用意されているBroadcastIntentによってメソッドを実行する方法と、ユーザが作成したBroadcastIntentによってメソッドを実行する方法とがある。onCreateが、OS標準で用意されているBroadcastIntentによって実行される場合、アプリケーションの起動の有無にかかわらず、端末の状態変化によってBroadcastIntentが発行されるというイベントが発生したときに、onCreateが自動的に実行され、情報漏洩が発生する可能性がある。   On the other hand, when the component specified in step S1310 is BroadcastReceiver, the analysis unit 12 checks whether or not onCreate is called and executed by BroadcastIntent, and thus a manifest file (* andrd * Manifest.xml). Is analyzed (step S1314). There are two methods for executing a method by BroadcastIntent: a method for executing a method by BroadcastIntent provided by the OS standard, and a method for executing a method by BroadcastIntent created by a user. When onCreate is executed by BroadcastIntent provided by OS standard, onCreate is automatically executed when the event that BroadcastIntent is issued due to the state change of the terminal regardless of whether the application is activated or not. Information leakage may occur.

図14は、OSに標準で用意されているBroadcastIntent(以下、OS標準のBroadcastIntentと記載)の一例を示している。端末が起動したときに発行されるBOOT_COMPLETEDや、バッテリーの残量が変化したときに発行されるACTION_BATTERY_CHANGED等がある。   FIG. 14 shows an example of a BroadcastIntent (hereinafter referred to as OS standard BroadcastIntent) prepared as a standard in the OS. There are BOOT_COMPLETED issued when the terminal starts, ACTION_BATTERY_CHANGED issued when the remaining battery level changes.

図15はマニフェストファイルの記述の一例を示している。図15に示すように、「<receiver」で始まるタグの中に、クラス名である「jp.kddilabs.helloservice.BCreceiver」が記述されている。また、「<receiver」で始まるタグと、これと対になるタグである「</receiver>」との間に、「<intent-filter>」と「</intent-filter>」のタグがある。また、「<intent-filter>」と「</intent-filter>」の間に、BroadcastIntent名を含む記述「<action *andrd*:name="*andrd*.intent.action.BOOT_COMPLETED" />」がある。   FIG. 15 shows an example of the description of the manifest file. As shown in FIG. 15, the class name “jp.kddilabs.helloservice.BCreceiver” is described in the tag starting with “<receiver”. In addition, there are tags <intent-filter> and </ intent-filter> between the tag that starts with "<receiver" and the paired tag "</ receiver>" . In addition, the description "<action * andrd *: name =" * andrd * .intent.action.BOOT_COMPLETED "/>" that includes the BroadcastIntent name between "<intent-filter>" and "</ intent-filter>" There is.

ステップS1314において解析部12は以下の処理を行う。記憶部2には、OS標準のBroadcastIntentの名称が記録されたリストが格納されている。解析部12は、マニフェストファイルにおいて、「<receiver」で始まり「</receiver>」で終わる記述の部分を抽出する。続いて、解析部12は、抽出した部分において、「<receiver」と同一の行に、前の手順で特定したクラス名が記述されているか否かを判定する。「<receiver」と同一の行に、前の手順で特定したクラス名が記述されている場合、解析部12は、抽出した部分に「<intent-filter>」と「</intent-filter>」が記述されているか否かを判定する。抽出した部分に「<intent-filter>」と「</intent-filter>」が記述されている場合、解析部12は、記憶部2から上記のリストを読み出し、「<intent-filter>」と「</intent-filter>」の間に、リストに含まれるBroadcastIntent名が記述されているか否かを判定する。   In step S1314, the analysis unit 12 performs the following processing. The storage unit 2 stores a list in which the name of the OS standard BroadcastIntent is recorded. The analysis unit 12 extracts a description part starting with “<receiver” and ending with “</ receiver>” in the manifest file. Subsequently, the analysis unit 12 determines whether or not the class name specified in the previous procedure is described in the same line as “<receiver” in the extracted portion. When the class name specified in the previous step is described in the same line as “<receiver”, the analysis unit 12 adds “<intent-filter>” and “</ intent-filter>” to the extracted part. Whether or not is described is determined. When “<intent-filter>” and “</ intent-filter>” are described in the extracted part, the analysis unit 12 reads the above list from the storage unit 2 and reads “<intent-filter>” as It is determined whether or not a BroadcastIntent name included in the list is described between “</ intent-filter>”.

ステップS1314に続いて、解析部12は、マニフェストファイルにOS標準のBroadcastIntentが登録されているか否かを判定する(ステップS1315)。ステップS1314でマニフェストファイルの解析を行った結果、「<intent-filter>」と「</intent-filter>」の間に、リストに含まれるBroadcastIntent名が記述されている場合、マニフェストファイルにOS標準のBroadcastIntentが登録されている。この場合、端末で所定の状態変化が発生したときに、onCreateが呼び出されて実行されるため、個人情報取得APIまたは外部送信APIが自動的に実行される。この場合、解析部12は、ステップS110でAPI抽出部11によって抽出されたAPIのメソッド名と、APIが自動的に実行されることを示す情報と、APIを実行するメソッドのメソッド名(onCreate)とを含む解析結果をアプリケーション判定部13へ出力する。   Subsequent to step S1314, the analysis unit 12 determines whether or not the OS standard BroadcastIntent is registered in the manifest file (step S1315). As a result of analyzing the manifest file in step S1314, if the BroadcastIntent name included in the list is described between “<intent-filter>” and “</ intent-filter>”, the OS file is included in the manifest file. BroadcastIntent is registered. In this case, when a predetermined state change occurs in the terminal, since onCreate is called and executed, the personal information acquisition API or the external transmission API is automatically executed. In this case, the analysis unit 12 uses the API method name extracted by the API extraction unit 11 in step S110, information indicating that the API is automatically executed, and the method name (onCreate) of the method that executes the API. Are output to the application determination unit 13.

また、ステップS1314でマニフェストファイルの解析を行った結果、マニフェストファイルにOS標準のBroadcastIntentが登録されていることを確認できなかった場合、解析部12は、onCreateを実行するメソッドとクラスを特定する(ステップS1307)。onCreate を構成要素とするクラスがBroadcastReceiverを継承している場合、onCreateは、ユーザが作成したBroadcastIntentによって実行される。ユーザが作成したBroadcastIntent によってonCreate が実行される場合、APIの実行の起点となるイベントが不明であるため、さらに解析を行う必要がある。   Further, as a result of analyzing the manifest file in step S1314, if it is not confirmed that the OS standard BroadcastIntent is registered in the manifest file, the analyzing unit 12 specifies a method and a class for executing onCreate ( Step S1307). When a class having onCreate as a constituent element inherits BroadcastReceiver, onCreate is executed by the BroadcastIntent created by the user. When onCreate is executed by BroadcastIntent created by the user, the event that is the starting point of API execution is unknown, so further analysis is required.

図16は、ユーザが作成したBroadcastIntentによってonCreateを実行するメソッドが記述されたソースコードの一例を示している。ユーザが定義しているBroadcastIntentの名称がORIGINAL_BROADCASTである場合、図16に示すように、onCreateを実行するメソッドが記述されている部分(「.method」と「.end method」の間の部分)では、ユーザが定義したメソッド名である「ORIGINAL_BROADCAST」と、BroadcastIntentを発行するメソッドである「sendBroadcast」とが記述されている。   FIG. 16 shows an example of source code in which a method for executing onCreate is described by BroadcastIntent created by the user. When the name of BroadcastIntent defined by the user is ORIGINAL_BROADCAST, as shown in FIG. 16, in the part where the method for executing onCreate is described (the part between “.method” and “.end method”) In addition, “ORIGINAL_BROADCAST” which is a method name defined by the user and “sendBroadcast” which is a method for issuing a BroadcastIntent are described.

ステップS1307において解析部12は以下の処理を行う。記憶部2には、OS標準で用意されているBroadcastIntentの名称が記録されたリストが格納されている。解析部12は、マニフェストファイルにおいて、ステップS1314で解析を行った部分の「<intent-filter>」と「</intent-filter>」の間の部分から、上記のリストに含まれていないBroadcastIntent名を抽出する。   In step S1307, the analysis unit 12 performs the following processing. The storage unit 2 stores a list in which the name of BroadcastIntent prepared by the OS standard is recorded. In the manifest file, the analysis unit 12 determines the BroadcastIntent name not included in the above list from the portion between “<intent-filter>” and “</ intent-filter>” of the portion analyzed in step S1314. To extract.

続いて、解析部12は、ソースコードにおいて、「.method」と「.end method」の間の部分に、抽出したBroadcastIntent名と「sendBroadcast」が記述されているか否かを判定する。「.method」と「.end method」の間の部分に、抽出したBroadcastIntent名と「sendBroadcast」が記述されている場合、解析部12はステップS1300と同様にして、onCreateを実行するメソッドとクラスを特定する。ステップS1307の処理が終了すると、ステップS1308の処理が行われる。   Subsequently, the analysis unit 12 determines whether or not the extracted BroadcastIntent name and “sendBroadcast” are described in a portion between “.method” and “.end method” in the source code. When the extracted BroadcastIntent name and “sendBroadcast” are described in the portion between “.method” and “.end method”, the analysis unit 12 selects the method and class for executing onCreate in the same manner as in step S1300. Identify. When the process of step S1307 ends, the process of step S1308 is performed.

一方、ステップS1303において、前の手順で特定したメソッドがonCreateでなかった場合、解析部12は、前の手順で特定したメソッドがonStart,onRestart,onResume,onPause,onStop,onDestroy,onUnbind,onRebindのいずれかであるか否かを判定する(ステップS1304)。これらのメソッドは、アプリケーションのライフサイクルに関するメソッドである。   On the other hand, if the method identified in the previous procedure is not onCreate in step S1303, the analysis unit 12 determines that the method identified in the previous procedure is any of onStart, onRestart, onResume, onPause, onStop, onDestroy, onUnbind, onRebind. It is determined whether or not (step S1304). These methods are related to the life cycle of the application.

前の手順で特定したメソッドがonStart,onRestart,onResume,onPause,onStop,onDestroy,onUnbind,onRebindのいずれかである場合、アプリケーションのライフサイクルに関する状態変化というイベントが発生したときに、これらのメソッドが呼び出されて実行されるため、個人情報取得APIまたは外部送信APIが自動的に実行される。この場合、解析部12は、ステップS110でAPI抽出部11によって抽出されたAPIのメソッド名と、APIが自動的に実行されることを示す情報と、APIを実行するメソッドのメソッド名(onStart等)とを含む解析結果をアプリケーション判定部13へ出力する。   If the method identified in the previous step is one of onStart, onRestart, onResume, onPause, onStop, onDestroy, onUnbind, or onRebind, these methods are called when an event of a state change related to the application lifecycle occurs. Therefore, the personal information acquisition API or external transmission API is automatically executed. In this case, the analysis unit 12 uses the API method name extracted by the API extraction unit 11 in step S110, information indicating that the API is automatically executed, and the method name (onStart etc.) of the method executing the API. Are output to the application determination unit 13.

また、前の手順で特定したメソッドがonStart,onRestart,onResume,onPause,onStop,onDestroy,onUnbind,onRebindのどれでもなかった場合、解析部12は、前の手順で特定したメソッドがonClickであるか否かを判定する(ステップS1305)。onClickは、端末上のユーザインタフェースの画面に表示されるボタンをユーザが押した際に呼び出されて実行されるメソッドである。前の手順で特定したメソッドがonClickである場合、ユーザがボタンを押すというイベントが発生したときにAPIが実行される。この場合、解析部12は、ステップS110でAPI抽出部11によって抽出されたAPIのメソッド名と、APIが自動的に実行されないことを示す情報とを含む解析結果をアプリケーション判定部13へ出力する。   If the method identified in the previous procedure is not one of onStart, onRestart, onResume, onPause, onStop, onDestroy, onUnbind, or onRebind, the analysis unit 12 determines whether the method identified in the previous procedure is onClick. Is determined (step S1305). onClick is a method that is called and executed when the user presses a button displayed on the screen of the user interface on the terminal. If the method identified in the previous step is onClick, the API is executed when the event that the user presses the button occurs. In this case, the analysis unit 12 outputs an analysis result including the method name of the API extracted by the API extraction unit 11 in step S110 and information indicating that the API is not automatically executed to the application determination unit 13.

また、前の手順で特定したメソッドがonClickでなかった場合、解析部12は、前の手順で特定したメソッドがonItemClickであるか否かを判定する(ステップS1306)。onItemClickは、端末上の画面に表示されるリストの項目をユーザが選択した際に呼び出されて実行されるメソッドである。前の手順で特定したメソッドがonItemClickである場合、ユーザがリストの項目を選択するというイベントが発生したときにAPIが実行される。この場合、解析部12は、ステップS110でAPI抽出部11によって抽出されたAPIのメソッド名と、APIが自動的に実行されないことを示す情報とを含む解析結果をアプリケーション判定部13へ出力する。   If the method specified in the previous procedure is not onClick, the analysis unit 12 determines whether the method specified in the previous procedure is onItemClick (step S1306). onItemClick is a method that is called and executed when the user selects a list item displayed on the screen on the terminal. If the method identified in the previous step is onItemClick, the API is executed when an event occurs in which the user selects an item in the list. In this case, the analysis unit 12 outputs an analysis result including the method name of the API extracted by the API extraction unit 11 in step S110 and information indicating that the API is not automatically executed to the application determination unit 13.

また、前の手順で特定したメソッドがonItemClickでなかった場合、解析部12は、ステップS1300と同様にして、前の手順で特定したメソッドを実行するメソッドとクラスを特定する(ステップS1307)。続いて、解析部12は、前の手順で特定したメソッドを実行するメソッドが存在するか否かを判定する(ステップS1308)。   If the method specified in the previous procedure is not onItemClick, the analysis unit 12 specifies the method and class for executing the method specified in the previous procedure in the same manner as in step S1300 (step S1307). Subsequently, the analysis unit 12 determines whether there is a method for executing the method specified in the previous procedure (step S1308).

ステップS1307において、前の手順で特定したメソッドを実行するメソッドとクラスを特定できなかった場合、APIが呼び出されて実行されることはないため、解析部12は、ステップS110でAPI抽出部11によって抽出されたAPIのメソッド名と、APIが自動的に実行されないことを示す情報とを含む解析結果をアプリケーション判定部13へ出力する。また、ステップS1307において、前の手順で特定したメソッドを実行するメソッドとクラスを特定できた場合、処理はステップS1301に進む。図6および図7に示す手順に従って解析を行うことにより、アプリケーションが起動している状態でユーザが端末上で行う操作に起因せずにAPIが自動的に実行されるのか否かを判別することができる。   In step S1307, if the method and class for executing the method specified in the previous procedure cannot be specified, the API is not called and executed, so the analysis unit 12 performs the analysis by the API extraction unit 11 in step S110. An analysis result including the extracted API method name and information indicating that the API is not automatically executed is output to the application determination unit 13. If the method and class for executing the method specified in the previous procedure can be specified in step S1307, the process proceeds to step S1301. By analyzing according to the procedure shown in FIG. 6 and FIG. 7, it is determined whether or not the API is automatically executed without causing an operation performed by the user on the terminal while the application is running. Can do.

次に、ステップS140におけるアプリケーションの良性/悪性の判定方法を説明する。前述したように、解析部12は解析結果をアプリケーション判定部13へ出力する。解析部12は、ステップS110でAPI抽出部11によって抽出されたAPI毎に解析を行うので、API毎の解析結果がアプリケーション判定部13へ出力される。   Next, the benign / malignant determination method of the application in step S140 will be described. As described above, the analysis unit 12 outputs the analysis result to the application determination unit 13. Since the analysis unit 12 performs analysis for each API extracted by the API extraction unit 11 in step S110, the analysis result for each API is output to the application determination unit 13.

ステップS110において、個人情報取得APIと外部送信APIのうちの少なくとも一方が抽出されなかった場合、アプリケーション判定部13は、解析対象のアプリケーションが良性であると判定する。また、ステップS130における解析が行われて解析部12から解析結果が出力された場合、アプリケーション判定部13は解析結果に基づいて以下のようにアプリケーションの良性/悪性を判定する。   In step S110, when at least one of the personal information acquisition API and the external transmission API is not extracted, the application determination unit 13 determines that the analysis target application is benign. When the analysis in step S130 is performed and the analysis result is output from the analysis unit 12, the application determination unit 13 determines whether the application is benign / malignant based on the analysis result as follows.

個人情報取得APIと外部送信APIのうちの少なくとも一方について、APIが自動的に実行されないことを示す情報を含む解析結果が出力された場合、個人情報取得APIと外部送信APIのうちの少なくとも一方は実行されない、あるいは個人情報取得APIと外部送信APIのうちの少なくとも一方はアプリケーション起動後のユーザの操作によって実行されるので情報漏洩の危険度は低いと推定できる。この場合、アプリケーション判定部13は、解析対象のアプリケーションが良性であると判定する。   When an analysis result including information indicating that the API is not automatically executed is output for at least one of the personal information acquisition API and the external transmission API, at least one of the personal information acquisition API and the external transmission API is It can be estimated that the risk of information leakage is low because it is not executed or at least one of the personal information acquisition API and the external transmission API is executed by a user operation after starting the application. In this case, the application determination unit 13 determines that the application to be analyzed is benign.

また、個人情報取得APIと外部送信APIの両方について、APIが自動的に実行されることを示す情報を含む解析結果が出力された場合、アプリケーション判定部13は、個人情報取得APIを実行するメソッドのメソッド名と、外部送信APIを実行するメソッドのメソッド名とが一致するか否かを確認する。両者が一致しなかった場合、個人情報取得APIと外部送信APIは自動的に実行されるが、両者の実行の起点となるメソッドは異なり、両者の実行の関連性は低いので、情報漏洩の危険度は低いと推定できる。この場合、アプリケーション判定部13は、解析対象のアプリケーションが良性であると判定する。   When an analysis result including information indicating that the API is automatically executed is output for both the personal information acquisition API and the external transmission API, the application determination unit 13 executes a method for executing the personal information acquisition API. Confirm whether the method name of and the method name of the method that executes the external transmission API match. If they do not match, the personal information acquisition API and the external transmission API are automatically executed, but the methods that are the starting points of the execution are different and the relevance of both executions is low, so there is a risk of information leakage It can be estimated that the degree is low. In this case, the application determination unit 13 determines that the application to be analyzed is benign.

これに対して、両者が一致した場合、同一のメソッドを起点として個人情報取得APIと外部送信APIが自動的に実行されるので、情報漏洩の危険度が高いと推定できる。この場合、アプリケーション判定部13は、解析対象のアプリケーションが悪性であると判定する。つまり、個人情報取得APIと外部送信APIが同一のメソッドによって自動的に実行される場合に解析対象のアプリケーションが悪性であると判定され、それ以外の場合には解析対象のアプリケーションが良性であると判定される。   On the other hand, if the two match, the personal information acquisition API and the external transmission API are automatically executed starting from the same method, so it can be estimated that the risk of information leakage is high. In this case, the application determination unit 13 determines that the analysis target application is malignant. In other words, when the personal information acquisition API and external transmission API are automatically executed by the same method, the analysis target application is determined to be malignant, and in other cases, the analysis target application is benign. Determined.

上述したように、本実施形態によれば、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて情報の取得と送信を自動的に実行する悪性アプリケーションを検知することができる。このため、ユーザが情報の利用を承諾するために端末上で行う操作に起因するイベントの発生に基づいて情報の取得と送信を実行するアプリケーションを悪性アプリケーションとは区別することが可能となるので、悪性アプリケーションの誤検知を低減することができる。   As described above, according to the present embodiment, a malicious application that automatically executes information acquisition and transmission based on the occurrence of an event that is not caused by an operation performed by the user on the terminal while the application is running. Can be detected. For this reason, it becomes possible to distinguish an application that performs acquisition and transmission of information based on the occurrence of an event caused by an operation performed on the terminal in order for the user to consent to use of information from a malignant application. False detection of malicious applications can be reduced.

また、ソースコードの解析において、APIを実行するメソッドを特定しても、特定したメソッドのメソッド名(onBind等)だけからはAPIの実行の起点となるイベントを判別することができない場合に、APIを実行するメソッドを実行する他のメソッドを特定することによって、APIの実行の起点となるイベントを判別できる可能性が高まる。このため、悪性アプリケーションの検知漏れを低減することができる。   Also, in the analysis of the source code, even if the method that executes the API is specified, the event that is the starting point of the API execution cannot be determined only from the method name (such as onBind) of the specified method. By specifying another method that executes a method that executes, the possibility of determining the event that is the starting point of API execution increases. For this reason, omission of detection of a malicious application can be reduced.

また、onBind等の所定のメソッドに関しては、他のメソッドが所定のメソッドを指定するときのメソッド名と所定のメソッドのメソッド名とが異なるが、このようにメソッド名が異なる場合があることを考慮して、APIを実行する他のメソッドを特定することによって、APIの実行の起点となるイベントを判別できる可能性が高まる。このため、悪性アプリケーションの検知漏れを低減することができる。   In addition, for a given method such as onBind, the method name when another method specifies a given method is different from the method name of the given method, but it is possible that the method name may be different. Thus, by specifying other methods for executing the API, the possibility of determining the event that is the starting point for executing the API increases. For this reason, omission of detection of a malicious application can be reduced.

また、onCreateに関しては、マニフェストファイルに基づいて、onCreateが、スマートフォンの待ち受け画面に表示されるアイコンがクリックされた際に最初に実行されるランチャーから呼び出されて実行されるか否か、あるいは端末の状態変化に基づいてOS標準のBroadcastIntentによって呼び出されて実行されるか否かを確認することによって、APIが自動的に実行されるか否かを確認することができる。   In addition, regarding onCreate, onCreate is called from the launcher that is executed first when the icon displayed on the standby screen of the smartphone is clicked based on the manifest file, Whether or not the API is automatically executed can be confirmed by checking whether or not it is called and executed by the OS standard BroadcastIntent based on the state change.

また、特定したメソッドが、アプリケーションの状態遷移に関係する所定のメソッド(onStart等)であるか否かを判定することによって、APIが自動的に実行されるか否かを確認することができる。   Further, by determining whether or not the specified method is a predetermined method (such as onStart) related to the state transition of the application, it can be confirmed whether or not the API is automatically executed.

上述したアプリケーション解析装置は、その動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。   The application analysis apparatus described above is realized by recording a program for realizing the operation and function in a computer-readable recording medium, causing the computer to read and execute the program recorded in the recording medium. The Here, the “computer” includes a homepage providing environment (or display environment) if the WWW system is used. The “computer-readable recording medium” refers to a storage device such as a portable medium such as a flexible disk, a magneto-optical disk, a ROM, and a CD-ROM, and a hard disk built in the computer. Further, the “computer-readable recording medium” refers to a volatile memory (RAM) in a computer system that becomes a server or a client when a program is transmitted via a network such as the Internet or a communication line such as a telephone line. In addition, those holding programs for a certain period of time are also included.

また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。   The program described above may be transmitted from a computer storing the program in a storage device or the like to another computer via a transmission medium or by a transmission wave in the transmission medium. Here, the “transmission medium” for transmitting a program refers to 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 be for realizing a part of the above-described function. Furthermore, what can implement | achieve the function mentioned above in combination with the program already recorded on the computer, what is called a difference file (difference program) may be sufficient.

以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。   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・・・アプリケーション解析部、2・・・記憶部、10・・・ディスアセンブル部、11・・・API抽出部、12・・・解析部、13・・・アプリケーション判定部、14・・・制御部   DESCRIPTION OF SYMBOLS 1 ... Application analysis part, 2 ... Memory | storage part, 10 ... Disassemble part, 11 ... API extraction part, 12 ... Analysis part, 13 ... Application determination part, 14 ... Control unit

Claims (9)

解析対象のアプリケーションの実行コードをディスアセンブルし、前記実行コードに対応するソースコードを得るディスアセンブル部と、
端末内の情報を取得する第1のAPI(Application Program Interface)および情報を外部の機器へ送信する第2のAPIを前記ソースコードから抽出する抽出部と、
前記ソースコードを解析し、前記抽出部によって抽出されたAPIを実行するメソッドを特定し、特定したメソッドが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されるか否かを判定する解析部と、
前記第1のAPIおよび前記第2のAPIが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されると判定された場合に、前記解析対象のアプリケーションが悪性であると判定する判定部と、
を備えたことを特徴とするアプリケーション解析装置。
A disassemble unit that disassembles the execution code of the application to be analyzed and obtains a source code corresponding to the execution code;
An extraction unit for extracting, from the source code, a first API (Application Program Interface) for acquiring information in the terminal and a second API for transmitting information to an external device;
Analyze the source code, identify the method that executes the API extracted by the extraction unit, and the identified method will generate an event that does not result from an operation that the user performs on the terminal while the application is running An analysis unit for determining whether to be executed based on,
When it is determined that the first API and the second API are executed based on the occurrence of an event not caused by an operation performed by the user on the terminal while the application is running, the analysis target A determination unit that determines that the application is malicious;
An application analysis apparatus characterized by comprising:
前記解析部は、前記ソースコードを解析し、前記抽出部によって抽出されたAPIを実行するメソッドを特定し、さらに、特定したメソッドを実行する他のメソッドを特定し、特定した他のメソッドが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されるか否かを判定することを特徴とする請求項1に記載のアプリケーション解析装置。   The analysis unit analyzes the source code, identifies a method for executing the API extracted by the extraction unit, further identifies another method for executing the identified method, and the identified other method is: The application analysis apparatus according to claim 1, wherein the application analysis apparatus determines whether or not the process is executed based on an occurrence of an event not caused by an operation performed on the terminal by the user while the application is activated. メソッドが所定のメソッドを指定するときのメソッド名と前記所定のメソッドのメソッド名とが異なるソースコードから生成されたアプリケーションが解析対象である場合に、前記解析部は、特定したメソッドが前記所定のメソッドであれば、前記所定のメソッドを指定するときのメソッド名に基づいて前記他のメソッドを特定することを特徴とする請求項2に記載のアプリケーション解析装置。   When an application generated from a source code in which a method name for specifying a predetermined method and a method name of the predetermined method are different from each other is an analysis target, the analysis unit determines that the specified method is the predetermined method. 3. The application analysis apparatus according to claim 2, wherein if the method is a method, the other method is specified based on a method name when the predetermined method is designated. 前記解析部は、アプリケーションが利用する機能や権限を規定したマニフェストファイルに基づいて、特定したメソッドが、アプリケーションの起動している状態でユーザが端末上で行う操作に起因しないイベントの発生に基づいて実行されるか否かを判定することを特徴とする請求項1〜請求項3のいずれか一項に記載のアプリケーション解析装置。   The analysis unit is based on the occurrence of an event that is not caused by an operation performed on the terminal by the user while the application is activated based on a manifest file that defines functions and privileges used by the application. It is determined whether it is performed, The application analysis apparatus as described in any one of Claims 1-3 characterized by the above-mentioned. 前記解析部は、特定したメソッドが、アプリケーションを起動するためにユーザが端末上で操作を行ったときに実行されるか否かを判定することを特徴とする請求項4に記載のアプリケーション解析装置。   The application analysis apparatus according to claim 4, wherein the analysis unit determines whether or not the specified method is executed when a user performs an operation on the terminal to activate the application. . 前記解析部は、特定したメソッドが、端末の状態変化に基づいてブロードキャストされるインテントが発生したときに実行されるか否かを判定することを特徴とする請求項4に記載のアプリケーション解析装置。   5. The application analysis apparatus according to claim 4, wherein the analysis unit determines whether or not the specified method is executed when an intent to be broadcast is generated based on a state change of the terminal. . 前記解析部は、特定したメソッドが、アプリケーションの状態遷移に関係するメソッドであるか否かを判定することを特徴とする請求項1に記載のアプリケーション解析装置。   The application analysis apparatus according to claim 1, wherein the analysis unit determines whether the identified method is a method related to an application state transition. 前記解析部は、特定した他のメソッドが、アプリケーションの状態遷移に関係するメソッドであるか否かを判定することを特徴とする請求項2に記載のアプリケーション解析装置。   The application analysis apparatus according to claim 2, wherein the analysis unit determines whether the specified other method is a method related to application state transition. 請求項1に記載のアプリケーション解析装置としてコンピュータを機能させるためのプログラム。   A program for causing a computer to function as the application analysis apparatus according to claim 1.
JP2011203010A 2011-09-16 2011-09-16 Application analysis apparatus and program Active JP5690689B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011203010A JP5690689B2 (en) 2011-09-16 2011-09-16 Application analysis apparatus and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011203010A JP5690689B2 (en) 2011-09-16 2011-09-16 Application analysis apparatus and program

Publications (2)

Publication Number Publication Date
JP2013065168A true JP2013065168A (en) 2013-04-11
JP5690689B2 JP5690689B2 (en) 2015-03-25

Family

ID=48188608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011203010A Active JP5690689B2 (en) 2011-09-16 2011-09-16 Application analysis apparatus and program

Country Status (1)

Country Link
JP (1) JP5690689B2 (en)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5536944B1 (en) * 2013-10-06 2014-07-02 春佳 西守 Computer program
KR101480244B1 (en) * 2013-08-23 2015-01-12 한양대학교 산학협력단 Method for detecting malicious application using signature on class basis and device enabling the method
CN104601768A (en) * 2014-12-22 2015-05-06 上海斐讯数据通信技术有限公司 Android mobile phone automatic testing system and testing method thereof
JP2015103225A (en) * 2013-11-28 2015-06-04 富士通株式会社 Determination program, determination unit and determination method
KR101541970B1 (en) * 2013-12-13 2015-08-05 경북대학교 산학협력단 Test scenario generating device, allication testing system comprising the same, test scenario generating method, and recordable meduim thereof
JP2016206739A (en) * 2015-04-16 2016-12-08 Kddi株式会社 Application analysis device, application analysis method, and program
JP2017207882A (en) * 2016-05-18 2017-11-24 Nttテクノクロス株式会社 Analyzer and program
JP2019220132A (en) * 2018-06-18 2019-12-26 エーオー カスペルスキー ラボAO Kaspersky Lab System and method of adapting patterns of dangerous behavior of programs to computer systems of users
JP2020091814A (en) * 2018-12-07 2020-06-11 Kddi株式会社 Privacy policy verification device, computer program and privacy policy verification method
WO2020115853A1 (en) * 2018-12-06 2020-06-11 三菱電機株式会社 Information processing device, information processing method, and information processing program
JPWO2021038704A1 (en) * 2019-08-27 2021-03-04
WO2021038705A1 (en) * 2019-08-27 2021-03-04 日本電気株式会社 Backdoor inspection device, backdoor inspection method, and non-transitory computer-readable medium
JP2021516379A (en) * 2018-01-04 2021-07-01 ライン プラス コーポレーションLINE Plus Corporation License verification device

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103473509A (en) * 2013-09-30 2013-12-25 清华大学 Android platform malware automatic detecting method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038486A (en) * 2002-07-02 2004-02-05 Matsushita Electric Ind Co Ltd Device for permitting publication, device for demanding publication, distribution device, and device and method for executing application
JP2007280013A (en) * 2006-04-06 2007-10-25 Internatl Business Mach Corp <Ibm> Method and program for controlling communication by information processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038486A (en) * 2002-07-02 2004-02-05 Matsushita Electric Ind Co Ltd Device for permitting publication, device for demanding publication, distribution device, and device and method for executing application
JP2007280013A (en) * 2006-04-06 2007-10-25 Internatl Business Mach Corp <Ibm> Method and program for controlling communication by information processor
US20070275694A1 (en) * 2006-04-06 2007-11-29 International Business Machines Corporation Controlling Communications Performed by an Information Processing Apparatus

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101480244B1 (en) * 2013-08-23 2015-01-12 한양대학교 산학협력단 Method for detecting malicious application using signature on class basis and device enabling the method
JP2014219955A (en) * 2013-10-06 2014-11-20 春佳 西守 Computer program
JP5536944B1 (en) * 2013-10-06 2014-07-02 春佳 西守 Computer program
JP2015103225A (en) * 2013-11-28 2015-06-04 富士通株式会社 Determination program, determination unit and determination method
KR101541970B1 (en) * 2013-12-13 2015-08-05 경북대학교 산학협력단 Test scenario generating device, allication testing system comprising the same, test scenario generating method, and recordable meduim thereof
CN104601768A (en) * 2014-12-22 2015-05-06 上海斐讯数据通信技术有限公司 Android mobile phone automatic testing system and testing method thereof
JP2016206739A (en) * 2015-04-16 2016-12-08 Kddi株式会社 Application analysis device, application analysis method, and program
JP2017207882A (en) * 2016-05-18 2017-11-24 Nttテクノクロス株式会社 Analyzer and program
JP2021516379A (en) * 2018-01-04 2021-07-01 ライン プラス コーポレーションLINE Plus Corporation License verification device
JP7119096B2 (en) 2018-01-04 2022-08-16 ライン プラス コーポレーション license verification device
JP2019220132A (en) * 2018-06-18 2019-12-26 エーオー カスペルスキー ラボAO Kaspersky Lab System and method of adapting patterns of dangerous behavior of programs to computer systems of users
WO2020115853A1 (en) * 2018-12-06 2020-06-11 三菱電機株式会社 Information processing device, information processing method, and information processing program
JP7062581B2 (en) 2018-12-07 2022-05-06 Kddi株式会社 Privacy policy verification device, computer program and privacy policy verification method
JP2020091814A (en) * 2018-12-07 2020-06-11 Kddi株式会社 Privacy policy verification device, computer program and privacy policy verification method
JPWO2021038704A1 (en) * 2019-08-27 2021-03-04
WO2021038705A1 (en) * 2019-08-27 2021-03-04 日本電気株式会社 Backdoor inspection device, backdoor inspection method, and non-transitory computer-readable medium
JPWO2021038705A1 (en) * 2019-08-27 2021-03-04
WO2021038704A1 (en) * 2019-08-27 2021-03-04 日本電気株式会社 Backdoor test device, backdoor test method, and non-transitory computer-readable medium
US20220284109A1 (en) * 2019-08-27 2022-09-08 Nec Corporation Backdoor inspection apparatus, backdoor inspection method, and non-transitory computer readable medium

Also Published As

Publication number Publication date
JP5690689B2 (en) 2015-03-25

Similar Documents

Publication Publication Date Title
JP5690689B2 (en) Application analysis apparatus and program
Sun et al. Monet: a user-oriented behavior-based malware variants detection system for android
Spreitzenbarth et al. Mobile-Sandbox: combining static and dynamic analysis with machine-learning techniques
US11620383B2 (en) Dynamic analysis techniques for applications
US11604878B2 (en) Dynamic analysis techniques for applications
Spreitzenbarth et al. Mobile-sandbox: having a deeper look into android applications
JP5723760B2 (en) Application analysis apparatus, application analysis system, and program
Gianazza et al. Puppetdroid: A user-centric ui exerciser for automatic dynamic analysis of similar android applications
JP5654944B2 (en) Application analysis apparatus and program
Faruki et al. Droidanalyst: Synergic app framework for static and dynamic app analysis
JP5478390B2 (en) Log extraction system and program
Alfalqi et al. Android platform malware analysis
JP2012008732A (en) Installation control device and program
Liu et al. No privacy among spies: Assessing the functionality and insecurity of consumer android spyware apps
KR101431192B1 (en) Method for Rooting Attack Events Detection on Mobile Device
Vella et al. Volatile memory-centric investigation of SMS-hijacked phones: a Pushbullet case study
Cao et al. Rotten apples spoil the bunch: An anatomy of Google Play malware
Nguyen et al. Exploitation and detection of a malicious mobile application
Hasan et al. Enhancing monkey to trigger malicious payloads in android malware
Short et al. Android smartphone third party advertising library data leak analysis
JP5667957B2 (en) Malware detection device and program
Demissie et al. Security testing of second order permission re-delegation vulnerabilities in android apps
JP5941745B2 (en) Application analysis apparatus, application analysis system, and program
JP5478381B2 (en) Application determination system and program
Liang et al. An effective online scheme for detecting Android malware

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150108

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: 20150127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150202

R150 Certificate of patent or registration of utility model

Ref document number: 5690689

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150