In response to growing concerns among third-party developers about Android application piracy, Google recently released a new framework called the License Verification Library (LVL). It is intended to make it easier for Android applications to verify that the user is authorized to run the software. The framework is still at an early stage of development, however, and has already been shown to be susceptible to a trivially simple attack.
The LVL is technically not part of the actual Android operating system--developers who want to use the framework compile the library into their own applications. The standard verification implementation offered with the framework relies on a validation service operated by Google that integrates with the Android market, but developers can modify the library to make it use alternate verification methods.
In a report published by the Android Police blog, third-party Android application developer Justin Case explained how pirates can circumvent the LVL protection mechanism by using a simple decompilation tool. He says that applications using LVL can be disassembled and patched to make them consistently appear to have passed the validation check. Once patched, users can simply sideload the application package onto an Android device and use it without paying. Users don't even need to root their devices in order to run the pirated software.
He believes that it would be possible to build a tool that can automatically patch applications that use LVL, rendering the system ineffective. Despite the weaknesses of LVL, he acknowledges that it is an improvement over previous antipiracy systems for Android software and is currently the best solution available for the platform.
Google Android evangelist Tim Bray responded to Case's concerns in a post on Google's official Android blog. He says that the sample verification code supplied with the LVL framework wasn't really intended to be used unmodified. Because it was created to demonstrate how to use the framework, it was deliberately written with an emphasis on simplicity rather than robustness. Bray also contends that the sample applications compromised by Case didn't use robust code obfuscation, which would have made it considerably more difficult to compromise the software.