Introduction
So far, we've seen how to set up and customize an environment to discover and take advantage of vulnerabilities in the Android apps. In this chapter, we are going to discuss several protection techniques to make it more difficult for reverse engineers and attackers.
One of the common mistakes while developing applications is unintentionally leaving application components exposed. We'll focus on how to prevent the components from being exposed and accessible to other apps. We will also see how to restrict access with custom permissions if sharing data is required.
Intrusion or tamper detection is the cornerstone of all good defense systems, and to this end, we'll try to detect if an attack is in progress and whether our app is running in a compromised state.
Rounding up the chapter, we will cover two recipes to make a reverse engineer's job even more difficult. We will see how to use code obfuscation and customize ProGuard configuration to remove all logging messages from the app...