Aide - Recherche - Membres - Calendrier
Version complète : Sharewares ... et protections ...
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
Khertan
Bonjour,

Je cherche actuellement un moyen de protéger un shareware (kLauncher) ... bien qu'il serait utopique de penser qu'il ne sera pas piraté ... je cherche une solution qui est à la fois peu contraignante pour l'acheteur et contraignante pour le pirate.

Voici donc les différentes méthodes auxquelles j'ai pensé :

- Protection par nom de synchro, couplé à un numéro d'enregistrement : contraignant pour l'utilisateur, cette solution ne l'est pas pour les warezeux qui grace à un programme appelé MultiUser Hack permet de faire croire a l'appli un autre nom de synchronisation.

- Numero d'enregistrement ... il suffit au pirate de se passer le numéro pour déverrouiller le logiciel.

- Protection par numéro de serie, couplée à un numéro d'enregistrement : très contraignant pour l'utilisateur (le numéro de serie d'un palm est plutot long, mais surtout il ne souhaite peut etre pas pour des raisons de confidentialité livrer celui ci), et puis un patch pour les warezeux peut contraignant.

- Un dongle SD ... hum ... je n'ai pas les moyens de mettre en oeuvre une telle solution pour un petit shareware.

- Un fichier contenant le numero d'enregistrement calculé en fonction d'un checksum numero de serie ... simple pour l'utilisateur ... mais coté pirate je ne pense pas que cela soit tres contraignant.

et bon ... pour le moment je ne vois rien d'idéal, si quelqu'un a une idée ...
snark
De toute façon, quelle que soit la solution implémentée, elle pourra être contournée. Ce n'est qu'une question de temps, et d'intérêt pour ton application.

C'est pour ça que je fais du freeware! anim_wink.gif

Désolé pour cette réponse qui n'en est pas une... icon_bla.gif
Khertan
Bah ... que dire sur ta réponse ... "Désolé pour cette réponse qui n'en est pas une..." ...

perso pour moi lorsque tu dis cela : "De toute façon, quelle que soit la solution implémentée, elle pourra être contournée. Ce n'est qu'une question de temps, et d'intérêt pour ton application." c est une réponse ...

Enfin bref ...

Sinon oui tu as raison ... il n'y a pas de solutions ultime ... tout ce que je souhaite c est les faire ch.er le plus possible sourire.gif
stipus
Et pourquoi ne pas coder une clé publique RSA dans ton code ... tu la cache bien (en plusieurs morceaux cryptés avec un algo bidon à toi), et tu vérifies un peu partout que personne n'y a touché.

Ensuite lors de l'enregistrement tu récupères le no de série + le no de hotsync. Tu fais un hash du tout... et tu te fais communiquer ce numéro en même temps que le règlement.

Avec ta clé privée (celle là tu la garde chez toi, tu ne la donnes à personne) tu crypte le hash, et tu renvoies le résultat en tant que code d'enregistrement.

A chaque démarrage du programme, tu reconstitues la clé publique, tu décrypte le code d'enregistrement, tu recalcules le hash du no de série + hotsync, et si ça correspond c'est OK.

Ensuite le truc c'est de bien vérifier que ton code n'a pas été modifié (tu fais ça aléatoirement, après au moins 24H de fonctionnement du launcher, dans une fonction avec un nom anodin... le mieux est de faire ça inline et de recopier ce bout de code un peu partout. Tu fais plusieurs couches de vérification qui se déclenchent l'une après l'autre avec un certain délai.

Quand tu vois qu'il y a un problème surtout tu ne réagis pas immédiatement...aucun message d'erreur immédiat. Tu sauves discrètement le fait que c'est piraté... (du style i>34, pas piratedBool=1) et aléatoirement à nouveau tu fais subtilement foirer quelques fonctionnalités du programme...

Tu peux aussi faire des fausses fonctions pour embrouiller le pirate. Tu le laisse croire que tu es un gros nul, et que tu as tout protégé avec un seul booléen du style registeredBool=1. Tu initialises ça à zero, tu le fais assigner par des fausses fonctions avec des algo de décryptage bidon dont le résultat est toujours 0, et si jamais il passe à 1... c'est que c'est piraté icon_lol2.gif

C'est la technique que j'utilise et elle offre de nombreux avantages:

1) C'est très chiant à pirater (mais evidemment rien n'arrête kkun de décidé et compétent)
2) C'est très long à pirater (le gars croit que tout est OK... mais pour le premier niveau c'est seulement 24H après (ou plus... je n'hésite pas à mettre 1 mois pour certains niveaux) que ça se déclenche... et encore très aléatoirement et subtilement... et puis si c'est un programme important tu peux faire 5 ou 6 niveaux de vérif qui se vérifient elles-mêmes.
3) Le pirate va diffuser un truc qui va être mal piraté et donc se décrédibiliser. Si tu assures il va devoir s'y reprendre à deux ou trois fois avant d'arriver vraiment à faire sauter tes protections. Le temps de ça, une grande partie des utilisateurs en aura marre et aura enregistré.
4) Les utilisateurs du forum qui ne comprennnent pas pourquoi il y a telle fonction qui foire aléatoirement chez eux, tu sais tout de suite qui ils sont anim_grin.gif

@@@+
stipus
Trudi
@ Khertan : Oui et non...

Je dois avouer que côté Palm je suis tout ce qu'il y a de plus en règle.

Par contre, dans le domaine pc...... hum..... icon_bla.gif Plus c'est protégé, plus c'est cracké... :p Pour moi c'est devenu un sport ! Mais effectivement si c'est un produit que j'utilise au quotidien, je l'achète ! D'ailleurs j'ai acheté une quantité phénoménale de sharewares et j'ai même fait des donations sur des freeware, car j'estime que le gars qui s'est donné de la peine de développer un truc bien mérite une rétribution.

Pour ton application kLauncher (que je vais tester tout soudain), si tu veux vraiment faire du shareware au lieu du cardware ou du freeware, je te suggère pour avoir une protection optimale contre 90% des pirates en herbe d'avoir la combinaison du nom de hotsync et du numéro de série de la machine...

@ stipus : ça c'est de la protection ! top.gif
Khertan
Stipus ... violent ... mais efficace ...

Lorsque je codais sur 68030 et 68040 à l'epoque j'avais trouvé une fonction mathematique qui n'avait pas le même resultat dans le debugger que normalement ... c'etait parfait ce genre de chose pour verrouiller ...

Mais ta solution me parait sympatique, si ce n'est qu'apres avoir decrypté ... le contenu se retrouve comparé ... donc avec un debuggeur ... tu sais de suite où patcher la chose.
Donc l'interêt de crypter perd tout son sens ...
Tharkun
CITATION(Khertan @ 09/03/2006 à 14:54 ) *
sur 68030 et 68040 [...]une fonction mathematique qui n'avait pas le même resultat dans le debugger que normalement ...
blink.gif Was it a bug or a feature ?
MarieC
Pas mal du tout ta méthode, stipus... complexe, mais efficace top.gif

CITATION
Les utilisateurs du forum qui ne comprennnent pas pourquoi il y a telle fonction qui foire aléatoirement chez eux, tu sais tout de suite qui ils sont anim_grin.gif

Ca me rappelle que feu Bozidar Benc, le très regretté auteur de LauncherX, avait imbriqué une protection du genre dans son logiciel...
stipus
CITATION
Mais ta solution me parrait sympatique, si ce n'est qu'apres avoir decrypter ... le contenu se retrouve comparé ... donc avec un debuggeur ... tu sais dessuite ou patcher la chose.
Donc l'interet de crypter perd tout son sens ...


C'est que tu n'as pas lu l'autre moitié du texte, qui consiste à vérifier à retardement si ça n'a pas été patché.

Mais bon tu me diras qu'il suffit de patcher le test, et de repatcher le test du test.. etc..etc. De toute façon sur sa machine le pirate est seul maître à bord, et personne ne peut l'empêcher de patcher.... sauf le temps. Si il s'aperçoit après un mois que son patch s'est fait découvrir, et que tous les utilisateurs de son patch l'ont dans l'os.... alors c'est lui qui est décrédibilisé. Le tout est de de vérifier l'intégrité du code avec un simple hash, à retardement. Le système de clé publique / clé privée c'est pour pas qu'un malin puisse faire un codegen. Le cryptage et vérification de la clé publique, c'est pour pas qu'un malin la remplace bètement avec la sienne, et utilise SA clé privée pour signer le code d'enregistrement.

Si ton programme est incontournable les pirates seront plus patients que toi.... si c'est un programme standard, tu as toutes les chances que le nombre de tests à retardement qui à chaque fois testent l'intégrité du test précédent 1 mois plus tard, fait que le pirate se lasse et passe à autre chose.

Parfois ça s'est retourné contre moi.... un programme mal piraté largement diffusé, qui foire de tout bord... et impossible de contrer le bouche à oreille comme quoi le programme est bugué. Maintenant j'ajoute des avertissements qui stipulent que toute copie piratée peut avoir des comportements aléatoire.

CITATION
Lorsque je codais sur 68030 et 68040 à l'epoque j'avais trouvé une fonction mathematique qui n'avait pas le même resultat dans le debugger que normalement


Oui ce genre de trucs est excellent. Je ne programme pas sur Palm ni sur Motorola, mais sur PC c'est systématiquement utilisé.... si un debogueur tel SoftIce est chargé, alors le mécanisme de protection suit un tout autre chemin et n'utilise pas les mêmes algorithmes. Donc le pirate en herbe passe 3 heures à pirater un algo par lequel le programme ne passera jamais si le débogueur n'est pas chargé anim_grin.gif

Mais de toute façon le pirate décidé et compétent est toujours plus fort. Le tout est de le ralentir et de le faire ch..r.
Khertan
Si si j'avais lu la deuxieme partie ... sourire.gif

Mais oui, le probleme d'incorporer volontairement des bugs dans une version pirate peut facilement se retourner contre le developpeur ... "bah c'est buggé" ...

Sinon j'avais pensé à un truc en code multisegment :

- Code 1 : test de non présence de NOP code. lancement du code 2 en le decryptant
- Code 2 : Routine de verification de checksum du code 3 cryptée avec pour clef le code 3
- Code 3 : l'appli en elle même

De cette maniere une si il modifie le code 3 ... bah on pete le code de l'applis sourire.gif ... si on touche à la routine de verif ... on pete la comparaison de checksum ...

vous en pensez quoi ?

bien sur avec quelques saloperie a retardement bien placé qui display un message puis quitte et autodetruit l'application ... sourire.gif

(par contre je me demande si cela ne va pas me mettre plus de temps a mettre en place la protection que le developpement du programme ... ca fait un peu lourd je trouve pour un shareware a 10 Euros ... Pis de toute facon ... ca va peut etre pas marcher comme application et puis ca n'interessera personne et personne ne la crackera ... j'espere pas)


edit : concernant la protection antidebugger il s'agissait d'un bug sur le processeur en lui meme qui etait corrigé par le system mais pas en mode debug avec macbugs
poissonfree
Bah tu peux être plus vache!!!
Au bout de 3 tentatives, tu bloques le programme icon_idea.gif avec l'impossibilité de remettre un code!

Mais j'aimerais savoir quel est l'intérêt pour toi de faire payer l'appli ? :
- pour ton amour propre de l'argent
- pour payer ton serveur
- pour payer des impots quelcon.gif
- ....

Tu pourrais pas faire une version payante avec tout plein de paramétres et une autre avec un minimun de paramétres genre pas de fond d'écran, module de programmes uniquement ceux de la machine (en rom), .... ?




ninja.gif mais en freeware je serais p'être preneur siffle.gif
Khertan
Ben pourquoi payant ...

- Mon hebergeur web
- Mon palm, car malgres tout ... un codage intensif et donc une saisie intensive fait perdre la sensibilité du numériseur sur la zone graffiti.
- Pour le temps passé a développer mon applis ... (2 heures par jours / 5 jours par semaine / depuis Aout ... bon la dessus il y a eu un trou de deux semaine.)
- Pour payer les impots ... hum ... faudrait que je vende beaucoup plus cher ... 800 euros deja pour un petit appart d'impot locaux .... ouch ... heureusement que je ne suis pas propriétaire.

Pour une version gratuite ... hum je n'y ai pas encore reflechi.
pch4x4
si c'est payant > c'est imposable icon_cry.gif
à reglo; réglo et 1/2 siffle.gif
Khertan
oui c'est imposable ... mais comme je viens de changer de tranche ... ca ne fera pas plus mal ...
Tharkun
CITATION(stipus @ 09/03/2006 à 15:18 ) *
Mais de toute façon le pirate décidé et compétent est toujours plus fort. Le tout est de le ralentir et de le faire ch..r.
Je pense qu'il a trois catégories d'utilisateur :

- les super honnêtes, qui payent rubis sur l'ongle tous leurs logiciels y compris les sharewares illimités.
- les pirates qui cherchent toujours à pirater, soit en craquant eux-mêmes, soit en téléchargeant les cracks ou les version craqués
- les troisièmes qui achètent les logiciels commerciaux et qui parfois oublient de bonne foi de payer les sharewares. Un code d'activation leur permet de les rappeller à leur devoir. Ils ne chercheront pas à le craquer ou à trouver un version.

Personnellement, j'ai tendance à faire partie de la troisième catégorie qui je pense est largement majoritaire. Je paye parfois dès le premier jour si le logiciel est vraiment génial. Sinon, je teste un certain temps. Si rien ne ma rappelle que je dois payer, je peux oublier. Si le logiciel se bloque et que je l'utilise vraiment alors je vais payer et non chercher à pirater.
poolpy
Salut,

Je vais peut-être choquer mais je vais te donner un premier conseil : choisis un soft qui te plaît (un que tu as acheté si tu veux), installe les bons outils et cracke le. Tant que tu ne l'as pas fait, les pirates, ça restera la 3ème personne du pluriel et tu ne prendras pas les bonnes décisions...

Déjà, ça va te familiariser avec les outils utilisés par les crackers. Tu verras ce qui est vraiment pénible pour eux et ce qui ne l'est pas. Tu verras par exemple qu'en faisant un diff entre l'image mémoire d'un programme en version d'évaluation et un programme enregistré, on trouve immédiatement où sont les flags "piraté / pas piraté" - même si tu en as 17 exemplaires. ptdr.gif

Ensuite, tu vas te rendre compte qu'une fois que tu as mis le nez dans le code, tu n'as qu'une envie : parvenir au bout. Et c'est exactement ce qui fait que les protections du type "on va cacher 10 routines partout" ne tiennent pas. Je vois ça comme des teasers ou des encouragements criés au pirate "Tu brûles, allez, vas-y cours encore !" :p .

Pour le segment de code crypté, il suffit de lancer l'application dans l'émulateur d'attendre bien sagement qu'elle se charge et de re-sauvegarder le résultat. ptdr.gif Ca fait des patches un peu gros c'est sûr, mais tout y est...

Pour le test de l'environnement (check du code constructeur, exécution de code ARM qui ne sera évidemment pas émulé ou simulé), ça se désactive facilement, mais ça peut s'utiliser quand même de façon intelligente...

Pour la méthode de stipus, je ne vois pas trop l'intérêt de la clé RSA, puisqu'il y a au final une comparaison qui est effectuée entre f(regKey) et g(hotSyncID, serial). Cette comparaison est facile à faire sauter, indépendament de f et g... Donc c'est pas plus sûr que si l'on a regKey=rot13(hotSyncID). Le coup de "l'algo bidon à toi", ça s'appelle "security through obscurity", et personnellement, je n'y crois pas.

Autre note sur RSA: si l'algo de génération des clés est trop complexe, il ne tournera pas sur un serveur web. Cela t'exclut du mode de registration "HTTP post" utilisé par Motricity et Handango.

Là où la protection de stipus est vraiment forte, c'est avec l'anti-patching et les checksums. Rien de nouveau là-dedans, tout le monde l'a déjà fait sur Palm et s'y est cassé les dents. Il suffit de désactiver la routine qui fait le checksum, c'est encore plus facile si elle est en plein d'exemplaires sleep.gif

Enfin, bref, tout ça pour dire que cette escalade de protection, ça ne mène nulle part. De la même façon que les antibiotiques ne font que sélectionner les souches les plus résistantes, toutes ces techniques blindent les pirates.

Honnêtement, je pense que les gens qui ont des Palm ont assez de moyens pour acheter des programmes à quelques dizaines de dollars. Je pense que les utilisateurs de Palm qui cherchent un launcher à $15 ne vont pas apprécier l'idée d'aller le chercher sur un site avec du texte blanc ou vert sur fond noir, et d'installer des programmes de patch aux noms obscurs... Un executive payé $100 de l'heure ne va pas perdre 30 minutes à installer et faire fonctionner un patcheur...

Bien sûr, des types pas nets ou des gamins le feront, mais qu'est-ce que tu perds ? Il faut te dire qu'ils n'auraient pas, en l'absence du patch, acheté ton programme !

Le tout est en fin de compte de rendre ton programme suffisament protégé pour qu'un utilisateur honnête et prêt à payer (les autres, on s'en fout, ils ne te rapporteront jamais rien) n'aille pas chercher une version piratée...

L'objectif n'est pas 0 pirates, mais 0 pirates parmi les gens honnêtes qui ont de l'argent et qui peuvent payer. Et ce second objectif, ce n'est pas si difficile...

Et Snark n'est pas si hors-sujet en parlant du freeware... As-tu considéré le modèle gratuit + donation (les donateurs ayant accès aux betas et aux updates en priorité) ?
snark
CITATION(poolpy @ 10/03/2006 à 12:42 ) *
Et Snark n'est pas si hors-sujet en parlant du freeware... As-tu considéré le modèle gratuit + donation (les donateurs ayant accès aux betas et aux updates en priorité) ?

J'ai mis un bouton "" sur le site de mes programmes Palm: j'attend toujours la première donation rolleyes.gif icon_lol2.gif . Patrice disait il y a quelques temps avoir reçu très peu de donations pour MétrO, qui est quand même autrement plus répandu et réputé que mes softs.

Bref, si je fais du freeware, c'est surtout parce que développer sous Palm, ça m'amuse. Si mes softs plaisent à d'autres, c'est génial mais ce n'est pas le but premier. Il suffit de voir le succès (enfin, l'absence de succès) d'apMapper siffle.gif ...
pch4x4
après il faut voir si ça vaut vraiment le coup de vendre du logiciel palm aujourd'hui sous cette forme ...
si il faut monter tout un système; appli/contrôle/certification/authentification/anti pirate; pour gagner 10 exemplaires par an icon_cry.gif
snark
CITATION(pch4x4 @ 10/03/2006 à 13:15 ) *
après il faut voir si ça vaut vraiment le coup de vendre du logiciel palm aujourd'hui sous cette forme ...
si il faut monter tout un système; appli/contrôle/certification/authentification/anti pirate; pour gagner 10 exemplaires par an icon_cry.gif

Oui, tout à fait, il faut prendre aussi en compte cet aspect. Ca ne sert à rien de gaspiller des semaines de développement pour quasiment rien.
D2P
CITATION(snark @ 10/03/2006 à 13:10 ) *
J'ai mis un bouton "" sur le site de mes programmes Palm: j'attend toujours la première donation rolleyes.gif icon_lol2.gif . Patrice disait il y a quelques temps avoir reçu très peu de donations pour MétrO, qui est quand même autrement plus répandu et réputé que mes softs.

Bref, si je fais du freeware, c'est surtout parce que développer sous Palm, ça m'amuse. Si mes softs plaisent à d'autres, c'est génial mais ce n'est pas le but premier. Il suffit de voir le succès (enfin, l'absence de succès) d'apMapper siffle.gif ...

+1. Comme toi, je n'envisage pas de développer autre chose que des freewares. Juste pour le plaisir de programmer, et la satisfaction est alors de voir son soft sur tous les Palms. Et moins il est cher, plus il a de chance d'y être anim_wink.gif
stipus
Il y en a dont c'est le métier aussi... ou alors dont ce n'est pas le métier mais qui voudraient se lancer.

Effectivement monter toute une infrastructure pour vendre 10 copies à 10$ ça ne vaut pas le coup... et il vaut mieux que le programme soit freeware.

Mais si tu comptes en vendre 1000 ? Ca fait déjà 10.000$ ?
Et si ton programme est vraiment génial et incontournable et que tu comptes en vendre 30.000 (voir DateBk5...).... Ca fait alors un petit matelas confortable de 300.000$ qui n'est pas négligeable ... et dans ce cas ça vaut vraiment le coup d'investir un minimum pour avoir une protection efficace.

Dans ce cas il est intéressant de prévoir d'avance la politique de release des nouvelles versions, et d'avoir un ago de protection que tu peux rapidemment faire tourner / interchanger à chaque release... Comme ça si le pirate doit y passer 3 jours tous les mois ça va le gonffler aussi.

@@@+
stipus
snark
CITATION(stipus @ 10/03/2006 à 13:27 ) *
Dans ce cas il est intéressant de prévoir d'avance la politique de release des nouvelles versions, et d'avoir un ago de protection que tu peux rapidemment faire tourner / interchanger à chaque release... Comme ça si le pirate doit y passer 3 jours tous les mois ça va le gonffler aussi.

Oui mais bonjour pour s'assurer que ça ne va pas causer de problèmes aux utilisateurs légitimes. C'est l'ironie des protections en fait: elles embêtent plus souvent les utilisateurs qui ont acheté le logiciel que ceux qui sont passés outre en utilisant une version crackée.
poolpy
Ah oui j'oubliais (et un peu pour rebondir sur les messages précédents) :

Au lieu de passer 10 heures à mettre en place un système de protection, tu peux passer 10 heures à travailler sur :
- un beau site pour promouvoir ton soft.
- des descriptions attrayantes pour les sites qui vont le diffuser.
- une "press release" pour annoncer la sortie de ton soft sur les sites genre palmboulevard...
- des contacts avec des gens qui écrivent des reviews sur des blogs ou des sites de news...

A quoi bon avoir un soft super protégé si tu n'as fait aucun effort pour le promouvoir... La protection t'évite de perdre des ventes... mais un peu de marketing peut t'en faire beaucoup gagner !
Khertan
Alors ... ma solution envisagé ... apres moulte reflexions et lecture de vos avis.

- Une protection peu chiante pour les utilisateurs ... un code généré sur le palm ... donne un code d'activation ...

- Une protection minimaliste pour les pirates ... car en fait je n'ai pas envie d'y passer des heures pour pas grands chose ... mais comme le dit poolpy ... il y a d'autre chose à faire.

- Le promotion du software est presque au point ... reste à finaliser le soft en lui même et le debugger... d'ailleurs on m'a reporté un problème sur lifedrive ... et j'aimerais bien avoir plus d'informations que ca plante... car je ne peux faire tourner le simulateur (car dispos seulement sous windows et il plante sous wine).

La priorité etant ne pas poser de problème aux utilisateur ayant payé.

Quand aux fait de cracker un soft pour connaitre les methodes... j'ai pas attendu tes conseil ... je me suis fait la main ... et est deja infiltré une petite communauté efficace de patcheur, (qui ont fait sauté doc2go 8 par ailleurs).

En tout cas ... merci de vos réponses trés interessantes.

J'ai par ailleurs trouvé une documentation chez palm des différents type de protections, et leur contournement.
Payalba
CITATION(Khertan @ 10/03/2006 à 14:20 ) *
Quand aux fait de cracker un soft pour connaitre les methodes... j'ai pas attendu tes conseil ... je me suis fait la main ... et est deja infiltré une petite communauté efficace de patcheur, (qui ont fait sauté doc2go 8 par ailleurs).

icon_cry.gif Et tu t'en vantes ! Pas bien
Khertan
Me vanter de ? D'avoir cracker une applis et appris comment il s'y prenne ? Ca me derange pas le moins du monde ... surtout que j'en ai profiter pour avertir plusieurs developpeur ... et que celle sur laquelle je me suis fait les dents n'est jamais sortie en version cracké de mon palm et je l'ai mêemme pas utilisé et l'ai supprimer ...
poissonfree
Même si c'est pas top, je dirais que si on sait comment cracker une appli on peut arriver à créer une appli hyper chiante à cracker anim_wink.gif
dga
CITATION
Même si c'est pas top, je dirais que si on sait comment cracker une appli on peut arriver à créer une appli hyper chiante à cracker


Je suppose que tu veux dire par là "hyper excitante à cracker" !
(pour ceux que ça amuse, évidemment...)

Damien
poissonfree
Oui : car tu veux montrer au programmeur qu'il y a des failles dans son programme
anim_wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.