2010-01-28 3 views
3

Ma recherche google m'a conduit ici: How to create a virtual file? Dans cet article, les gens ont suggéré à l'auteur d'extraire le fichier dans un répertoire temporaire et de travailler avec lui à partir de là. En fait, ce que je voudrais faire, c'est quelque chose de similaire à ce que l'auteur demandait à l'origine - créer un fichier "virtuel" et lui assigner un "chemin", tel qu'il serait compréhensible par d'autres applications appelant des fenêtres standards API de système de fichiers. Le but de ceci est d'empêcher la copie et l'utilisation non autorisée.Créer un fichier "virtuel" et l'exécuter

Un concept de ce que je voudrais faire:

Dans notre entreprise, nous avons mis au point un programme - mais ce n'est pas une application EXE standard, il a un format interne (supposons que l'extension est le format « application » est .MDL) et est exécuté par l'environnement d'exécution, de sorte que le moteur d'exécution doit être installé sur l'ordinateur client. Ce concept est similaire à Java (bien que ce ne soit pas Java, il suffit de comparer, pour que vous puissiez mieux comprendre). Ce que je veux faire maintenant, est de crypter ce fichier .MDL et l'inclure comme une ressource dans un fichier .exe régulier. Ce fichier .exe vérifie s'il est bon de s'exécuter (vérifiez les conditions de licence, les clés, l'autorisation etc ...) puis, s'il est authentifié, décrypte et extrait le fichier .MDL, exécute le runtime et transmet le chemin virtuel du .MDL fichier en tant qu'argument à l'exécution. Pour des raisons évidentes, je ne veux pas écrire le fichier .mdl décrypté quelque part sur le disque, car quelqu'un pourrait simplement démarrer l'application, attendre que le décrypteur écrive .MDL sur temp, le copier depuis le temp et le distribuer.

Alors, une idée de comment faire cela? PS: Je me suis inspiré des jeux EA Games ... lorsque vous les exécutez et regardez dans votre table de processus, vous voyez un exe de jeu régulier, et, après un certain temps, il engendre un nouveau processus avec un nom comme ~ A003 .tmp

+1

Vous vous rendez compte que cela n'empêchera personne qui veut vraiment casser votre programme, n'est-ce pas? –

+1

oui .. la solution est de l'écrire en "mémoire", mais cela n'empêche pas vraiment un super-utilisateur de trouver les données décryptées et de les sauvegarder quelque part. – mlathe

Répondre

1

Je ne connais aucune méthode permettant d'associer un fichier virtuel à un chemin sans utiliser un type de composant de pilote; C'est un travail difficile.

Pourquoi n'avez-vous pas le runtime pour effectuer le déchiffrement? Ensuite, vous n'avez pas à vous soucier de décrypter le fichier sur le disque. Ou vous pouvez créer un objet de section héritable non nommé dans lequel décrypter l'élément et transmettre la valeur du handle à l'environnement d'exécution en tant que paramètre de ligne de commande. Quoi que vous fassiez, les gens seront toujours en mesure de le contourner, ce qui me semble une perte de temps. Chaque jeu EA jamais fait a été fissuré; les gens penseront que votre produit est utile et vaut l'argent ou ils ne le feront pas. Je ne pense pas que cela vaut la peine de consacrer du temps ou des efforts à la mise en œuvre de schémas plus compliqués qu'une vérification très simple de la clé d'enregistrement (juste pour donner l'impression que vous avez fait quelque chose).

4

Vous devez utiliser packedapp packer. Cela doit aider.

+1

bonne app. Je l'utilise aussi. – z0r1fan

Questions connexes