2010-09-23 10 views
1

Je crée une application .NET (WPF) et la compile en .EXE. Ensuite, je crée un deuxième projet, et ajoute une référence au .exe compilé, je peux voir toutes les classes et formes, et peut les utiliser pour l'automatisation, etcApplication .NET 'privée'

Je veux empêcher d'autres personnes d'utiliser mon compilé. exe comme un .dll, donc j'ai changé tous mes cours en 'ami' au lieu de 'public', mais cela ne fonctionne pas pour les formulaires (wpf). Et chaque fois que je crée une nouvelle classe, je dois me souvenir de la changer en 'Friend'. Donc, y a-t-il une meilleure solution pour empêcher que votre application soit utilisée comme une DLL? Je suis conscient que .NET est facilement décompilable, et que les modificateurs d'accès peuvent être modifiés par un «cracker» déterminé. Mais je veux seulement faire un peu plus difficile, que d'ajouter une référence.

Peut-être que j'aurais dû formuler ma question différemment: Comment puis-je faire toutes les formes/classes dans mon projet «ami», sans le spécifier pour chaque élément.

+0

Copie possible: http://stackoverflow.com/questions/3769226/reflection-is-possible-on-obfuscation –

Répondre

3

Vous ne pouvez pas faire grand-chose en fin de compte; la réflexion vous permettra de contourner toutes les déclarations d'accès que vous faites.

Vous pourriez obscurcir votre code pour le rendre plus difficile à comprendre et donc à utiliser, mais il ne protégera pas contre une intrusion déterminée.

+0

Êtes-vous sûr à 100% ?, Je suis tombé sur http://msdn.microsoft.com/fr -us/library/wd40t7ad.aspx. Assemblages nommés forts. Avant. Net 4.0, ils ont été facilement contournés, mais à partir de 4.0, ils devraient être fiables. Je vais en lire plus à leur sujet, et si ce n'est pas une solution, j'accepterai votre réponse. Merci. – Muis

+1

@Drazic: Les assemblys nommés forts garantissent seulement qu'ils et leurs références n'ont pas été modifiés. Tout le monde peut référencer un assembly fortement nommé et utiliser ses types déclarés. – Randolpho

+0

Merci Randolpho, mais si je fais tout 'ami' et puis fort nom de mon assemblée, ne serait-ce pas résoudre le problème? – Muis

2

La meilleure façon de le faire est de mettre quelque chose dans l'accord de licence de l'utilisateur final en disant que ce n'est pas autorisé.

Changer un cours en ami n'empêchera pas quelqu'un de l'utiliser s'il le veut vraiment. Tout ce qu'ils ont à faire est de modifier la DLL pour rendre la classe publique et votre système de protection a échoué.

+0

Habituellement, je déteste les CLUF et tout ce qu'ils représentent, alors je ne peux pas croire que je suis d'accord, mais ... un CLUF peut être une bonne précaution, juridiquement parlant. +1 – Randolpho

+0

Merci Mark, mais si quelqu'un est vraiment déterminé, il peut même extraire le code. La seule chose que je veux est de le rendre plus difficile, que d'ajouter une référence. – Muis