Reverse Engineering an IPhone Applications using Dynamic Analysis
Philippe Dugerdil, Roland Sako
2015
Abstract
Mobile applications are becoming very complex since business applications increasingly move to the mobile. Hence the same problem of code maintenance and comprehension of poorly documented apps, as in the desktop world, happen to the mobile today. One technique to help with code comprehension is to reverse engineer the application. Specifically, we are interested in the functional structure of the app i.e. how the classes that implement the use cases interact. Then we adapted, to the iPhone, the code analysis technique we developed for the desktop applications. In this paper we present the reverse engineering process and tool we used to reverse engineer the code of an iPhone app and show, in a case study, how these tools are used.
References
- ANTLR 2014. ANother Tool for Language Recognition. http://www.antlr.org/ Accessed on Oct 12, 2014.
- Apple iOS 2014. File System Programming Guide https:// developer.apple.com/library/mac/documentation/File Management/Conceptual/FileSystemProgrammingGui de/FileSystemOverview/FileSystemOverview.html. [Accessed on Oct 12, 2014].
- Appcelerator/IDC 2013. Mobile Developer report. www. appcelerator.com.s3.amazonaws.com/pdf/developersurvey-Q2-2013.pdf. [Accessed on March 5, 2015].
- Apple UITableView 2014. UITableView Class Reference, https://developer.apple.com/library/ios/documentation/ UIKit/Reference/UITableView_Class/. [Accessed on Oct 12, 2014].
- Clements P., Kazman R., Klein M. 2002. Evaluating Software Architecture. Addison-Wesley.
- Dugerdil Ph. 2007 - Using trace sampling techniques to identify dynamic clusters of classes. IBM CAS Software and Systems Engineering Symposium (CASCON) October 2007.
- Dugerdil Ph., Sennhauser D. 2013. Dynamic Decision Tree for Legacy Use-Case Recovery. 28th ACM Symposium On Applied Computing (SAC 2013) Coimbra, Portugal, March 18-22, 2013.
- Dugerdil Ph., Niculescu M. 2014. Visualizing Software Structure Understandability. 23rd Australasian Software Engineering Conference (ASWEC) 2014. Sydney, 2014. IEEE Digital Library.
- Gamma E., Helm R., Johnson R., Vlissides J. 1995 Design Patterns. Elements of Reusable Object Oriented Software. Addison-Wesley.
- Gianchandani P. 2014. Damn Vulnerable iOS Application (DVIA). http://damnvulnerableiosapp.com/#learn [Accessed on Oct 12, 2014].
- GDB. 2014. GNU Debugger http://www.gnu.org/software /gdb/ [Accessed on Oct 12, 2014].
- Graphviz 2015. http://www.graphviz.org/Home.php. [Accessed on April 17, 2015].
- Hammond J.S. 2013. Development Landscape: 2013, Forrester Research.
- Hamou-Lhadj A., Lethbridge T.C. 2004. A Survey of Trace Exploration Tools and Techniques. Proc. of the IBM Conference of the Centre for Advanced Studies on Collaborative Research.
- IBM 2014. IBM Mobile First initiative. www.03. ibm.com/press/us/en/presskit/39172.wss. [Accessed on Oct 12, 2014].
- IDC 2013. IDC Predictions 2013 Competing on the 3rd Platform. www.idc.com/getdoc.jsp?containerId= WC20121129 [Accessed on March 5, 2015].
- iExplorer 2014. http://www.macroplant.com/iexplorer/
- [Accessed on Oct 12, 2014].
- Introspy-iOS 2014. https://github.com/iSECPartners/Intro spy-iOS. [Accessed on Oct 12, 2014].
- iOS Simulator, 2014. https://developer.apple.com/library/ ios/documentation/IDEs/Conceptual/iOS_Simulator_ Guide/GettingStartedwithiOSStimulator/GettingStarte dwithiOSStimulator.html. [Accessed on Oct 12, 2014].
- JavaCC 2014. Java Compiler Compiler - The Java Parser Generator. https://javacc.java.net/ [Accessed on Oct 12, 2014].
- JTB 2014. Java TreeBuilder.http://compilers.cs.ucla.edu/ jtb/ [Accessed on Oct 12, 2014].
- LLDB 2014. LLDB Debugger, http://lldb.llvm.org/. [Accessed on Oct 12, 2014].
- Objective C 2014. Runtime Reference. https://developer .apple.com/library/mac/documentation/Cocoa/Referen ce/ObjCRuntimeRef/Reference/reference.html. [Accessed on Oct 12, 2014].
- Parada A.G., de Brisolara L.B. 2012. A model driven approach for An-droid applications development. Proc. Brazilian Symposium on Computing System Engineering (SBESC).
- Snoop-it 2014. https://code.google.com/p/snoop-it/ [Accessed on Oct 12, 2014].
- Szydlowski et al. 2011. Challenges for Dynamic Analysis of iOS Applications. Proc. of the IFIP WG 11.4 international conference on Open Problems in Network Security.
- Tilley S.R., Santanu P., Smith D.B. 1996. Toward a Framework for Program Understanding. Proc. IEEE Int. Workshop on Program Comprehension.
- Wasserman A.I. 2011. Software Engineering Issues for Mobile Application Development. Proc. 2nd Workshop on Software Engineering for Mobile Application Development MobiCase'11.
- YaCC 2014. Yet Another Compiler-Compiler. http:// dinosaur.compilertools.net/yacc/. [Accessed on Oct 12, 2014].
- Zend 2013. Developer Pulse Survey - Second Quarter 2013. http://static.zend.com/topics/Zend-DeveloperPulse-report-Q2-2013-0523-EN.pdf [Accessed on March 5, 2015].
Paper Citation
in Harvard Style
Dugerdil P. and Sako R. (2015). Reverse Engineering an IPhone Applications using Dynamic Analysis . In Proceedings of the 10th International Conference on Software Engineering and Applications - Volume 1: ICSOFT-EA, (ICSOFT 2015) ISBN 978-989-758-114-4, pages 261-268. DOI: 10.5220/0005498002610268
in Bibtex Style
@conference{icsoft-ea15,
author={Philippe Dugerdil and Roland Sako},
title={Reverse Engineering an IPhone Applications using Dynamic Analysis},
booktitle={Proceedings of the 10th International Conference on Software Engineering and Applications - Volume 1: ICSOFT-EA, (ICSOFT 2015)},
year={2015},
pages={261-268},
publisher={SciTePress},
organization={INSTICC},
doi={10.5220/0005498002610268},
isbn={978-989-758-114-4},
}
in EndNote Style
TY - CONF
JO - Proceedings of the 10th International Conference on Software Engineering and Applications - Volume 1: ICSOFT-EA, (ICSOFT 2015)
TI - Reverse Engineering an IPhone Applications using Dynamic Analysis
SN - 978-989-758-114-4
AU - Dugerdil P.
AU - Sako R.
PY - 2015
SP - 261
EP - 268
DO - 10.5220/0005498002610268