سؤال

سؤال مختلف ، أي أفضل .صافي التشويش أدوات/استراتيجية, ويسأل ما إذا كان التشويش من السهل أن تنفذ باستخدام أدوات.

سؤالي على الرغم من ، هو التشويش فعالة ؟ في تعليق الرد هذا الجواب, أحدهم قال "إذا كنت قلقا حول مصدر السرقة ...التشويش هو تافهة تقريبا الحقيقي تكسير".

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

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

إذا كان القلق هو أكثر من مجرد تكسير من قبل المستخدم النهائي أو 'القراصنة' على الرغم من:إذا كان القلق هو "مصدر السرقة" أيإذا كنت بائع برامج ، القلق الخاص بك هو بائع آخر (منافس محتمل) الهندسة العكسية المصدر الخاص بك, التي يمكن بعد ذلك استخدام أو إضافة إلى المنتجات الخاصة بها ...إلى أي مدى هو بسيط التشويش الكافي أو الحماية الكافية ضد هذا الخطر ؟


1 تحرير:

الرمز في السؤال عن 20 KLOC الذي يعمل على أجهزة المستخدمين (المستخدم التحكم ، وليس خدمة التحكم عن بعد).

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


2 تحرير:

أنا لست قلقا حول شخص ما عكس الخوارزمية:أكثر قلقا حول تحضير الفعلية تنفيذ الخوارزمية (أيشفرة المصدر) في منتجاتها الخاصة.

كشف أن 20 KLOC عدة الشهر العمل على تطوير سيستغرق أكثر أو أقل من هذا (عدة أشهر) إلى deobfuscate كل ذلك ؟

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

معظم التشويش "سباق التسلح" تهدف في معظمها إلى منع الناس حتى من 'تكسير شيء (مثلا ، إيجاد وحذف جزء التعليمات البرمجية التي تنفذ حماية الترخيص/التنفيذ) ، أكثر من في منع 'مصدر السرقة'?

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

المحلول

لقد ناقشت لماذا لا أعتقد أن التعويض هو وسيلة فعالة للحماية ضد تكسير هنا:
حماية كود .NET من الهندسة العكسة

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

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

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

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

بعض التدابير الشائعة لمكافحة العكس هي:

  • البعدات - لا تفعل الكثير من حيث حماية مصدرك أو منعها من التشقق. لكننا قد لا تجعل الأمر سهلا تماما، أليس كذلك؟
  • 3rd party packers - Themida. هو واحد من أفضل منها. حزم قابل للتنفيذ في تطبيق Win32 المشفرة. يمنع الانعكاس إذا كان التطبيق هو تطبيق .NET أيضا.
  • باكرز مخصص - يكتب في بعض الأحيان باكر الخاص بك إذا كان لديك المهارة للقيام بذلك فعالة لأن هناك القليل جدا من المعلومات في مشهد تكسير حول كيفية تفريغ طلبك. هذا يمكن أن يتوقف عديمي الخبرة. هذه الدورة التعليمية يعطي بعض المعلومات الجيدة حول كتابة باكر الخاصة بك.
  • الحفاظ على الخوارزميات السرية في الصناعة قبالة آلة المستخدمين. تنفيذها كخدمة عن بعد حتى لا يتم تنفيذ التعليمات أبدا محليا. طريقة الحماية "المخزن" الوحيدة للحماية.

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

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


لقد ذكرت أنه استغرق الأمر عدة أشهر لكتابة ~ 20kLoc لتطبيقك. سيستغرق الأمر تقريبا أمرا طويلا لعكس تلك المكافئة 20KLoc من طلبك إلى مصدر عملي إذا أخذت الاحتياطات الدنيا العارية.

هذا هو السبب في أنها فعالة من حيث التكلفة فقط لعكس الخوارزميات الصغيرة والصناعة الخاصة من طلبك. أي شيء آخر ولا يستحق كل هذا العناء.

خذ المثال الخيالي التالي: دعنا نقول أنني طورت فقط تطبيقا متنافسا جديدا ل iTunes التي لديها طن من الأجراس والصدير. دعنا نقول أنه استغرق عدة 100K Loc و 2 سنوات لتطوير. ميزة مفتاح واحدة لدي طريقة جديدة لخدمة الموسيقى لك بناء على طعمك الاستماع بالموسيقى.

تحصل Apple (كون القراصنة) الرياح من هذا ويقرر أنهم يحبون حقا اقتراح الموسيقى الخاصة بك حتى يقرروا عكس ذلك. سيعملون بعد ذلك بعد ذلك على هذه الخوارزمية فقط وسيتصل المهندسين العكسي في نهاية المطاف إلى خوارزمية عملية تعمل بمثابة الاقتراحات المكافئة التي تعطى نفس البيانات. ثم ينفذون خوارزمية قالوا في طلبهم الخاص، نسميها "عبقرية" وجعل 10 تريليون دولار 10 تريليونات.

هذه هي الطريقة التي السرقة المصدر ينزل.

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

نصائح أخرى

التعويضي هو شكل من أشكال الأمن من خلال الغموض, وبينما يوفر بعض الحماية، من الواضح أن الأمن محدود للغاية.

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

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

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

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

يميل معظم الناس إلى كتابة ما يبدو أنه يبعث رمز وهذا لم يمنع المفرقعات فما الفرق؟

تعديل:

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

http://en.wikipedia.org/wiki/polymorphic_code.

في النهاية، لا يوجد شيء مستحيل عكس المهندس.

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

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

إذا رأيت الإخراج من disarsembler، فستدرك لماذا تفشل التبويض دائما.

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

إذا كان لديك IP في التعليمات البرمجية التي يجب أن تكون محمية في جميع التكاليف ، ثم عليك أن تجعل النظام الخاص بك البرمجيات وظائف متاحة كخدمة على تأمين الملقم البعيد.

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

إجابة قصيرة هي نعم ولا؛ ذلك يعتمد تماما على ما تحاول منعه. القسم اثني عشر من طبيب برمجة آمن لديه بعض التعليقات المثيرة للاهتمام على هذا في الصفحة 653 (التي لا تتوفر بسهولة في معاينة كتب Google). يصنف مضادا للعبث في أربع فئات: صفر يوم (إبطاء المهاجم حتى يستغرق الأمر وقتا طويلا لإنجاز ما يريدون)، وحماية خوارزمية خاصة لمنع الهندسة العكسية، "لأنني أستطيع" الهجمات وأستطيع " تذكر 4th واحد. عليك أن تسأل ما أحاول منعه، وإذا كنت قلقا حقا إزاء إلقاء نظرة على التعليمات البرمجية المصدرية، فإن التعرض له بعض القيمة. المستخدمة في تكنولوجيا المعلومات الخاصة بها عادة ما يكون مجرد إزعاج لشخص يحاول الفوضى مع طلبك ومثل أي إجراء أمني جيد يعمل بشكل أفضل عند استخدامه في تركيبة مع تقنيات أخرى لمكافحة العبث.

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