Decompiling Android [electronic resource] /
Nolan, Godfrey.author.
Decompiling Android looks at the the reason why Android apps can be decompiled to recover their source code, what it means to Android developers and how you can protect your code from prying eyes. This is also a good way to see how good and bad Android apps are constructed and how to learn from them in building your own apps. This is becoming an increasingly important topic as the Android marketplace grows and developers are unwittingly releasing the apps with lots of back doors allowing people to potentially obtain credit card information and database logins to back-end systems, as they don't realize how easy it is to decompile their Android code.       In depth examination of the Java and Android class file structures Tools and techniques for decompiling Android apps Tools and techniques for protecting your Android apps.
Title Page; Copyright Page; Dedication Page; Contents at a Glance; Table of Contents; About the Author; About the Technical Reviewer; Acknowledgments; Preface; Chapter 1 Laying the Groundwork; Compilers and Decompilers; Virtual Machine Decompilers; Why Java with Android?; Why Android?; History of Decompilers; Reviewing Interpreted Languages More Closely: Visual Basic; Hanpeter van Vliet and Mocha; Legal Issues to Consider When Decompiling; Protection Laws; Patents; Copyright; Directive on the Legal Protection of Computer Programs; Reverse Engineering; The Legal Big Picture; Moral Issues
Protecting YourselfSummary; Chapter 2 Ghost in the Machine; The JVM: An Exploitable Design; Simple Stack Machine; Heap; Program Counter Registers; Method Area; JVM Stack; Inside a Class File; Magic Number; Minor and Major Versions; Constant-Pool Count; Constant Pool; Access Flags; The this Class and the Superclass; Interfaces and Interface Count; Fields and Field Count; Field Attributes; Methods and Method Count; Method Attributes; Attributes and Attributes Count; Summary; Chapter 3 Inside the DEX File; Ghost in the Machine, Part Deux; Converting Casting.class
Breaking the DEX File into Its Constituent PartsThe Header Section; Magic; Checksum; Header_size; Endian_tag; The string_ids Section; The type_ids Section; The proto_ids Section; The field_ids Section; The method_ids Section; The class_defs Section; The data Section; class_data_item; code_item; Summary; Chapter 4 Tools of the Trade; Downloading the APK; Backing Up the APK; Forums; Platform Tools; Rooting the Phone; Installing and Using the Platform Tools; Decompiling an APK; What's in an APK File?; Random APK Issues; Web Service Keys and Logins; Database Schemas; HTML5/CSS; Fake Apps
DisassemblersHex Editors; dx and dexdump; dedexer; baksmali; Decompilers; Mocha; Jad; JD-GUI; dex2jar; undx; apktool; Protecting Your Source; Writing Two Versions of the Android App; Obfuscation; Layout Obfuscations; Control Obfuscations; Computation Obfuscation; Aggregation Obfuscation; Ordering Obfuscation; Data Obfuscations; Ordering; Obfuscation Conclusion; Web Services; Fingerprinting Your Code; Native Methods; Non-Obfuscation Strategies Conclusion; Obfuscators; Crema; ProGuard; DashO; JavaScript Obfuscators; Summary; Chapter 5 Decompiler Design; Theory Behind the Design
Defining the Problem(De)Compiler Tools; Lex and Yacc; JLex and CUP Example; JLex; CUP; ANTLR; ANTLR Example; Strategy: Deciding on your Parser Design; Choice One; Choice Two; Choice Three; Choice Four; Parser Design; Summary; Chapter 6 Decompiler Implementation; DexToXML; Parsing the dex.log Output; ANTLR at Work; Rules; Outputting the Magic Number; DexToSource; Example 1: Casting.java; Bytecode Analysis; Parser; Java; Example 2: Hello World; Bytecode Analysis; Parser; Java; Example 3: if Statement; Bytecode Analysis; Parser; Java; Refactoring; Summary
Chapter 7 Hear No Evil, See No Evil: A Case Study
Includes index.
Decompiling Android looks at the the reason why Android apps can be decompiled to recover their source code, what it means to Android developers and how you can protect your code from prying eyes. This is also a good way to see how good and bad Android apps are constructed and how to learn from them in building your own apps. This is becoming an increasingly important topic as the Android marketplace grows and developers are unwittingly releasing the apps with lots of back doors allowing people to potentially obtain credit card information and database logins to back-end systems, as they don't realize how easy it is to decompile their Android code.       In depth examination of the Java and Android class file structures Tools and techniques for decompiling Android apps Tools and techniques for protecting your Android apps.
Mobile computing.
Software engineering.
Mobile Computing.
Software Engineering/Programming and Operating Systems.