سؤال

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

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

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

المحلول

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

أفهم من أين أتيت, ولكن يبدو أن الإدارة لديها مشكلة وهي تبحث لك لتنفيذ اختيار الحل بدلا من معرفة ما هو الحل الصحيح هو.

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

نصائح أخرى

لا.فقط لا.

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

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

انظر perlfaq3 الإجابة على "كيف يمكنني إخفاء المصدر بي Perl البرامج ؟ للحصول على مزيد من التفاصيل.

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

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

في هذه الحالة التعتيم هو نهج خاطئ.

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

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

بديل آخر لتحويل البرنامج إلى ثنائي هو حر PAR باكر أداة على CPAN.بل هناك مرشحات رمز التشويش ، كما لو قال آخرون أن يحتمل المزيد من المتاعب أكثر مما يستحق.

أنا أتفق مع المقترحات السابقة.

ومع ذلك إذا كنت تريد حقا أن ، يمكن أن ننظر إلى PAR و/أو تصفية::التشفير وحدات CPAN.يمكنك أيضا استخدامها معا.

لقد استخدمت الأخير (Filter::التشفير) كما خفيفة الوزن حقا شكل "حماية" عندما كنا الشحن لدينا المنتج على الوسائط البصرية.لا "حماية" ، ولكنها سوف تتوقف 90% من الناس التي ترغب في تعديل الملفات المصدر.

هذه ليست خطيرة اقتراح غير أن نلقي نظرة على Acme::بافي.

فإنه على الأقل سوف سطع يومك!

بديل التشويش هو تحويل النص الخاص بك إلى ثنائي استخدام شيء من هذا القبيل ActiveState هو بيرل Dev Kit.

أنا تشغيل ويندوز O/S و استخدام perl2exe من IndigoSTAR.الناتجة عن ذلك .ملف EXE سوف يكون من المرجح أن يتم تغيير في الموقع.

كما قال آخرون: "كيف يمكنني التعتيم" هو السؤال الخطأ."كيف يمكنني إيقاف العميل من تغيير رمز" هو حق واحد.

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

سبب أفضل يريدون obfuscator سيكون على السوق الشامل سطح المكتب النشر حيث لم يكن لديك كل زبون على الوقوف العقد.في هذه الحالة شيء مثل PAR -- أي شيء حزم التشفير/التشويش المنطق في جمع الثنائية هو الطريق للذهاب.

كما العديد من الناس قد قالوا:لا.

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

إصلاح المشكلة الحقيقية:اختبارية و/أو مصاغ بشكل مناسب الترخيص.ودعم الموظفين المدربين القول 'ان تغيره ؟ نحن ننفذ الشرط 34b من الترخيص ، و هذا سيكون $X,000 قبل أن تلمس ذلك'....

أيضا, قراءة لماذا-أن-لا-استخدام-التشويش للمزيد من الإجابة.

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

لا محاربته ، تبني عليه.

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

في اتقان Perl, أنا أتحدث قليلا عن هزيمة obfucators.حتى إذا كنت تفعل أشياء مثل صنع هراء المتغيرات الأسماء مثل وحدات مثل ب::Deparse و ب::Deobfuscate, جنبا إلى جنب مع أدوات مثل Perl بيرل::مرتبة, تجعل من السهل جدا بالنسبة والاطلاع دوافع الشخص على المصدر.كنت لا داعي للقلق حول unknowledgable و الدوافع كثيرا لأنهم لا يعرفون ما يجب القيام به مع رمز على أي حال.

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

حظا سعيدا ،

آخر ليست خطيرة اقتراح استخدام Acme::بليتش, سيجعل الخاص بك رمز نظيفة جدا ;-)

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