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.
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.

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

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é) ?