سؤال

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

ومع ذلك، يبدو أنني الوحيد في فريق التطوير لدينا الذي يشعر بهذه الطريقة، لذلك إما أن أكون مخطئًا، أو أحتاج فقط إلى حجج مقنعة.يستخدم منتجنا .NET، واقترح أحد المطورين .NET Reactor (والذي، بالمناسبة، تم اقتراحه في موضوع SO هذا أيضًا).

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

إذن، هل يمكنك التخلص من جميع مزايا الرمز الثانوي دفعة واحدة؟

هل هناك جيدة هندسة فوائد التشويش؟

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

المحلول

لقد نشرت سؤالاً قد يساعدك لأنه يناقش بعض المشكلات:يجب أن أشعر بالقلق بشأن تشويش رمز الشبكة الخاص بي

نصائح أخرى

لقد سألت لأسباب هندسية، لذا فهذه ليست إجابة دقيقة على السؤال.لكنني أعتقد أنه توضيح صحيح.

كما قلت، التشويش يهدف إلى معالجة مشكلة اجتماعية.ونادرا ما يكون للمشاكل الاجتماعية (أو التجارية)، على عكس المشاكل التقنية، حل كامل.لا توجد سوى درجات من النجاح في معالجة المشكلة أو التقليل منها.

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

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

كما قال GateKiller، لن يمنع التشويش فريقًا مصممًا من فك الترجمة، ولكن (ويعتمد ذلك على منتجك) ما مدى تصميم الفريق على مهاجمتك؟

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

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

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

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

إحدى الفوائد الهندسية المحتملة هي أن التشويش في بعض الحالات يمكن أن يؤدي إلى إنشاء ملفات تنفيذية أصغر أو عناصر أخرى - على سبيل المثال.يؤدي تشويش جافا سكريبت إلى ملفات أصغر (لأن جميع المتغيرات تحمل اسم "a" و"b" بدلاً من "descriptiveNameOne" ويتم تجريد كل المسافات البيضاء، وما إلى ذلك).يؤدي هذا إلى أوقات تحميل أسرع لصفحات الويب التي تستخدم جافا سكريبت المبهم.من الواضح أن هذا لا ينطبق (بالقدر نفسه) في عالم .NET، ولكنه مثال على موقف توجد فيه فائدة هندسية مباشرة.

على الرغم من عدم ارتباطي بـ .net، إلا أنني سأفكر في التشويش في جافا سكريبت، وربما اللغات المتداخلة الأخرى.تستفيد Javascript جيدًا من التشويش لأنها تقلل من النطاق الترددي المطلوب والرموز المميزة التي يجب على المحلل اللغوي قراءتها.

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

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

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

استخدم التشفير لحماية المعلومات على الطريق.

استخدم التشويش لحماية المعلومات بينما لا يزال برنامجك يحتفظ بها.

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