Je dois utiliser une sorte de licence sur certaines applications Linux pour lesquelles je n'ai pas accès à leur base de code.Lancement/Licence de l'application Linux de contrôle
Ce que je pense est d'avoir un processus séparé lire la clé de licence et vérifier la disponibilité de cette application. Je devrais alors m'assurer que le processus est exécuté pendant chaque invocation de l'application respectée. Existe-t-il une fonctionnalité de Linux qui peut aider à cela? Par exemple quelque chose comme le fichier sudoers dans lequel je détecte quel utilisateur et quelle application tente d'être lancée, et si une combinaison est satisfaite, exécutez d'abord la vérification du processus de licence.
Ou puis-je faire quelque chose comme permet pas à l'utilisateur de lancer l'application (ligne de commande) par lui-même, et les forcer à la conduite à mon processus de licence afin:
/usr/bin/tm | license_process // alors que '/ usr/bin/tm' échouerait tout seul
Cela est probablement une violation du droit d'auteur sur la «vraie» application si vous n'avez pas le consentement explicite du détenteur des droits d'auteur. –
"utiliser ld pour renommer la fonction principale ..." - d'abord "ld" ne peut rien faire pour un exécutable déjà lié, et deuxièmement, renommer "main" serait complètement inutile: son adresse est déjà enregistrée comme l'appel cible que '_start' appellera. –
Un peu fatigué quand j'ai écrit ça à propos de ld, ce que j'essaie de faire est de lier l'application avec un morceau de code qui fera les vérifications, je suis d'accord avec vous (@EmployedRussian) que la plupart des façons sont inutiles contre un attaquant compétent en programmation. mais c'est mieux que n'importe quel type de processus séparé. @EmployedRussian Que pensez-vous de l'utilisation d'objcopy pour inclure l'application réelle dans l'encapsuleur et changer le pointeur d'instruction si les vérifications échouent, sinon quitter. –