La protection anti-piratage d'Android mise à mal

Il y avait une protection sur Android ? 51
Fin juillet, Google introduisait un système de validation des applications Android, proposant aux développeurs une méthode simple pour déterminer si l'utilisateur d'une application l'a effectivement achetée. Cette technique de protection, dont le code est open source, va remplacer en quelques mois le dispositif anti-copies utilisé jusqu'alors. Un serveur de validation a été mis en place, et un SDK a été communiqué aux programmeurs, incluant quelques exemples de code type.

android market

Le problème est que beaucoup de créateurs d'applications Android se sont contentés de copier/coller ce code et de l'intégrer dans leurs Apps. Justin Case, qui développe des applications pour Android et contribue occasionnellement au site Android Police, a dévoilé en début de semaine qu'à cause de cette implémentation un peu rapide, la plupart des applications protégés par cette vérification des licences pouvaient être facilement piratés :


La méthode est simple : les applications Android sont généralement codées en Java. Pour des raisons de compatibilité entre plusieurs plateformes, le code est souvent facilement accessible. Un décompileur comme Baksmali permet donc de regarder le code, de trouver les lignes vérifiant la validité de l'application, et de tout simplement changer un paramètre pour faire croire à l'application qu'elle a été validée. En recompilant le code avec Smali, et en le signant avec une clé valide (même une clé de test), le programme est désormais patché et peut être installé illégalement sur tout téléphone Android.

Justin Case affirme que « cette méthode est tellement simple que même un programmeur novice pourrait créer un script capable de patcher la plupart des applications Android ». Loin de vouloir favoriser le piratage, M. Case explique qu'il révèle cette faille pour inciter les développeurs à mettre plusieurs couches de protection dans leurs programmes, et à personnaliser le code donné par Google pour implémenter la validation depuis le serveur. Il explique d'ailleurs que selon lui « le Service de Licences de Google reste la meilleure option pour la protection anti-copies ».

Réaction de Google

Tim Bray, employé de Google représentant l'équipe s'occupant d'Android, a publié sur le blog des développeurs Android une réponse à cette révélation. En particulier, il rappelle que le code donné par Google était une version simplifiée au maximum, destiné à la compréhension, et n'était pas censé être utilisé tel quel. C'est aux programmeurs de protéger leurs applications, Google ne fournit que des outils.

Du coup il conseille également aux développeurs d'obfusquer (obscurir) leurs codes. Il s'agit de techniques permettant de rendre une décompilation beaucoup plus difficile. De quoi éviter que des petits malins ne puissent trop facilement transformer une application pour en contourner les protections.

Enfin, il rappelle que « une protection anti-piratage efficace à 100% n'existe pas sur un système qui autorise du code venant de tierces parties. Mais le Serveur de Licences, quand implémenté correctement, est conçu pour augmenter significativement le coût et la difficulté du piratage ».

Dans une réponse à la réponse de son article, Justin Case se défend d'avoir voulu publier un "guide de piratage pour pirate débutant", expliquant qu'au contraire il veut attirer l'attention de ses collègues développeurs sur une pratique trop peu sécurisée.

Un autre problème du Google Market

Le plus gros problème pour les développeurs voulant vendre leurs applications Android est le peu de pays où elles sont légalement disponibles. Seuls les utilisateurs de 14 pays peuvent payer des applications. Et seuls les développeurs de 8 pays peuvent les vendre...

En attendant que ce marché devienne réellement global, les propriétaires d'Androphones des autres pays seront obligés de pirater ces applications s'ils les veulent.