0%

Book Description

Both Java and .NET use the idea of a "virtual machine," or VM. And while VMs are useful for some purposes, they undermine the security of your source code, because creation can be reversed, or decompiled. Which makes this one-of-a-kind book extremely useful: you must understand decompilation, to properly protect your intellectual property.

For example, how secure is your code after you run an obfuscator? The book will answer questions like this, and provide more thorough information about Java byte codes and the Java Virtual Machine (JVM) than any other book on the market. This book redresses the imbalance by providing insights into the features and limitations of today's decompilers and obfuscators, and offering a detailed look at what JVMs actually do.

Table of Contents

  1. Cover
  2. Title
  3. Copyright
  4. Dedication
  5. Contents at a Glance
  6. Contents
  7. About the Author
  8. About the Technical Reviewer
  9. Acknowledgments
  10. Chapter 1: Introduction
    1. Compilers and Decompilers
    2. Virtual Machine Decompilers
    3. Why Java?
    4. History: Basic Chronology
    5. Legal Issues
    6. Moral Issues
    7. Protecting Yourself
    8. Book Outline
    9. Conclusion
  11. Chapter 2: Ghost in the Machine
    1. The JVM: An Exploitable Design?
    2. Inside a Classfile
    3. Conclusion
  12. Chapter 3: Tools of the Trade
    1. Employing Hexadecimal Editors
    2. The Problem of Insecure Code
    3. Disassemblers
    4. Decompilers
    5. Obfuscators
    6. Conclusion
  13. Chapter 4: Protecting Your Source: Strategies for Defeating Decompilers
    1. Compilation Flags
    2. Writing Two Versions of the Applet or Application
    3. Employing Obfuscation
    4. Web Services and ­Server-­Side Execution
    5. Encryption
    6. Digital Rights Management
    7. Fingerprinting Your Code
    8. Selling the Source Code
    9. Native Methods
    10. Conclusion
  14. Chapter 5: Decompiler Design
    1. Introduction
    2. Defining the Problem
    3. (De)Compiler Tools
    4. Strategy
    5. Parser Design
    6. Conclusion
  15. Chapter 6: Decompiler Implementation
    1. ClassToXML Output: An Overview
    2. JLex Specification
    3. CUP Specification
    4. Test Suite
    5. Summarizing Decompiler Implementation
      1. Conclusion
  16. Chapter 7: Case Studies
    1. Case Studies
    2. Conclusion
  17. Appendix A: Classfile Grammar
  18. Index
  19. Ad page
3.145.17.18