سؤال

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

  1. الرقم التسلسلي كسلسلة
  2. رموز التشفير - فك التشفير كذلك

لذا، إذا كان لدى شخص ما الحد الأدنى من المعرفة من المجمع الذي يستطيعه / هي مجرد نوتبر بسيط وبعد 10-20 دقيقة من تصحيح الأخطاء مكمزة !!! حتى أنه يمكن القيام به عن طريق فتح exe مع المفكرة أعتقد! :-)

إذن ما سأطلبه ما يلي:

  1. حيث يجب أن تخزن هذا النوع من المعلومات الآمنة؟
  2. ما هي الاستراتيجيات الشائعة لتقديم رمز آمن؟
هل كانت مفيدة؟

المحلول

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

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

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

نصائح أخرى

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

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

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

اجعل تطبيق الويب الخاص به.

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

ليس لدي أي فكرة إذا كانت ستساعد، لكن Windows يوفر (منذ عام 2000) آلية لاسترداد المعلومات المشفرة وتخزينها ويمكنك أيضا الملح هذا التخزين على أساس لكل تطبيق إذا لزم الأمر: API لحماية البيانات (Dpapi)

هذا على آلة أو مستوى المستخدم ولكن تخزين المسلسلات وربما بعض المفاتيح باستخدامها قد تكون أفضل من وجودها مخفية في التطبيق؟

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

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

أولا، عليك تحديد ما يجب أن يكون التعليمات البرمجية الخاصة بك آمنة ضده، وهو أمر آمن لا معنى له.

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

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

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

void (*encryptionFunctn)(void);
void hideEncryptnFunctn(void)
{
    volatile char * i;
    while(*i!=0xC0) // 0xC0 is the opcode for ret
    {
        *i++^=0x45; // or any other code
    }
}

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

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

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