ما الذي تستخدمه لحماية كود .NET الخاص بك من الهندسة العكسية؟[مغلق]

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

  •  01-07-2019
  •  | 
  •  

سؤال

لفترة من الوقت كنا نستخدم أداة تسمى CodeVeil.أنا فقط أتساءل عما إذا كانت هناك بدائل أفضل هناك.

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

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

المحلول

لقد حققت نجاحًا كبيرًا مع Xenocode Postbuild.يمكن للأداة تشويش تجميعات .NET، وحماية ضد تفكيك العاكس، ودمج تجميعات .NET في ملف تنفيذي واحد ("المحاكاة الافتراضية") وحتى تجميع تطبيقات .NET إلى ملفات تنفيذية مستقلة لا تحتاج إلى تثبيت وقت تشغيل .NET.

نصائح أخرى

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

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

يؤدي تجميع تطبيق .NET الخاص بك إلى تجميعات الإخراج التي تحتوي على قدر كبير من معلومات التعريف.تجعل هذه المعلومات من السهل جدًا إعادة بناء شيء قريب جدًا من الكود الأصلي.يمكن استخدام أداة مجانية ممتازة تسمى .NET Reflector للقيام بذلك بالضبط وهي طريقة شائعة لفحص كيفية عمل مكتبات الفئة الأساسية.قم بتنزيل هذه الأداة واستخدامها لعرض إصدارات C#/VB.NET المُعاد بناؤها لمحتويات التجميع.

إذا كنت تمثل مؤسسة تجارية، فأنت لا تريد أن يجد الأشخاص أنه من السهل النظر إلى تكلفة إنتاج التعليمات البرمجية.إحدى الطرق الشائعة هي استخدام التشويش لخلط المحتويات بطريقة لا تغير كيفية تشغيلها ولكنها تجعل من الصعب فهمها.يستخدم التشويش تقنيات مثل إعادة تسمية المتغيرات والأساليب.يعد تحديد الغرض من الطرق "a1" و"a2" و"a3" أصعب بكثير من "GetName" و"UpdateInterestRate" و"SetNewPassword" الأصلية.

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

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

هناك العديد من الأدوات الشائعة للتعتيم، بما في ذلك Dotfuscation، الذي يحتوي على إصدار "خفيف" يأتي مع Visual Studio 2005 و2008.لديهم إصدار Pro يقوم بأكثر من مجرد إعادة تسمية اسم المتغير والوظيفة.ومع ذلك، لا يزال الرمز قابلاً للعرض، وقد تم خلطه قليلاً لجعل قراءة البرنامج أكثر صعوبة والتعامل مع التدفق المنطقي للبرنامج.

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

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

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

آسف لإحياء مشاركة قديمة، ولكن أعتقد أن Eziriz's .NET Reactor يعمل ببراعة.

في الواقع، أستخدمه بنفسي لجميع تطبيقات .net الخاصة بي ويبدو أنه لا توجد أداة موجودة يمكنها فك ترجمة برنامج محمي باستخدام .net Reactor.يمكن العثور على مزيد من التفاصيل على صفحة المعلومات هناك، http://www.eziriz.com/dotnet_reactor.htm.اختبره باستخدام الإصدار التجريبي وعاكس .net ويمكنك أن ترى بنفسك.

تنصل:أنا لا أعمل لدى RedGate صانعي SmartAssembly.أنا مجرد عميل سعيد جدًا وجد حلاً جيدًا وبأسعار معقولة.

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

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

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

لقد سمعت أن Obfusticator جيد.يتم استخدامه على .Net Reflector.

آخر هو تشفير التشفير - إنه أقل تكلفة من البعض الآخر، ويحتوي على طرق تشويش وحماية مختلفة لإعاقة المتسللين السببيين وغير العرضيين.

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