Android is the most common mobile OS by far, cornering 87% of the market share—a figure expected to grow. Android’s open platform and extensive library of resources make it easy for developers to create and integrate new apps. However, the same features that make Android easy for developers to use also make it easy for hackers to exploit.
Android apps have become the most widely used alternative to desktop software. Because apps are used for banking, shopping, and transmitting personal information, they’re a prime target for cybercriminals. One of the most common methods hackers use to carry out various attacks is reverse engineering your code.

Android’s open environment makes it an easy target for reverse engineering. Reverse engineering analyzes an app to determine how it works and its design and implementation process. This is done by examining the compiled code, observing the app during runtime, or both. Numerous free tools are available to reverse-engineer Android app binaries.
Attackers can use reverse engineering to steal your intellectual property, modify your code, attack your back-end systems, discover security vulnerabilities, and gain access to confidential data. The first step in almost all Android hacking attempts is reverse engineering the code.
Repackaging and cloning attacks are a problem for apps of all sizes. Hackers often take good but not very popular apps and reverse-engineer their code. They then modify the code to suit their purpose, such as embedding malware to steal credentials or ad revenue. The modified code is then repackaged, and consumers may be convinced to install it, thinking they’re installing a trusted app. Another variation of the repackaging app is when hackers rebrand an app and publish it as their own, often making more than the original developer.
String tables are frequently used to store sensitive information, such as license keys, credentials, and other confidential data, on both the client and server sides. Hackers can analyze the string tables to gather information, identify algorithms, understand database designs, and more. The string table may contain the data they want to steal, or they may use the information they gather to launch a different type of attack.
Cross-referencing can help hackers determine where a particular function was called from. They can use that to detect vulnerable code that could execute malware or to find code that encrypts the data they want to steal. Cross-referencing can show how information was accessed, which is invaluable to hackers trying to steal intellectual property or sensitive data or to insert malicious code.
Hackers can use debuggers and emulators for dynamic analysis during runtime. Using these tools, they can identify and exploit vulnerabilities with runtime attacks. Unlike the other methods, these attacks require active hardening. Your app needs to be able to modify its behavior and response during runtime if an active threat is detected.

Given enough time and resources, almost any code can be reverse-engineered. However, obfuscating your code can make it more difficult, expensive, and time-consuming for hackers to do so. The free decompilers make it extremely easy for hackers to reverse-engineer code that isn’t obfuscated.
If your code is obfuscated, hackers are more likely to give up and move on than to invest time and money in reverse engineering the source code. Code obfuscation can involve several techniques designed to disguise your code from hackers without interfering with its execution.
Data obfuscation scrambles data via tokenization or encryption to make it unreadable to hackers.
Obfuscating your code makes it look like unusable nonsense to hackers. There are many ways to obfuscate your code, and your hardening process should use a layered approach to make it harder to crack. At PreEmptive, we employ various obfuscation techniques to provide a high level of security.
Our DashO security application provides passive hardening through the following types of code obfuscation:
This technique changes method, variable, and code element names to meaningless characters, making reverse engineering much harder.
Even when you rename your methods and variables, your strings may still be discoverable. String encryption provides an additional layer of security to your software by making it harder for threat agents to decipher and understand.

Obfuscating your data and code isn’t enough to secure your Android app. You also need to use active hardening to protect against runtime attacks. Some of the methods DashO uses to deflect runtime hacking attempts include:
You can prohibit or modify your app’s behavior if it detects an unauthorized attempt to gain access.
Jailbreaking a device compromises the security of your app. Control whether your app runs on a rooted device and how it responds.
Running an app in an emulator allows a hacker to understand and analyze its functionality in a controlled environment. DashO can detect when your app is running in an emulator. You can decide whether or not your app will run in an emulator and how it will respond if it does.
Hackers use hooking frameworks to modify your app at runtime without altering the binaries. If DashO detects a hooking framework, the app can respond by shutting down, throwing an exception, or sending an alert, among other options.

To protect your Android app from ever-evolving cybersecurity threats, you must take a multi-pronged approach. However, hardening your app is pointless if your app breaks as the runtime platform evolves. At PreEmptive, we constantly monitor, test, and upgrade our solutions to protect your app from runtime issues and respond to new hacker threats and tools.
Your organization can’t afford the expense, exposure, or potential brand damage associated with an app hack. Contact us today to discover how our solutions can integrate with your current DevOps practices to provide the security and protection you need.