سؤال

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

بعد هذه المقدمة قد تكون بشكل كبير وتساءلت ماذا أفعل.هو ذاهب للقضاء Diablo3 مرة واحدة ؟ أستطيع تهدئة المخاوف الخاصة بك, أنا لست واحدة من تلك المفرقعات.هدفي هي crackmes.

Crackmes ويمكن الاطلاع على سبيل المثال ، www.crackmes.de.أ Crackme قليلا قابل للتنفيذ (أكثر من مرة) يحتوي على القليل من خوارزمية التحقق من المسلسل و إخراج "منح الوصول" أو "تم رفض الوصول" اعتمادا على المسلسل.والهدف هو جعل هذا الملف التنفيذي الناتج "منح الوصول" في كل وقت.أساليب يسمح لك استخدام قد تكون مقيدة من قبل المؤلف - لا الترقيع لا تفكيك أو تنطوي على أي شيء يمكنك القيام به مع ثنائي ، objdump و محرر عرافة.تكسير crackmes هو جزء من المتعة ، بالتأكيد ، ومع ذلك ، كمبرمج ، وأنا أتساءل كيف يمكنك إنشاء crackmes صعبة.

في الأساس أنا أعتقد crackme يتكون من قسمين رئيسيين:معين المسلسل التحقق المحيطة رمز.

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

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

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

أفكاري حاليا تتكون من:

  • التحقق صريحة مواقع في الثنائية أن يقفز.
  • checksumming أجزاء من ثنائي مقارنة اختبارية حسابها في وقت التشغيل مع هؤلاء.
  • الإيجابية والسلبية وقت التشغيل-الشيكات الخاصة بك وظائف في المدونة.مع آثار جانبية على المسلسل التحقق.:)

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

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

المحلول

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

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

تحقق من...http://www.openrce.org/reference_library/anti_reversing - بعض من ما هو هناك.

http://www.amazon.com/Reversing-Secrets-Engineering-Eldad-Eilam/dp/0764574817/ - هذا الكتاب يحتوي على حقا جيدة المضادة عكس المعلومات و الخطوات من خلال التقنيات.إذا كنت الحصول على الباحث عكس بشكل عام.

نصائح أخرى

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

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

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

هناك تكنولوجيا TPM: tpm على ويكيبيديا

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

ملاحظة:TPM نوع من سمعة سيئة لأنها يمكن أن تستخدم إدارة الحقوق الرقمية.ولكن الخبراء في هذا المجال ، هذا نوع من الظلم ، حتى أن هناك فتح-TPM مجموعة السماح لينكس للمستخدمين التحكم بالضبط كيف TPM يستخدم رقاقة.

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

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

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

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

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

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

المادة كبيرة على نسخ حماية حماية حماية حفظ القراصنة في الخليج:تنفيذ الكراك حماية سبايرو:عام التنين

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

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