سؤال

لدي .NET DLL (C # / VB) مع عناصر تحكم مخصصة، وملحق وغيرها من الأشياء.

أريد أنه يجب أن تكون متاحة بالنسبة لي فقط. هل هناك أي طريقة لتقييد الوصول غير المصرح به إلى DLL؟

هل كانت مفيدة؟

المحلول

أفضل خيارك هو حزمة / تشفير / obfuscate DLL كما أشار أنتون. ثم نصلي من أن لا أحد سوف يذهب من خلال مشاحنات تفريغه.

المصطلح المعتاد لهذا هو ببساطة "التعبئة".

هذا هو ما يفعله مطوري اللعبة مع f.ex سوني Securom..

ولكن جميع برامج التعبئة لديها نفس العيوب:

  1. يمكن أن تكون عكسية مهندسة ويجب أن يكون مفتاح التشفير في الثنائي
  2. وعادة ما تكلف المال، وأولئك الذين لا (UPX.) تفريغ بسهولة.
  3. يمكن تقديم مشكلات غير توافق منصة من خلال عملية التفريغ.
  4. الثنائيات المعبأة تميل إلى الخروج من مكافحة الفيروسات.

الشركات التي تستخدم الباظات عادة ما السفينة ثنائيات يجب أن تكون قادرة على تشغيل كل كمبيوتر شخص واحد. إذا كنت تعني ذلك حقا، فما أعتقد أنه يمكنك تشفير كل dll واحد يتم شحنها مع مفتاح فريد من نوعه، ثم يتطلب ذلك من خلال الوصول إلى الإنترنت لبعض السحر استجابة التحدي خلال مرحلة فك التشفير. المبالغة في أي سعر.

يمكنك أيضا جعل PACKER الخاص بك، لكن صدقني عندما أقول ذلك: أنت لا تريد الذهاب إلى هناك؛)

باختصار، ما تريده ليس بالأمر السهل تحقيقه حتى بالنسبة للاعبين الكبار. كم من الوقت يستغرق لعبة Securom تظهر على PirateBay؟ لذلك الشيء الوحيد الذي يمكنك القيام به هو "رفع الشريط" والأمل في الذهاب دون أن يلاحظها أحد من قبل المهندسين العكسي العكسي.

أخيرا، معرفة ما الذي تحصل عليه في: هل سيكون الأمر يستحق كل هذا العناء بالنسبة لك؟ دعنا نقول أنك شحنت DLL تفكيك - كما هو. ما زال الناس بحاجة إلى عكس المهندس لاستخدامه. من يستخدم مكتبات الحزب الثالث غير الموثم على أي حال؟ لقد فعلت ذلك مرة واحدة أو مرتين في لحظات الجنون.

نصائح أخرى

حسنا، لا تقيد التجميع في المقام الأول. بمجرد انتهاء التجمع في البرية، يمكن لأي شخص استخدامه. يمكنك جعل هذا أصعب من قبل obfcating. ذلك، ولكن "نقاط الدخول" ستظل هناك وقابلة للاستخدام.

من الناحية النظرية، يمكنك أن تفعل شيئا مع كاس., ، لكنني لست متأكدا بشكل خاص أن هذا ممكن.

ربما يمكنك استخدام أدوات حماية الترخيص / نسخ لتغيير DLL. وداخل المتصل، يمكنك تقديم رقم الترخيص المطلوب.

هذا ليس ممكنا تماما. إذا كنت تريد تشغيل التعليمات البرمجية الخاصة بك، يجب أن يكون قابل للتنفيذ. يمكنك وضع الشيكات، التعبئة، مفاتيح التشفير، المراقبين، الشاشات، الحراس، ومخططات الترخيص المختلفة ولكن في نهاية اليوم إذا كان التعليمات البرمجية الخاصة بك، يجب إلغاء القفل بطريقة أو بأخرى بحيث يمكن استخدامها.

هذا هو السبب في أن DRM لا يعمل. تريد حماية X، لكنك تريد شخص آخر لعرضه. المشكلة هي الشخص الذي لا تريد عرض / استخدام X والشخص الذي تريده باستخدام X، في مستوى ما، نفس الشخص.

لقد سئمت ذلك مع التعامل مع رمز ترخيص الطرف الثالث (كسر / غير مسجل / التفكير لم أكن مستخدم شرعي عندما كان من المفترض أن أكون) أصبحت عضوا في FSF. لا يستحق وقتي للعمل حول قيود شخص آخر، ولا يستحق وقتي للتعامل معها. كودها لم يكن كل ذلك خاص.

إذا كنت قويا تسمية الجمعيات الخاصة بك، ففكر في استخدام publisherientitypermissionattribute.. وبعد يمكنك إضافة هذا إلى DLL وسيكون التجميعات الموقعة فقط مع مفتاح الناشر الصحيح من الاتصال بهذه الطريقة أو الفصل.

هذا مجاني ومبني في .NET Framework. إذا كنت بحاجة إلى ميزات إضافية (مثل القدرة على ترخيص DLL للمطورين الآخرين)، فكر في أداة حماية نسخ المستوى المهنية مثل أداةنا الترخيص deploylx..

يجب عليك إضافة الشيكات في DLL للتحقق من أن المتصل هو أنت. ولكن هذا يثير التحديات الأخرى:

كيف تثبت أنك أنت ل DLL. (يمكنك التحقق من شيء أبسط مثل اسم المستخدم الحالي، ولكن قد لا يكون ذلك مثاليا).

هل يمكن أن تتطلب أن يتم توقيع ملف exe بشهادتك.

يجب عليك التحقق من البنية التحتية التراخيص. ليس لدي أي فكرة عن كيفية تنفيذها، لكنك تستخدمها عن طريق إنشاء ملف .licx، ثم أعتقد، فإن عملية البناء تستخدم أداة Lc.exe للقيام بشيء لتضمين الترخيص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top