Analytics data collection with low integration cost for dynamic message passing systems
AssigneeIntrospex, Inc.
InventorsFred W. MCCLAIN, Stephen MICKELSEN, Vishweshwar GHANAKOTA
Life of this patent
Estimating the term…
Abstract
A method, an apparatus, and a computer program product which capture and use analytics data relating to the internal activity of software programs executing in a message-passing runtime environment, such as that provided by Objective-C. The invention exploits the well documented interfaces of these environments together with their dynamic runtime capabilities to insert data collection and analysis code into an application without modification of the target application.
Claims20
A method of modifying behavior of a computing device, comprising:
- receiving at a computing device, a message transmitted by a server while the computing device is executing an application, wherein the computing device is exhibiting a first behavior while under control of the application;
- responsive to the message, changing a first implementation pointer related to the application by replacing a first address stored in the implementation pointer with a second address, wherein the second address corresponds to a code block maintained in a library of modules on the computing device, and wherein changing the first implementation pointer modifies the first behavior;
- and
- storing the first address in a second implementation pointer, wherein the first implementation pointer is identified by a first function selector and the second implementation pointer is identified by a second function selector,
- wherein an address is stored in the implementation pointer during loading of the application, and the first address corresponds to a target function that is linked to the application,
- wherein invoking the first function selector after replacing the first address with the second address in the first implementation pointer causes the computing device to execute the code block,
- wherein executing the code block includes invoking the second function selector such that the computing device is caused to execute the target function after each execution of the code block, and
- wherein the first implementation pointer is identified in byte code corresponding the application.
An apparatus comprising:
- means for receiving at the apparatus, a message transmitted by a server while the apparatus is executing an application, wherein the apparatus exhibits a first behavior while under control of the application;
- means for changing a first implementation pointer related to the application in response to the message, wherein the means for changing the first implementation pointer is configured to replace a first address stored in the implementation pointer with a second address, wherein the second address corresponds to a code block maintained in a library of modules on the apparatus, and wherein changing the first implementation pointer modifies the first behavior;
- and
- means for storing the first address in a second implementation pointer, wherein the first implementation pointer is identified by a first function selector and the second implementation pointer is identified by a second function selector,
- wherein an address is stored in the implementation pointer during loading of the application, and the first address corresponds to a target function that is linked to the application,
- wherein invoking the first function selector after replacing the first address with the second address in the first implementation pointer causes the apparatus to execute the code block,
- wherein executing the code block includes invoking the second function selector such that the apparatus is caused to execute the target function after each execution of the code block, and
- wherein the first implementation pointer is identified in byte code corresponding the application.
A non-transitory computer-readable medium comprising code for:
- receiving at a computing device, a message transmitted by a server while the computing device is executing an application, wherein the computing device is exhibiting a first behavior while under control of the application;
- responsive to the message, changing a first implementation pointer related to the application by replacing a first address stored in the implementation pointer with a second address, wherein the second address corresponds to a code block maintained in a library of modules on the computing device, and wherein changing the first implementation pointer modifies the first behavior;
- and
- storing the first address in a second implementation pointer, wherein the first implementation pointer is identified by a first function selector and the second implementation pointer is identified by a second function selector,
- wherein an address is stored in the implementation pointer during loading of the application, and the first address corresponds to a target function that is linked to the application,
- wherein invoking the first function selector after replacing the first address with the second address in the first implementation pointer causes the computing device to execute the code block,
- wherein executing the code block includes invoking the second function selector such that the computing device is caused to execute the target function after each execution of the code block, and
- wherein the first implementation pointer is identified in byte code corresponding the application.
Dependencies are inferred from the claim text.