Decompiling Android

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...

Descripción completa

Detalles Bibliográficos
Autor principal: Nolan, Godfrey (-)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Berkeley : Apress 2012.
Edición:1st ed. 2012.
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009629430506719
Tabla de Contenidos:
  • 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