هل ينبغي عليك التعتيم على تطبيق .Net تجاري؟

StackOverflow https://stackoverflow.com/questions/71195

  •  09-06-2019
  •  | 
  •  

سؤال

كنت أفكر في تشويش تطبيق .Net تجاري.ولكن هل يستحق الأمر حقًا بذل الجهد لاختيار مثل هذه الأداة وشرائها واستخدامها؟هل الثنائيات المبهمة آمنة حقًا من الهندسة العكسية؟

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

المحلول

قد لا تضطر إلى شراء أداة - يأتي Visual Studio.NET مزودًا بإصدار مجتمعي من Dotfuscator.أدوات تشويش مجانية أخرى مدرجة هنا, ، وقد تلبي احتياجاتك.

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

وأيضًا، إذا حان الوقت لتأكيد حقوقك في جزء من التعليمات البرمجية في المحكمة، فإن رؤية أنك تبذل جهدًا لحمايته (من خلال التعتيم عليه) قد يمنحك نقاطًا إضافية.:-)

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

نصائح أخرى

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

إذا كان لديك أسرار في التعليمات البرمجية الخاصة بك (مثل كلمات المرور)، فأنت تفعل ذلك بشكل خاطئ.

إذا كنت قلقًا من أن يقوم شخص ما بإنتاج برنامجك الخاص باستخدام أفكارك، فسيكون لديك حظًا أكبر في السوق من خلال توفير الإصدارات الجديدة التي يريدها عملاؤك، مع الدعم الفني، ومن خلال كونك شريكًا لهم.الأعمال الجيدة تفوز.

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

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

أيضًا، في الكود الخاص بنا لدينا الكثير من اختبارات NUnit التي تعتمد على الكثير من الأساليب والخصائص العامة، مما منع بعض أدوات التشويش من القدرة على تشويش تلك الفئات.

في النهاية استقرينا على منتج يسمى مفاعل صافي

إنه يعمل بشكل جيد للغاية، وليس لدينا أي من المشاكل المرتبطة بالمنتجات الأخرى.

"على عكس أدوات التعتيم، يقوم .NET Reactor بإيقاف أي عملية إلغاء ترجمة تمامًا عن طريق مزج أي تجميع .NET خالص (مكتوب بلغة C#، VB.NET، Delphi.NET، J#، MSIL...) مع رمز الجهاز الأصلي.بالتفصيل، يقوم .NET Reactor ببناء جدار أصلي بين المتسللين المحتملين ورمز .NET الخاص بك.والنتيجة هي ملف قياسي يستند إلى Windows، وليس متوافقًا مع MSIL.يظل كود .NET الأصلي سليمًا ومحميًا بشكل جيد بواسطة الكود الأصلي وغير مرئي لأعين المتطفلين.لا يتم نسخ كود .NET الأصلي على القرص الصلب في أي وقت.لا توجد أداة قادرة على فك تجميعات .NET Reactor المحمية."

حقيقة أنه يمكنك بالفعل إجراء هندسة عكسية لا تجعل التشويش عديم الفائدة.إنه يرفع المستوى بشكل كبير.

سيُظهر لك تجميع .NET غير المبهم المصدر بالكامل، مع تمييزه وكل ذلك بمجرد تنزيل ملف .NET صافي العاكس.أضف التشويش إلى ذلك وستقلل بشكل كبير من عدد الأشخاص الذين سيتمكنون من تعديل الكود.

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

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

لذا يرجى عدم التشويش إلا إذا كنت مضطرًا لذلك.

الأشياء التي يجب أن تأخذها بعين الاعتبار:

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

المشكلة الوحيدة التي يمكن أن يحلها التشويش هي أن يقوم شخص ما بإنشاء نسخة 1:1 (أو قريبة من 1:1) من تطبيقك المحدد.

كما أن الهندسة العكسية للتطبيقات المبهمة في عالم مثالي تعتبر أمرًا اقتصاديًا وغير جذاب.

لكن العودة إلى الواقع:

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

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

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

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

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

لذا، يجب عليك أولاً أن تفكر في أهدافك وسوقك وما تريد تحقيقه باستخدام أداة التعتيم. كما يمكنك أن تقرأ هنا (وفي أماكن أخرى) فإن التشويش لا يحل مشكلة الهندسة العكسية.إنه يجعل الأمر أكثر صعوبة ويستغرق وقتًا أطول. ولكن إذا كان هذا هو ما تريده، فقد يكون لديك نظرة لفتح مصادر التعتيم مثل على سبيل المثال.SharpObfuscator أو obfuscar والتي قد تكون جيدة بما يكفي لإزعاج المبرمجين العاديين (يمكن العثور على القائمة هنا: قائمة أدوات .NET Obfuscators على ويكيبيديا).

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

لا، لقد ثبت أن التشويش لا يمنع أي شخص من فك رموز الكود المترجم.وهذا يزيد من صعوبة القيام بذلك ولكنه ليس مستحيلاً.

أنا مرتاح جدًا لقراءة كود التجميع x86، فماذا عن الأشخاص الذين يعملون في التجميع لأكثر من 20 عامًا؟

ستجد دائمًا شخصًا يحتاج إلى دقيقة واحدة فقط ليرى ما يفعله كود c# أو c الخاص بك...

مجرد ملاحظة لأي شخص آخر يقرأ هذا بعد سنوات - لقد قمت للتو بتصفح ترخيص Dotfuscator Community Edition (الذي يأتي مع VS2008) قبل بضع ساعات، وأعتقد أنه لا يمكنك استخدام هذا الإصدار لتوزيع منتج تجاري، أو للتعتيم على التعليمات البرمجية من مشروع يتضمن أي مطورين غيرك.لذلك، بالنسبة لمطوري التطبيقات التجارية، فهي في الواقع مجرد نسخة تجريبية.

...قص...يمكن أن تصبح هذه الرسائل أكثر صعوبة في التفسير

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

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

من السهل جدًا إجراء هندسة عكسية لتطبيق ‎.net باستخدام .صافي العاكس - نظرًا لأن التطبيق سيقوم بإنشاء أكواد VB وVC وC# مباشرة من MSIL، ومن الممكن سحب جميع أنواع الأحجار الكريمة المفيدة.

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

هناك مقالة جيدة جدًا عن التشويش وهي تعمل هنا

هذا المشنور والسؤال المحيط بها بعض المناقشة التي قد تكون ذات قيمة.إنها ليست مسألة نعم أو لا.

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

المشكلة هي الأداة التي يجب اختيارها لهذا المنصب.تحقق من تجربتي مع أدوات التعتيم التجارية: https://stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market/2356575#2356575

نعم فعلنا.نحن نستخدم أداة التعتيم BitHelmet.إنه جديد، لكنه يعمل بشكل جيد حقًا.

ولكن هل يستحق الأمر حقًا بذل الجهد لاختيار مثل هذه الأداة وشرائها واستخدامها؟

لقد وجدت Eazfuscator رخيصًا (مجانيًا)، وسهل الاستخدام:استغرق حوالي يوم.لقد أجريت بالفعل اختبارات آلية واسعة النطاق (تغطية جيدة)، لذلك أعتقد أنه يمكنني العثور على أي أخطاء تم/تم تقديمها عن طريق التشويش.

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