سؤال

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

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

الآن، قام المتسلل باستبدال اتصال الخادم ب "العودة TRUE؛" بيان (راجعت ذلك مع telrik justdecompile). وحاصل تحميل البرامج المتشققة على الإنترنت.

الآن، فيما يلي أسئلتي:
1- كيفية التأكد من أن تطبيق .NET لن يتم تصدع؟
2- يعرف المتسلل الآن الكود الخاص بي منذ أن قام بالتعديل. ما هي الخطوات التي يجب أن آخذها؟ 3- قرأت على الإنترنت عن - Obfuscators. لكن القراصنة يعرف رمزي ما الذي يجب علي فعله؟ 4- أي نصائح أخرى للمحترفين يمكن أن أستخدمها لتجنب الحصول على البرنامج المتصدع؟
5 - لست متأكدا ولكن هل يمكن لهذه البرامج العاكس أيضا أن تقوم أيضا بترمزال App.config مع البيانات الحساسة؟

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

المحلول

1- كيفية التأكد من أن تطبيق .NET لن يتم تصدعه؟

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

2- يعرف المتسلل الآن الكود الخاص بي منذ أن قام بالتعديل. ما هي الخطوات التي يجب أن آخذها؟

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

3 - قرأت على الإنترنت عن - Obfuscators. لكن القراصنة يعرف رمزي ماذا يجب أن أفعل؟

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

4- أي نصائح أخرى للمحترفين يمكنني استخدامها لتجنب الحصول على البرنامج المتصدع؟

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

5 - لست متأكدا ولكن هل يمكن لهذه البرامج العاكس أيضا أن تقوم أيضا بترمز التطبيق. مع البيانات الحساسة؟

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


الحل الحقيقي الوحيد الذي يمكنني رؤيته لمنع القرصنة هو واحد من خيارين.

  1. الشخص لا يحصل أبدا على تطبيقك، يتم بثه من خادم تحت سيطرتك وعدم الحصول على رؤية الثنائي. الشيء الوحيد الذي ترسله هو المعلومات التي يحتاجونها إلى قيادة واجهة المستخدم. هذا هو النهج الذي يعمل به جميع أعمال MMO. يمكن للناس عكس المهندس ما ترسله إلى واجهة المستخدم ومحاكاة المنطق الذي يحدث على الخوادم الخاصة بك ولكنهم لن يكونوا قادرين أبدا على معرفة ما يفعله، وإذا كان برنامجك معقد بما فيه الكفاية، فقد لا يكون متاحا للمهاجم لإعادة إنشاء رمز جانب الخادم. يجب أن تحتاج الجانب السلبي إلى هذا النهج إلى الخوادم المضيفة لمستخدميك للاتصال به، ستكون هذه تكلفة متكررة ستحتاج إلى وسيلة لإعادة الانقلاب. في كثير من الأحيان تسمى هذه الطريقة "عميل غني" أو "عميل رقيق" اعتمادا على مقدار المعالجة التي يتم بها جانب العميل وكم يتم إجراء معالجة جانب الخادم. انظر الفصل 22 من " دليل بنية تطبيق Microsoft، 2nd الطبعة ". على وجه التحديد أنا أصفت ما يظهر في الشكل 4 و 5

  2. خيار SECCOND هو كل من تبيع برنامجك أيضا، فاحصي بالتوقيع على عقد قانوني لعدم توزيع البرنامج (وليس EULA، والعقد الفعلي الذي يجب توقيعه جسديا من قبل العميل). في هذا العقد، يتم تطبيق غرامات كبيرة على الشخص الذي تسرب البرنامج، ثم لغز البرنامج الخاص بك مع بصمات الأصابع الفريدة للشخص الذي يشتري البرنامج بحيث يتم تسريب البرنامج، يمكنك معرفة من فعل ذلك. (هذه هي الطريقة التي يستخدمها البائع Hex-Rays for Disassembler الخاص بهم IDA . لا يمكن للبحث السريع من Google تشغيل أي إصدارات متصدعة أحدث من 6.1، فهي على 6.3 ). لن تتوقف هذه الطريقة عن القرصنة، لكنها قد تثبط النسخة التي سيتم تسريبها في المقام الأول. يتيح لك هذا أيضا استرداد بعض التكاليف المفقودة المرتبطة بالبرنامج الذي يتم تسريبه في المقام الأول. قضية واحدة هي أنك ستحتاج إلى وضع الكثير من بصمات الأصابع وستحتاج إلى أن تكون خفية، إذا كان يمكن للمهاجم الحصول على نسختين من البرنامج ويمكنه مقارنة الملفات betw

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


تحديث : بعد إعادة النظر في هذه الإجابة الرابط إليها بحثا عن سؤال آخر فكرت بطريقة سهلة لتنفيذ الحل رقم 2.

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

نصائح أخرى

1: لا يمكنك ذلك.يمكنك التبويع، ولكن الطريقة الوحيدة ل منع هذا هو: لا تعطي أي شخص exe.انظروا كم شركات الألعاب تنفق على هذا؛لم يحلوا ذلك أيضا.

2: من شأنها مساعدة قليلا ، على الرغم من أنه سباق تسلح بين Obfuscators و De-Obfuscators

3: بعد فوات الأوان للعودة والتراجع عن ذلك، لكن التعويض سوف يبطئهم قليلا في المستقبل

5: app.config هو عادة مقروء جدا؛أنت لست كثيرا يمكنك القيام به هنا؛لن يؤدي المشفر إلى إبطاءها إلا إذا كانت المفاتيح موجودة في تطبيقك وبالتالي يمكن الحصول عليها

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

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

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

الطريقة فقط ، ستربح هذه الحرب هي استخدام حزم حماية البرامج التجارية.

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

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

ما يمكنك القيام به، بالإضافة إلى رمز Opfuscation هو، إضافة آلية لفك تشفير فك التشفير على أساس HardwareID، في الاعتبار السيناريو التالي، وإرسال HWID الخاص بهم إلى الخادم الخاص بك، وتحدد رقم النسخة / المالك / التثبيت/ إلخ مع هذا hwid، وترد مع مفتاح Striniption يعتمد في تلك الموجودة في تلك الثنائية المحددة (مع البصمات المذكورة من قبل)، وبالتالي سيكون القرصنة أصعبا، نظرا لوظائف كاملة، فإنها تحتاج إلى وصول ساري المفعول إلى الخادم الخاص بك، وإلا فإنهالا يمكن استخدام البرنامج.

هتافات،

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