Reverse Engineering iOS Mobile Applications

As a result of the ubiquity and popularity of smart phones, the number of third party mobile applications is explosively growing. With the increasing demands of users for new dependable applications, novel software engineering techniques and tools geared towards the mobile platform are required to support developers in their program comprehension and analysis tasks. In this paper, we propose a reverse engineering technique that automatically (1) hooks into, dynamically runs, and analyzes a given iOS mobile application, (2) exercises its user interface to cover the interaction state space and extracts information about the runtime behaviour, and (3) generates a state model of the given application, capturing the user interface states and transitions between them. Our technique is implemented in a tool called iCrawler. To evaluate our technique, we have conducted a case study using six open-source iPhone applications. The results indicate that iCrawler is capable of automatically detecting the unique states and generating a correct model of a given mobile application.

[1]  Mika Katara,et al.  Obstacles and opportunities in deploying model‐based GUI testing of mobile software: a survey , 2012, Softw. Test. Verification Reliab..

[2]  Scott P. Robertson,et al.  Proceedings of the SIGCHI Conference on Human Factors in Computing Systems , 1991 .

[3]  Byoungju Choi,et al.  Performance Testing of Mobile Applications at the Unit Test Level , 2009, 2009 Third IEEE International Conference on Secure Software Integration and Reliability Improvement.

[4]  Porfirio Tramontana,et al.  A GUI Crawling-Based Technique for Android Mobile Application Testing , 2011, 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops.

[5]  Ali Mesbah,et al.  Automated analysis of CSS rules to support style maintenance , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[6]  Mary Beth Rosson,et al.  Survey on user interface programming , 1992, CHI.

[7]  Ali Mesbah,et al.  Automated cross-browser compatibility testing , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[8]  Arie van Deursen,et al.  Invariant-Based Automatic Testing of Modern Web Applications , 2012, IEEE Transactions on Software Engineering.

[9]  Christopher Krügel,et al.  PiOS: Detecting Privacy Leaks in iOS Applications , 2011, NDSS.

[10]  Arie van Deursen,et al.  Crawling Ajax-Based Web Applications through Dynamic Analysis of User Interface State Changes , 2012, TWEB.

[11]  Harold W. Thimbleby,et al.  User interface model discovery: towards a generic approach , 2010, EICS '10.

[12]  Josh Dehlinger,et al.  Mobile Application Software Engineering : Challenges and Research Directions , 2011 .

[13]  Rainer Koschke,et al.  How do professional developers comprehend software? , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[14]  Atif M. Memon,et al.  GUI ripping: reverse engineering of graphical user interfaces for testing , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[15]  Carsten Weise,et al.  Providing a Software Quality Framework for Testing of Mobile Applications , 2011, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation.

[16]  Rob Miller,et al.  GUI testing using computer vision , 2010, CHI.

[17]  Iulian Neamtiu,et al.  Automating GUI testing for Android applications , 2011, AST '11.

[18]  Hee Beng Kuan Tan,et al.  Detection of Mobile Malware in the Wild , 2012, Computer.

[19]  Anthony I. Wasserman,et al.  Software engineering issues for mobile application development , 2010, FoSER '10.

[20]  Christopher Krügel,et al.  Challenges for Dynamic Analysis of iOS Applications , 2011, iNetSeC.

[21]  Henry Muccini,et al.  Software testing of mobile applications: Challenges and future research directions , 2012, 2012 7th International Workshop on Automation of Software Test (AST).

[22]  OndrusJan,et al.  Mobile application market , 2011 .