Discovery of Application States
Abstract
An application is operable to achieve a plurality of application states. Static analysis is performed based on machine code of the application to generate a state access instruction configured to invoke a state of the application states of the application and identify a set of parameter variables relied on by the state access instruction. Dynamic analysis is performed to determine values for the set of parameter variables to invoke the state. The state access instruction and the values determined for the set of parameter variables to invoke the state are stored as an access mechanism. The application is executed, and data is scraped from the state. The scraped data can be used to determine whether the state of the application is a relevant search result, and the access mechanism can be used to launch and transition the application to the state.
Claims
exact text as granted — not AI-modified1 . (canceled)
2 . A method comprising:
obtaining machine executable code of an application, the application operable to achieve a plurality of application states; performing static analysis based on the machine executable code to (i) generate a state access instruction configured to invoke a first state of the application states of the application and (ii) identify a set of parameter variables relied on by the state access instruction; performing dynamic analysis on the application to determine values for the set of parameter variables to invoke the first state of the application; storing, as an access mechanism for invoking the first state of the application, the state access instruction and the values determined for the set of parameter variables to invoke the first state of the application; storing a record for the first state of the application in a search index and storing the access mechanism for invoking the first state of the application in the record for the first state of the application; in response to receiving a search query from a user device, identifying at least one relevant record from the search index according to the search query and data stored in records of the search index; in response to the at least one relevant record including the record for the first state of the application, generating a set of search results including a search result for the first state of the application, the search result for the first state of the application including the access mechanism for the first state of the application; and providing the set of search results to the user device, wherein selection of the search result by a user causes the user device to launch the application and to transition the application to the first state.
3 . The method of claim 2 wherein performing dynamic analysis on the application includes executing the application using an emulator to determine the values for the set of parameter variables to invoke the first state of the application.
4 . The method of claim 2 further comprising:
transitioning the application to the first state using the state access instruction and the values determined for the set of parameter values;
after the transitioning, scraping data from the first state of the application; and
storing the data scraped from the first state of the application in the record for the first state of the application,
wherein identifying at least one relevant record from the search index includes identifying at least one relevant record from the search index according to scraped data stored in records of the search index.
5 . The method of claim 2 further comprising:
performing dynamic analysis on the application to determine second values for the set of parameter variables to invoke a second state of the set of the application states of the application, the second state of the application being different than the first state of the application;
storing, as a second access mechanism for invoking the second state of the application, the state access instruction and the second values determined for the set of parameter variables to invoke the second state of the application;
storing a second record for the second state of the application in the search index and storing the second access mechanism for invoking the second state of the application in the second record for the second state of the application;
in response to the at least one relevant record including the second record for the second state of the application, generating a second set of search results including a second search result for the second state of the application, the second search result for the second state of the application including the second access mechanism for the second state of the application; and
providing the second set of search results to the user device, wherein selection by the user of the second search result causes the user device to launch the application and to transition the application to the second state.
6 . The method of claim 5 wherein the application produces, on a display of the user device:
a first output interface for the first state when the application is in the first state; and
a second output interface for the second state when the application is in the second state,
wherein the first output interface is visually different than the second output interface.
7 . The method of claim 5 further comprising:
executing the application;
scraping data from the first state of the application;
storing the data scraped from the first state of the application in the record for the first state of the application;
scraping data from the second state of the application; and
storing the data scraped from the second state of the application in the second record for the second state of the application,
wherein identifying at least one relevant record from the search index includes identifying at least one relevant record from the search index according to scraped data stored in records of the search index.
8 . The method of claim 2 further comprising:
pre-processing the machine executable code to generate reviewable code,
wherein the state access instruction includes an application resource identifier corresponding to an activity object in the reviewable code.
9 . The method of claim 8 further comprising identifying the activity object from the reviewable code by:
tracing functionality of the activity object; and
based on the tracing, determining that the activity object is functional to assist in transitioning the application to the first state of the application when one or more rules are satisfied.
10 . The method of claim 8 further comprising identifying the activity object from the reviewable code in response to the reviewable code matching one or more pattern matching rules.
11 . The method of claim 8 further comprising:
tracing functions of a parameter variable associated with the activity object from the reviewable code to determine whether the parameter variable assists the activity object in changing the application state of the application;
determining semantic meaning of the parameter variable by tracing use of the parameter variable in the reviewable code; and
assigning a category to the parameter variable based on the semantic meaning, wherein the category is associated with a predetermined value,
wherein the state access instruction further includes the predetermined value.
12 . A system comprising:
at least one processor; and memory including instructions that are executed by the at least one processor, the instructions comprising:
an object tracking module configured to perform static analysis based on machine executable code of an application and thereby: (i) generate a state access instruction configured to invoke a first state of a plurality of application states of the application and (ii) identify a set of parameter variables relied on by the state access instruction;
a dynamic analysis module configured to perform dynamic analysis on the application to determine values for the set of parameter variables to invoke the first state of the application;
a static access instruction report module configured to store, as an access mechanism for invoking the first state of the application, the state access instruction and the values determined for the set of parameter variables to invoke the first state of the application;
a scraper engine configured to:
store a record for the first state of the application in a search index; and
store the access mechanism for invoking the first state of the application in the record for the first state of the application;
a set generation module configured to, in response to receiving a search query from a user device, identify at least one relevant record from the search index according to the search query and data stored in records of the search index; and
a set processing module configured to, in response to the at least one relevant record including the record for the first state of the application, generating a set of search results including a search result for the first state of the application, the search result for the first state of the application including the access mechanism for the first state of the application,
wherein selection of the search result by a user causes the user device to launch the application and to transition the application to the first state.
13 . The system of claim 12 wherein the dynamic analysis module is configured to perform the dynamic analysis on the application using an emulator to determine the values for the set of parameter variables to invoke the first state of the application.
14 . The system of claim 12 wherein the scraper engine is configured to:
transition the application to the first state using the state access instruction and the values determined for the set of parameter values;
after the application is transitioned to the first state, scraping the data from the first state of the application; and
store the data scraped from the first state of the application in the record for the first state of the application,
wherein the set generation module is configured to identify the at least one relevant record from the search index according to scraped data stored in records of the search index.
15 . The system of claim 12 wherein:
the dynamic analysis module is further configured to perform dynamic analysis on the application to determine second values for the set of parameter variables to invoke a second state of the set of the application states of the application, the second state of the application being different than the first state of the application;
the static access instruction report module is further configured to store, as a second access mechanism for invoking the second state of the application, the state access instruction and the second values determined for the set of parameter variables to invoke the second state of the application;
the scraper engine is further configured to:
store a second record for the second state of the application in the search index; and
store the second access mechanism for invoking the second state of the application in the second record for the second state of the application;
the set generation module is further configured to, in response to the at least one relevant record including the second record for the second state of the application, generate a second set of search results including a second search result for the second state of the application, the second search result for the second state of the application including the second access mechanism for the second state of the application; and
selection by the user of the second search result causes the user device to launch the application and to transition the application to the second state.
16 . The system of claim 15 wherein the application produces, on a display of the user device:
a first output interface for the first state when the application is in the first state; and
a second output interface for the second state when the application is in the second state,
wherein the first output interface is visually different than the second output interface.
17 . The system of claim 15 wherein:
the scraper engine is further configured to:
execute the application;
scrape data from the first state of the application;
store the data scraped from the first state of the application in the record for the first state of the application;
scrape data from the second state of the application; and
store the data scraped from the second state of the application in the second record for the second state of the application,
the set generation module is configured to identify the at least one relevant record from the search index according to scraped data stored in records of the search index.
18 . The system of claim 12 further comprising a pre-processing module configured to (i) obtain the machine executable code of the application and (ii) pre-process the machine executable code to generate reviewable code,
wherein the object tracking module is configured to perform the static analysis on the reviewable code, and
wherein the state access instruction includes an application resource identifier corresponding to an activity object in the reviewable code.
19 . The system of claim 18 , wherein the object tracking module is configured to identify the activity object from the reviewable code by:
tracing functionality of the activity object; and based on the tracing, determining that the activity object is functional to assist in transitioning the application to the first state of the application when one or more rules are satisfied.
20 . The system of claim 18 wherein the instructions further include an object identification module configured to identifying the activity object from the reviewable code in response to the reviewable code matching one or more pattern matching rules.
21 . The system of claim 18 wherein:
the object tracking module is configured to trace functions of a parameter variable associated with the activity object from the reviewable code to determine whether the parameter variable assists the activity object in changing the application state of the application;
the instructions further include a static semantic module configured to:
determine semantic meaning of the parameter variable by tracing use of the parameter variable in the reviewable code; and
assign a category to the parameter variable based on the semantic meaning, wherein the category is associated with a predetermined value; and
the state access instruction further includes the predetermined value.
22 . A non-transitory computer-readable medium comprising processor-executable instructions, wherein the instructions include:
obtaining machine executable code of an application, the application operable to achieve a plurality of application states; performing static analysis based on the machine executable code to (i) generate a state access instruction configured to invoke a first state of the application states of the application and (ii) identify a set of parameter variables relied on by the state access instruction; performing dynamic analysis on the application to determine values for the set of parameter variables to invoke the first state of the application; storing, as an access mechanism for invoking the first state of the application, the state access instruction and the values determined for the set of parameter variables to invoke the first state of the application; storing a record for the first state of the application in a search index and storing the access mechanism for invoking the first state of the application in the record for the first state of the application; in response to receiving a search query from a user device, identifying at least one relevant record from the search index according to the search query and data stored in records of the search index; in response to the at least one relevant record including the record for the first state of the application, generating a set of search results including a search result for the first state of the application, the search result for the first state of the application including the access mechanism for the first state of the application; and providing the set of search results to the user device, wherein selection of the search result by a user causes the user device to launch the application and to transition the application to the first state.
23 . The non-transitory computer-readable medium of claim 22 , wherein the instructions include:
performing dynamic analysis on the application to determine second values for the set of parameter variables to invoke a second state of the set of the application states of the application, the second state of the application being different than the first state of the application; storing, as a second access mechanism for invoking the second state of the application, the state access instruction and the second values determined for the set of parameter variables to invoke the second state of the application; storing a second record for the second state of the application in the search index; storing the second access mechanism for invoking the second state of the application in the second record for the second state of the application; in response to the at least one relevant record including the second record for the second state of the application, generating a second set of search results including a second search result for the second state of the application, the second search result for the second state of the application including the second access mechanism for the second state of the application; and providing the second set of search results to the user device, wherein selection by the user of the second search result causes the user device to launch the application and to transition the application to the second state.Join the waitlist — get patent alerts
Track US2017046399A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.