سؤال

يحتوي منتجي على عدة مكونات:ASP.NET وتطبيق Windows Forms وخدمة Windows.95% أو نحو ذلك من التعليمات البرمجية مكتوبة في VB.NET.

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

ما أعرف أنه يجب أن أبحث عنه حتى الآن:

  • التسلسل/إلغاء التسلسل.في الحل الحالي، أقول للأداة ببساطة لا لتعتيم أي أعضاء في بيانات الفصل لأن الألم الناتج عن عدم القدرة على تحميل البيانات التي تم تسلسلها مسبقًا هو ببساطة كبير جدًا.
  • التكامل مع عملية البناء
  • العمل مع ASP.NET.في الماضي، وجدت هذه المشكلة بسبب تغيير أسماء ملفات .dll (غالبًا ما يكون لديك اسم واحد لكل صفحة) - والتي لا تتعامل معها جميع الأدوات بشكل جيد.
هل كانت مفيدة؟

المحلول

العودة مع .Net 1.1 كان التشويش ضروريًا:كان فك التعليمات البرمجية أمرًا سهلاً، ويمكنك الانتقال من التجميع إلى IL إلى كود C# وتجميعه مرة أخرى بجهد قليل جدًا.

الآن مع .Net 3.5 لست متأكدًا على الإطلاق.حاول فك تجميع 3.5;ما تحصل عليه هو طريق طويل من التجميع.

أضف التحسينات من 3.5 (أفضل بكثير من 1.1) والطريقة التي يتم بها التعامل مع الأنواع المجهولة والمفوضين وما إلى ذلك من خلال الانعكاس (إنهم كابوس لإعادة الترجمة).أضف تعبيرات لامدا، والمترجم "السحر" مثل بناء جملة Linq و var, ووظائف C#2 مثل yield (مما يؤدي إلى فئات جديدة بأسماء غير قابلة للقراءة).ينتهي الأمر بالكود الذي تم فك ترجمته بعيدًا عن أن يكون قابلاً للتجميع.

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

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

نصائح أخرى

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

لقد جربنا DotFuscator Pro، وSmartAssembly، وXenoCode، وSalamander، والعديد من التطبيقات الصغيرة التي لا أعرف أسمائها.

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

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

أنا غارق في هذا الأمر الآن، وأحاول إيجاد حل جيد.وهنا انطباعاتي حتى الآن.

زينوكود - لدي ترخيص قديم لـ Xenocode2005 كنت أستخدمه لتشويش تجميعات .net 2.0 الخاصة بي.لقد كان يعمل بشكل جيد على XP وكان حلاً لائقًا.مشروعي الحالي هو .net 3.5 وأنا أستخدم نظام التشغيل Vista، وأخبرني الدعم بتجربته ولكن إصدار 2005 لا يعمل حتى على نظام التشغيل Vista (يتعطل) لذلك يتعين عليّ الآن شراء "PostBuild2008" بسعر مذهل من 1900 دولار.قد تكون هذه أداة جيدة لكنني لن أعرف ذلك.غالي جدا.

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

التجميع الذكي - لقد قمت بتنزيل برنامج Eval لهذا الغرض وكان يعمل بشكل لا تشوبه شائبة.لقد تمكنت من تحقيق كل ما أردت وكانت الواجهة من الدرجة الأولى.نقطة السعر لا تزال باهظة بعض الشيء.

دوتفوسكاتور برو - لا يمكن العثور على السعر على الموقع.حاليا في المناقشات للحصول على الاقتباس.يبدو مشؤوما.

محير - مشروع مفتوح المصدر يعمل بشكل جيد (لإرباك الناس، تمامًا كما يوحي الاسم). https://confuser.codeplex.com/
(أضيف بواسطة جاجوفين)

ملحوظة:يقال إن ConfuserEx "معطل" وفقًا لـ العدد رقم 498 على جيثب الريبو الخاص بهم.

إذا كنت تبحث عن إصدار مجاني، فيمكنك تجربة DotObfuscator Community Edition الذي يأتي مع Visual Studio أو ازفوسكاتور.نيت.


منذ 29 يونيو 2012, أصبح Eazfuscator.NET تجاريًا الآن.آخر إصدار مجاني متاح هو 3.3.

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

لقد قمت بتجريب كل أدوات التعتيم الموجودة في السوق تقريبًا ويعتبر SmartAssembly هو الأفضل في رأيي.

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

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

الجواب القصير هو أنك لا تستطيع ذلك.

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

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

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

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

استخدمنا العديد منها على مر السنين في تطبيقاتنا التجارية واستقرينا على Spices obfuscator من 9rays.net لأن السعر مناسب، ويقوم بالمهمة ويحظى بدعم جيد على الرغم من أننا لم نعد بحاجة إلى الدعم منذ سنوات ولكن لنكون صادقين لا أعتقد أنه من المهم حقًا نوع التعتيم الذي تستخدمه، فالمشاكل ومنحنى التعلم كلها متماثلة إذا كنت تريد أن تعمل بشكل صحيح مع التحكم عن بعد وasp.net.

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

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

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

لقد قمت خلال اليومين الماضيين بتجربة الإصدار المتقدم من Dotfuscator Community Edition (يمكن تنزيله مجانًا بعد تسجيل CE الأساسي الذي يأتي مرفقًا مع Visual Studio).

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

لقد حاولت التعتيم على مشروع حقيقي يعتمد على VSTO في Excel، مع تكامل Virtual Earth، والكثير من مكالمات خدمة الويب وحاوية IOC والكثير من التفكير.كان من المستحيل.

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

تشفير التشفير معالجة جميع المخاوف والسيناريوهات الخاصة بك.هو - هي :

  1. استبعاد الأنواع/الأعضاء تلقائيًا من التشويش بناءً على القواعد.الأنواع/الحقول المتسلسلة هي واحدة منها.
  2. يمكن دمجه في عملية الإنشاء باستخدام MSBUild.
  3. يدعم مشاريع ASP.Net.

لقد حاولت مؤخرًا توصيل مخرجات أداة التعتيم المجانية إلى أداة التعتيم المجانية الأخرى - وهي Dotfuscator CE وأداة التعتيم Babel الجديدة على CodePlex.المزيد من التفاصيل على مدونتي.

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

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

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

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

لم أواجه أي مشاكل مع Smartassembly.

يمكنك استخدام "Dotfuscator Community Edition" - فهو يأتي بشكل افتراضي في Visual Studio 2008 Professional.يمكنك أن تقرأ عنها في:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

النسخة "الاحترافية" من المنتج تكلف أموالاً ولكنها أفضل.

هل تحتاج حقًا إلى تشويش التعليمات البرمجية الخاصة بك؟عادةً ما يكون هناك خطأ بسيط في عملية فك ترجمة التطبيق الخاص بك، إلا إذا تم استخدامه لأغراض أمنية.إذا كنت قلقًا بشأن "سرقة" الأشخاص لشفرتك، فلا تقلق؛الغالبية العظمى من الأشخاص الذين ينظرون إلى الكود الخاص بك سيكونون لأغراض التعلم.على أية حال، لا توجد إستراتيجية تشويش فعالة تمامًا لـ .NET - سيكون دائمًا الشخص الذي يتمتع بمهارة كافية قادرًا على فك/تغيير تطبيقك.

تجنب المفاعل.إنه عديم الفائدة تمامًا (ونعم لقد دفعت مقابل الترخيص).كان Xenocode هو أفضل ما واجهته واشتريت ترخيصًا له أيضًا.كان الدعم جيدًا جدًا ولكني لم أكن بحاجة إليه كثيرًا لأنه نجح للتو.لقد اختبرت كل أداة تشويش يمكن أن أجدها واستنتاجي هو أن xenocode كان الأقوى على الإطلاق وقام بأفضل عمل (أيضًا إمكانية نشر معالجة .NET exe الخاص بك إلى exe أصلي لم أره في أي مكان آخر.).

هناك نوعان من الاختلافات الرئيسية بين المفاعل وزينوكود.الأول هو أن Xenocode يعمل بالفعل.والثاني هو أن سرعة تنفيذ التجميعات الخاصة بك لا تختلف.مع المفاعل كان أبطأ بنحو 6 ملايين مرة.كما حصلت على انطباع بأن المفاعل كان عبارة عن عملية يقوم بها رجل واحد.

لقد وجدت أن Agile.Net يوفر حماية جيدة جدًا لـ .Net Assembly الخاص بك لأنه لا يوفر التشويش فحسب، بل يوفر التشفير أيضًا.قم بتنزيل المسار المجاني.
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx

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

كان خيارنا هو Xenocode، وإذا قمت بالاختيار مرة أخرى اليوم، فإنني أفضل عدم تشويش الكود أو استخدام Dotfuscator.

إليك مستند من Microsoft نفسها. نأمل أن يساعد...، إنه من عام 2003، لكنه ربما لا يزال ذا صلة.

نحن نستخدم SmartAssembly على عميل Windows الخاص بنا.يعمل بشكل جيد.

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

كل هذا يتوقف على لغة البرمجة التي تستخدمها.اقرأ المقال: رمز غامض

الطريقة المجانية هي استخدام dotfuscator من داخل الاستوديو المرئي، وإلا فسيتعين عليك الخروج وشراء أداة تشويش مثل Postbuild (http://www.xenocode.com/Landing/Obfuscation.aspx)

اضطررت إلى استخدام التشويش/حماية الموارد في أحدث rpoject الخاص بي وتم العثور عليه تشفير التشفير كأداة جميلة وسهلة الاستخدام.مشكلة التسلسل هي مجرد مسألة إعدادات في هذه الأداة.

هناك نسخة جيدة مفتوحة المصدر تسمى Obfuscar.يبدو أن تعمل بشكل جيد.يمكن استبعاد الأنواع والخصائص والحقول والأساليب.الأصل هنا: https://code.google.com/p/obfuscar/, ، ولكن نظرًا لأنه لم يتم تحديثه بعد الآن، فقد قام شخص ما بتحويله إلى هنا: https://obfuscar.codeplex.com/

قد ترغب أيضًا في إلقاء نظرة على تقنيات حماية التعليمات البرمجية الجديدة مثل ميتافوريك و في آي لابز وتقنيات حماية نسخ البرامج الجديدة مثل بايت شيلد.إفشاء:أنا أعمل في ByteShield.

أنا أيضًا أستخدم التجميع الذكي.ومع ذلك، لا أعرف كيف يعمل تطبيق ويب.ومع ذلك، أود أن أشير إلى أنه إذا كان تطبيقك يستخدم حماية من نوع البرامج التجريبية، فتأكد من عدم التحقق من الترخيص بإرجاع منطقي.من السهل جدًا كسر البايت.http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx

SmartAssembly رائع، لقد استخدمته في معظم مشاريعي

لقد قمت بتجربة الإصدار التجريبي من Eziriz....أعجبني.ولكن لم يأت البرنامج.

التشويش ليس حماية حقيقية.

إذا كان لديك ملف .NET Exe، فهناك ملف أفضل بكثير حل.

أنا أستعمل ثيميدا ويمكن أن أقول أنه يعمل بشكل جيد للغاية.

العيب الوحيد في Themida هو أنه لا يمكنه حماية ملفات .NET Dlls.(كما أنه يحمي كود C++ في Exe وDLLs)

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

يرجى قراءة الوصف التفصيلي على موقعه على الانترنت:http://www.oreans.com/themida_features.php

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

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