IP Library Patent Application 13843775
Patent Application
App. No. 13/843,775

PATCHLESS UPDATE MANAGEMENT ON MOBILE DEVICES

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 None
App. No.
13/843,775
Abstract

Technologies for mobile device software update management are disclosed. A described technique includes obtaining update information to modify a target function; identifying, from among a plurality of executing processes, a process that is operable to execute the target function, wherein the target function resides within a memory area associated with the identified process; suspending the identified process; determining, within the memory area, a memory address of the target function based on the obtained update information; modifying the target function in the memory area based on the memory address and the obtained update information to produce a modified function; and resuming the modified process.

Claims (74)

1 . A method performed by a mobile device, the method comprising:

obtaining update information to modify a target function;

identifying, from among a plurality of executing processes, a process that is operable to execute the target function, wherein the target function resides within a memory area associated with the identified process;

suspending the identified process;

determining, within the memory area, a memory address of the target function based on the obtained update information;

modifying the target function in the memory area based on the memory address and the obtained update information to produce a modified function; and

resuming the modified process.

2 . The method of claim 1 , comprising:

allocating memory to store a patched version of the target function, wherein modifying the target function comprises overwriting an original instruction with an instruction to change control flow to the patched version of the target function.

3 . The method of claim 1 , comprising:

allocating a segment in the memory area;

including one or more instructions in the segment that are in accordance with the update information; and

marking the segment as executable,

wherein modifying the target function comprises overwriting an original instruction with a new instruction to change control flow to the segment.

4 . The method of claim 3 , comprising:

including one or more instructions in the segment to compensate for overwriting the original instruction.

5 . The method of claim 1 , comprising:

detecting a start of a new process;

determining whether the update information applies to the new process; and

selectively applying the update information to the new process.

6 . The method of claim 1 , wherein the update information comprises a sequence of bytes corresponding to at least a portion of the target function, and wherein determining the location of the target function comprises comparing the sequence of bytes with one or more portions of the memory area.

7 . The method of claim 1 , wherein determining the location of the target function comprises retrieving an address from a dynamic linking loader based on a symbol identifier that corresponds to the target function, the symbol identifier being included in the update information.

8 . The method of claim 1 , wherein identifying the process comprises:

accessing an application name indicated by the update information;

obtaining a list of process information elements of respective processes that are in a executing state; and

selecting a process from the list based on the application name.

9 . The method of claim 1 , wherein identifying the process comprises:

receiving a notification of a creation of a new process; and

comparing an application name associated with the new process with an application name indicated by the update information.

10 . The method of claim 1 , wherein the memory area resides in a volatile random access memory structure within the mobile device.

11 . The method of claim 10 , wherein the update information includes a binary code segment, and wherein modifying the target function comprises writing the binary code segment to the volatile random access memory structure using the memory address.

11 . A mobile device comprising:

a receiver configured to receive information over a wireless channel, the information including update information that is formulated to modify a target function; and

a processor configured to perform operations comprising:

identifying, from among a plurality of executing processes, a process that is operable to execute the target function, wherein the target function resides within a memory area associated with the identified process;

suspending the identified process;

determining, within the memory area, a memory address of the target function based on the Obtained update information;

modifying the target function in the memory area based on the memory address and the obtained update information to produce a modified function; and

resuming the modified process.

12 . The device of claim 11 , wherein the operations comprise:

allocating memory to store a patched version of the target function, wherein modifying the target function comprises overwriting an original instruction with an instruction to change control flow to the patched version of the target function.

13 . The device of claim 11 , wherein the operations comprise:

allocating a segment in the memory area;

including one or more instructions in the segment that are in accordance with the update information; and

marking the segment as executable,

wherein modifying the target function comprises overwriting an original instruction with a new instruction to change control flow to the segment.

14 . The device of claim 13 , wherein the operations comprise:

including one or more instructions in the segment to compensate for overwriting the original instruction.

15 . The device of claim 11 , wherein the operations comprise:

detecting a start of a new process;

determining whether the update information applies to the new process; and

selectively applying the update information to the new process.

16 . The device of claim 11 , wherein the update information comprises a sequence of bytes corresponding to at least a portion of the target function, and wherein determining the location of the target function comprises comparing the sequence of bytes with one or more portions of the memory area.

17 . The device of claim 11 , wherein determining the location of the target function comprises retrieving an address from a dynamic linking loader based on a symbol identifier that corresponds to the target function, the symbol identifier being included in the update information.

18 . The device of claim 11 , wherein identifying the process comprises:

accessing an application name indicated by the update information;

obtaining a list of process information elements of respective processes that are in a executing state; and

selecting a process from the list based on the application name.

19 . The device of claim 11 , wherein identifying the process comprises:

receiving a notification of a creation of a new process; and

comparing an application name associated with the new process with an application name indicated by the update information.

20 . The device of claim 11 , wherein the memory area resides in a volatile random access memory structure within the mobile device.

21 . The device of claim 20 , wherein the update information includes a binary code segment, and wherein modifying the target function comprises writing the binary code segment to the volatile random access memory structure using the memory address.

22 . A system comprising:

a network interface configured to communicate with mobile devices; and

a server configured to send update information to the mobile devices such that, when received, the update information causes the mobile devices to perform operations comprising:

extracting an identifier of a target function from the update information;

identifying, from among a plurality of executing processes, a process that is operable to execute the target function, wherein the target function resides within a memory area associated with the identified process;

suspending the identified process;

determining, within the memory area, a memory address of the target function based on the obtained update information;

modifying the target function in the memory area based on the memory address and the obtained update information to produce a modified function; and

resuming the modified process.

23 . The system of claim 22 , wherein the update information comprises a sequence of bytes corresponding to at least a portion of the target function, and wherein determining the location of the target function comprises comparing the sequence of bytes with one or more portions of the memory area.

24 . The system of claim 22 , wherein determining the location of the target function comprises retrieving an address from a dynamic linking loader based on a symbol identifier that corresponds to the target function, the symbol identifier being included in the update information.

Assignments (3)
SUPPLEMENT NO. 2 TO THE FIRST LIEN PATENT SECURITY AGREEMENT Recorded Apr 2, 2014
From: ASURION, LLC, AS GRANTOR
To: BANK OF AMERICA , N.A., AS COLLATERAL AGENT
Reel/Frame 032589/0689 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Mar 5, 2014
From: WARRANTY COMPANY OF AMERICA, LLC; ASURION, LLC, A DELAWARE LIMITED LIABILITY COMPANY; ASURION SERVICES, LLC, A DELAWARE LIMITED LIABILITY COMPANY
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 032388/0969 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2013
From: MITCHELL, JOSH; O'DONNELL, SHAWN
To: ASURION, LLC
Reel/Frame 031020/0180 →