[Sécurité] Empêcher son app d'être crackée.
Human-Behind
Membre
Bonjour à tous,
Alors voila j'ai mis ma premiere application sur l'appstore (il ne reste plus qu'a attendre que apple la valide). Mais j'ai deux petites questions qui me trottent dans la tête, la premiere est :
Est-il possible d'empecher son app d'être crackée, ou du moins de rendre le cracking difficile ?
La deuxieme question qui en découle :
Rendre le cracking difficile n'est- il pas une perte de temps, car quand on voit que les grand major de la distribution style EA se font cracker des jeux (ex : les sims 3) dés la sortie on peut se poser des questions quand à l'efficacité de la sécurité mis en place ?
Tout liens, documents sur le sujets m'interesseront (qu'ils soient en english ou en french).
Merci d'avance et have a good day !
Alors voila j'ai mis ma premiere application sur l'appstore (il ne reste plus qu'a attendre que apple la valide). Mais j'ai deux petites questions qui me trottent dans la tête, la premiere est :
Est-il possible d'empecher son app d'être crackée, ou du moins de rendre le cracking difficile ?
La deuxieme question qui en découle :
Rendre le cracking difficile n'est- il pas une perte de temps, car quand on voit que les grand major de la distribution style EA se font cracker des jeux (ex : les sims 3) dés la sortie on peut se poser des questions quand à l'efficacité de la sécurité mis en place ?
Tout liens, documents sur le sujets m'interesseront (qu'ils soient en english ou en french).
Merci d'avance et have a good day !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Sur ce point, je suis complètement d'accord. Il n'y a pas de moyen valide pour empêcher le piratage. Donc, je serai plutôt d'avis de peser sur la validité de ton application avec un pris correct. Sachant qu'il y aura toujours des profiteurs et que les app qui se font vite pirater sont aussi celle qui se vendent bien.
Moi je ne perdrais pas mon temps avec ça.
1- Tout les chateaux forts ont été pris! je dis bien: tous!
2- "ce que j'imagine, un autre pourra le réaliser" Jules Verne!
Donc il n'y a aucun remède miracle. Suivant la complexité du vérrouillage et le nombre de gens qui trouve ton programme intérressant, les clés seront déterminées dans un temps plus ou moins long.
Il me semble qu'il y a des éditeurs qui vendent des solutions de vérrouillage.
- Pour une appli simple sans prétention, ce n'est pas forcément utile de mettre une protection, plus de soucis qu'autre chose.
- Pour une appli qui pense avoir un peu de succès mais sans prétendre avoir un succès fou, une petite protection simple est utile. Dans ce cas pas la peine de prévoir une sécurité super complexe à craquer car ça va te prendre beaucoup de temps à développer pour pas grand chose
- Pour une appli vouée à un gros succès (grosses entreprises déjà connues, etc), une grosse protection peut être utile, car plus elle est compliquée plus ça va décourager les pirates du dimanche, mais en gardant à l'esprit que de toute façon y'a les pirates "experts" qui maitrisent toutes les techniques et finiront par cracker l'appli.
Au final si tu passes 2 mois à mettre au point un système pour protéger ton appli d'une façon que tu penses super costaud... et qu'elle a du succès, donc va être le crible des pirates expérimentés, et risque d'être quand même craquée au bout de 2 mois, avec limite un patch ou un code que les pirates vont alors fournir sur le web à tout le monde... Tu vas voir 2 mois de boulot anéantis en peu de temps.
Donc c'est pas non plus la peine de se tuer à la tâche pour ça. Une protection minimale est bien souvent plus adaptée du coup, ça décourage juste Mme Michu ou le pirate du dimanche qui ne sait que modifier une valeur dans un fichier caché pour déverrouiller une appli, mais tu pourras rien d'autre face aux pirates expérimentés de toute façon, alors...
Le principe est le suivant :
- la première fois que l'utilisateur lance l'appli, j'écrit son UDID dans un fichier texte
- à chaque fois que l'utilisateur lance l'appli, je vérifie que son UDID correspond bien à celui du fichier et si oui on lance l'appli.
Comme la plupart du temps, les iPhone jailbreaked crack les appli et les upload sur des serveurs où tous les autres peuvent les téléchargées. Avec ce moyen, l'appli de l'utilisateur 1 qui va être téléchargée par l'utilisateur 2 aura le fichier contenant le UDID de l'user 1, et en comparant on verra que ce n'est pas le bon.
Bha fait vite une mise à jour qui retire ça... parce que si je m'achète un nouvel iPhone.. j'aurai une UDID différente.. et je pourrai plus utiliser ton application alors que je l'ai acheté..
Et franchement avec toutes les apps qui circulent sur l'app store... les hackers auront pas forcément vu passer ton appli.
Si elle rencontre un succès fou, tu t'en devrais t'en fiche totalement parce que le nombre de personne qui ont jailbreaké l'iPhone n'est pas si élevé que ça comparé à ceux qui ont un iPhone "propre".
Pour mon premier shareware sur Mac j'avais fait une sécurisation de fou.. meme si y'avait des cracks, aucun d'eux ne marchaient.. et pourtant pour mon prochain j'ai mis une sécurisation vraiment bas niveau, juste parce que sur Mac il en faut forcément une.. mais sur iPhone jamais je m'embêterai avec ça, jamais!
Le pirate, même pas très malin, livrera avec l'appli un 'générateur de code' qui remplacera directement dans le fichier texte l'UDID présent par l'UDID de l'utilisateur 2. C'est évident! Il suffit de se balader sur les réseaux pour trouver ce genre de code.
Je connais bien plus compliqué! avec le n° MAC de la machine, le nom de l'utilisateur et la date, le programme calcul un code à téléphoner au fabricant. Celui-ci renvoi immédiatement le code à entrer dans les 24h pour valider l'utilisation du programme! Le tout basé sur l'utilisation de 2 polynomes à 12 composantes dont les coéfficients sont pris dans les données citées ci-dessus pour le premier et dans la clé renvoyée par le fabricant pour le 2ième. A chaque lancement un algorithme vérifie l'égalité entre les deux calculs, sachant que les 2 résultats évoluent avec la date du jour!
Eh bien le pirate a juste inversé le test en sortie ('Branch if equal' en 'branch if non equal') et n'importe quel code était déclaré bon! Donc, un simple patch était suffisant.
Cette exemple date de 8 ans!
Haha excellent
Et puis oui, comme je l'ai appris, c'est toujours le jeu du chat et de la souris.. le truc qui emmerde bien les utilisateurs (même les utilisateurs pirates), c'est de pas pouvoir faire des mises à jour tranquillement. Une banlist dans une NSArray est pas plus mal (je parle toujours sur Mac )
Par contre en te relisant, apocaalypso, je me rend compte que j'ai peut-être dit une bêtise?
Si j'ai bien compris, tu écris un nouveau fichier avec l'UDID de l'utilisateur, dans le bundle de l'application? (d'ailleurs je pensais pas que c'était faisable ça d'écrire dans le bundle de l'app sur iPhone.. déjà que c'est déconseillé sur Mac.).
Si c'est bien ça, ce que j'ai dis est faux puisqu'avec iTunes & l'iPhone je doute qu'il y est une synchronisation des modifications d'une application (mise à part si elle a été mis à jour). Donc si j'achète un nouvel iPhone, j'aurai bien ton appli toute neuve sans être traité de pirate
Donc désolé si j'avais mal compris
Maintenant je ne suis pas sûr que ton exemple marche pour iPhone.
- Bon déjà , même si c'est pas infaisable, faire du step by step sur un device (comme l'iPhone) et non sur un ordi (comme le Mac), c'est à dire auditer un exécutable qui se trouve sur une autre machine depuis une première machine, c'est moins pratique. Rien ne l'empêche, on peut bien faire du debug sur l'iPhone, mais bon c'est juste un peu plus casse-c....tête.
- Mais surtout, les applications iPhone sont signées. Et cette obligation n'est pas anodine de la part d'Apple d'ailleurs puisque ça leur permet aussi de vérifier l'intégrité des applications, et donc aussi qu'on ne peut pas modifier une application après coup, ce qui pourrait permettre de faire valider une appli pour la mettre sur l'AppStore...et la modifier ensuite à la volée.
Bon, après, sur un iPhone Jailbreaké, je connais pas tous les détails, le CodeSigning est peut-être désactivable ? Mais en tout cas à mon avis c'est une sécurité en plus limitant les possibilités de modification d'une appli, non ?
:P D'ailleurs, s'il existait une méthode sure, tout le monde l'emploierait et les pirates seraient au chomâge!
Sinon, je me demande si l'AppStore vérifie la légalité des applications, lors de l'utilisation du Store Kit.
Je sais pas, pour cracker une app il est nécessaire d'avoir un iPhone jailbreaké, or il n'y a que les personnes s'y connaissant un tant soit peu qui ont recours à ça. Je me rappelle d'un post de iPhon.fr qui faisait un pourcentage iPhone Jailbreaké/non jailbreaké et le résultat était assez clair : < 90 d'iPhone non jailbreakés.
Il est désactivé...
Il y a un post très intéressant qui parle du taux de piratage de solutions etc ici
http://www.icombatgame.com/2009/05/08/my-experience-getting-owned-by-app-store-pirates/#more-609
Il y a une mention d'une technique qui semble simple et performante
http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html
Mais je n'ai jamais essayé.
De manière personnelle je pense pas que le piratage soit vraiment un grand mal (surtout pour des développeurs peu connus), ça fait connaitre l'application (augmente le page rank...) etc. et au final surement les ventes aussi
Et aprés reflexion, je pense que yodark ne doit pas avoir tord :