IP Library Granted Patent US 10,929,532
Granted Patent B1
US 10,929,532 · App. 16/125,593 · Granted Feb 23, 2021

Detecting malware in mobile applications via static analysis

Inventor: Simone Margaritelli (Monterotondo, IT)
Assignee: Zimperium, Inc.
G06F21/562G06N20/00G06F2221/033
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,929,532
App. No.
16/125,593
Granted
Feb 23, 2021
Kind
B1
Abstract

A trained classifier is received from a server. Static analysis is performed on a mobile application to generate a vector storing values representing the number of times the mobile application calls functions from each of multiple namespaces, and an indication of the permissions the mobile application requests. The received trained classifier is then applied to the generated vector to identify whether the mobile application contains malware. Based on the output of the trained classifier, a security policy is applied.

Claims (82)

1. A computer-implemented method for detecting malware, comprising:

receiving a training set including a plurality of mobile applications containing malware and a plurality of mobile applications not containing malware;

performing static analysis on the plurality of mobile applications included in the training set, the static analysis comprising generating a vector for a mobile application of the plurality of mobile applications by:

for each namespace of a plurality of namespaces, identifying, during static analysis, a number of times the mobile application calls a function from the namespace,

identifying, during static analysis, a set of permissions the mobile application requests, and

generating, during static analysis, a vector storing values representing the number of times the mobile application calls a function from each of the namespaces, and an indication of the permissions the mobile application requests;

training a classifier for detecting malware using the generated vector; and

providing the trained classifier to a client device, wherein the client device is adapted to apply the trained classifier to a vector for a candidate mobile application to determine whether the candidate application contains malware.

2. The computer-implemented method of claim 1 , wherein generating the vector storing values representing the number of times the mobile application calls a function from each of the namespaces, and an indication of the permissions the mobile application requests comprises:

representing a first subset of vector elements as values indicative of the numbers of times the mobile application calls functions from specific namespaces; and

representing a second subset of vector elements as values indicative of whether specific permissions are requested by the mobile application.

3. The computer-implemented method of claim 1 , wherein generating a vector for the mobile application further comprises:

decompiling the mobile application;

generating an execution graph of the decompiled mobile application, the execution graph including nodes representing function calls performed by the mobile application; and

traversing the generated execution graph to determine numbers of times functions from the namespaces are called by the mobile application.

4. The computer-implemented method of claim 3 , wherein traversing the generated execution graph comprises:

identifying one or more entry points to the mobile application;

identifying a function call from an entry point of the application;

determining that a function of the identified function call is associated with a first namespace; and

responsive to determining that the function of the identified function call is associated with the first namespace, increasing a first counter of a plurality of counters, the first counter associated with the first namespace.

5. The computer-implemented method of claim 3 , wherein identifying a set of permissions the mobile application requests comprises:

identifying a function call from the execution graph of the mobile application, the function call for requesting a first permission to use a function of a mobile device; and

storing a value to a vector element the vector associated with the first permission.

6. The computer-implemented method of claim 1 , wherein identifying a set of permissions the mobile application requests comprises:

analyzing a manifest file for the mobile application to identify a set of permissions listed in the manifest file as permissions to be requested by the mobile application.

7. The computer-implemented method of claim 1 , wherein generating a vector for the mobile application further comprises:

determining whether particular ones of a plurality of character strings are found within the mobile application;

wherein generating the vector comprises storing values indicating which particular ones of the plurality of character strings are found within the mobile application.

8. A non-transitory computer readable storage medium storing executable computer program code for detecting malware, the instruction when executed by a processor causing the processor to perform operations comprising:

receiving a training set including a plurality of mobile applications containing malware and a plurality of mobile applications not containing malware;

performing static analysis on the plurality of mobile applications included in the training set, the static analysis comprising generating a vector for a mobile application of the plurality of mobile applications by:

for each namespace of a plurality of namespaces, identifying, during static analysis, a number of times the mobile application calls a function from the namespace,

identifying, during static analysis, a set of permissions the mobile application requests, and

generating, during static analysis, a vector storing values representing the number of times the mobile application calls a function from each of the namespaces, and an indication of the permissions the mobile application requests;

training a classifier for detecting malware using the generated vector; and

providing the trained classifier to a client device, wherein the client device is adapted to apply the trained classifier to a vector for a candidate mobile application to determine whether the candidate application contains malware.

9. The non-transitory computer readable storage medium of claim 8 , wherein generating the vector storing values representing the number of times the mobile application calls a function from each of the namespaces, and an indication of the permissions the mobile application requests comprises:

representing a first subset of vector elements as values indicative of the numbers of times the mobile application calls functions from specific namespaces; and

representing a second subset of vector elements as values indicative of whether specific permissions are requested by the mobile application.

10. The non-transitory computer readable storage medium of claim 8 , wherein generating a vector for the mobile application further comprises:

decompiling the mobile application;

generating an execution graph of the decompiled mobile application, the execution graph including nodes representing function calls performed by the mobile application; and

traversing the generated execution graph to determine numbers of times functions from the namespaces are called by the mobile application.

11. The non-transitory computer readable storage medium of claim 10 , wherein traversing the generated execution graph comprises:

identifying one or more entry points to the mobile application;

identifying a function call from an entry point of the application;

determining that a function of the identified function call is associated with a first namespace; and

responsive to determining that the function of the identified function call is associated with the first namespace, increasing a first counter of a plurality of counters, the first counter associated with the first namespace.

12. The non-transitory computer readable storage medium of claim 10 , wherein identifying a set of permissions the mobile application requests comprises:

identifying a function call from the execution graph of the mobile application, the function call for requesting a first permission to use a function of a mobile device; and

storing a value to a vector element of the vector associated with the first permission.

13. A computer-implemented method for determining whether a mobile application contains malware, comprising:

receiving a trained classifier for detecting malware;

performing static analysis of the mobile application, the static analysis comprising generating a vector by:

for each namespace of a plurality of namespaces, identifying, during static analysis, a number of times the mobile application calls a function from the namespace,

identifying, during static analysis, a set of permissions the mobile application requests, and

generating, during static analysis, a vector storing values representing the number of times the mobile application calls a function from each of the namespaces, and an indication of the set of permissions the mobile application requests;

applying the received trained classifier to the generated vector; and

applying a security policy to the mobile application based on an output of the trained classifier applied to the generated vector.

14. The computer-implemented method of claim 13 , wherein generating the vector storing values representing the number of times the mobile application calls a function from each of the namespaces, and an indication of the set of permissions the mobile application requests comprises:

representing a first subset of vector elements as values indicative of the numbers of times the mobile application calls functions from specific namespaces; and

representing a second subset of vector elements as values indicative of whether specific permissions are requested by the mobile application.

15. The computer-implemented method of claim 13 , wherein generating the vector for the mobile application further comprises:

decompiling the mobile application;

generating an execution graph of the decompiled mobile application, the execution graph including nodes representing function calls performed by the mobile application; and

traversing the generated execution graph to determine numbers of times functions from the namespaces are called by the mobile application.

16. The computer-implemented method of claim 15 , wherein traversing the generated execution graph comprises:

identifying one or more entry points to the mobile application;

identifying a function call from an entry point of the application;

determining that a function of the identified function call is associated with a first namespace; and

responsive to determining that the function of the identified function call is associated with the first namespace, increasing a first counter of a plurality of counters, the first counter associated with the first namespace.

17. The computer-implemented method of claim 15 , wherein identifying a set of permissions the mobile application requests comprises:

identifying a function call from the execution graph of the mobile application, the function call for requesting a first permission to use a function of a mobile device; and

storing a value to a vector element of a second subset of vector elements associated with the first permission, the second subset of vector elements including values indicative of whether specific permissions are requested by the mobile application.

18. The computer-implemented method of claim 13 , wherein generating a vector for the mobile application further comprises:

determining whether particular ones of a plurality of character strings are found within the mobile application;

wherein generating the vector comprises storing values indicating which particular ones of the plurality of character strings are found within the mobile application.

19. The computer-implemented method of claim 13 , wherein the trained classifier is trained by:

generating vectors for each mobile application of a plurality of mobile applications included in a training set by performing static analysis on the mobile applications in the training set to generate vectors storing values representing the numbers of times the mobile applications call function from the namespaces, and storing indications of the sets of permissions the mobile applications request; and

training the classifier using the generated vectors.

20. The computer-implemented method of claim 13 , wherein applying the security policy comprises:

applying a security policy restricting activity of the mobile application responsive to the output of the trained classifier indicating that the application contains malware.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Jul 21, 2026
From: ALLY BANK, IN ITS CAPACITY AS ADMINISTRATIVE AGENT
To: ZIMPERIUM, INC.
Reel/Frame 075345/0788 →
SECURITY INTEREST Recorded Jun 4, 2026
From: ZIMPERIUM, INC.; WHITECRYPTION CORPORATION
To: HERCULES CAPITAL, INC.
Reel/Frame 074849/0518 →
SECURITY INTEREST Recorded Jul 13, 2021
From: ZIMPERIUM, INC.; WHITECRYPTION CORPORATION
To: ALLY BANK
Reel/Frame 056841/0589 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2018
From: MARGARITELLI, SIMONE
To: ZIMPERIUM, INC.
Reel/Frame 047204/0452 →
Cited By (3)
US 12,265,615 US 12,488,103 US 12,608,482