Fin juillet, Google a mis à disposition des développeurs Android, un service gratuit baptisé "Licensing Service For Android Applications", qui permet grâce à une bibliothèque supplémentaire, de valider directement auprès du serveur de Google, si l'application possède une licence valide ou non. En fonction de ce retour, l'application est rendue accessible ou pas.

Vous l'aurez compris, le but de ce service est d'éviter au maximum le piratage d'application, car jusqu'à présent, il était relativement simple d'échanger ses APK avec ses amis, ses collègues ou l'internet mondial de l'univers en entier...

Mais c'était sans compter sur Justin Case, un chercheur en sécurité, qui a mis au point une technique pour déjouer cette validation de licence. Comme la LVL (Licence Verification Library) est une bibliothèque externe, elle est intégrée directement à l'application java lors de la pré-compilation. En desassemblant cette dernière avec un outil comme baksmali,  il devient alors très simple de trouver la classe LicenceValidator et de modifier la condition de validation. (Vous trouverez tous les détails et explications sur ce site. Je ne rentre pas plus dans le détail volontairement.)

Ensuite, il suffit de recompiler l'application avec smali, de repackager le .apk en le signant avec une clé valide et le tour est joué...

Vous l'aurez compris, ça partait d'un bon sentiment mais ce n'est pas du tout suffisant pour endiguer le piratage sous Android. Pour Justin, qui travaille sur le sujet, des solutions comme le contrôle des modification du .apk, ou une vérification que l'appli a bien été installé via l'Android Market sont des solutions à creuser.

[Source]