أداة ستجعل من الصعب فك تشفير شفرة المصدر | JavaScript Obfuscator Tool
الثلاثاء، 21 مايو 2019
اقرأ ايضا
مرحبا اخواني وكل عام وأنتم بخير...في هذه التدوينة والتي قطعا ستفرح إخواننا المطورين بأداة سرية ومجانية متوفرة على النت تتيح لكم تحويل شفرة مصدر JavaScript الأصلية إلى تمثيل جديد يصعب فهمه ونسخه وإعادة استخدامه أوتعديله دون إذن. والرائع هو أنه مهما كان حجم وتداخل السكريبت المراد تشفيره سيكون للنتيجة المبهمة الوظيفة الدقيقة للرمز الأصلي..أقصد بدون الحصول على خطا بنسبة 99.99% أوليس هذا رائعا!!.
ومن الرائع كذلك في هذه الأداة التي من خلال استخدام مختلف التحولات و"الفخاخ"، مثل ، الدفاع عن النفس و حماية التصحيح ستصعب قراءته باستخدام أدوات مضادة كأداة JS Beautifier إلا طبعا من محترف.
ويبقى السؤال المهم لماذا أصلا أرغب في تعتيم رمز JavaScript الخاص بي؟ اخي العزيز لاتكن متساهل حتى لايفقد المجال رونقه والجمال الكامن في شطط البحث ومايصحبه من لذة النجاح فدعني أخبرك أن هناك العديد من الأسباب التي تجعل من الأفضل حماية التعليمات البرمجية الخاصة بك ، منها ماهو تقني ومنها ماهو تجاري على سبيل المثال إزالة التعليقات والمساحة البيضاء التي ليست مطلوبة. جعله أسرع في التحميل وصعوبة الفهم ؛ حماية المنتج المدفوع كالقوالب والإضافات التي سهرت على بنائها أشهر وأعوام فمن غير العدل أن تسرق منك وتنسب لغيرك..فهل إقتنعت؟!!.
في حال ما إلتبست عليك الأمور إنسى ضبط الإعدادات التي ذكرناها في الجدول و قم بضبطها كما في الصورة التالية...
أما مسئلة كسر التشفير لايكون إلا من شخص لديه الوقت والمعرفة والصبر لعكس السلسلة.
قلت لايوجد حماية مطلقة نظرًا لأنه مادام محرك JavaScript في المتصفح قادرًا على قراءته وتفسيره ، فتأكد أنه لا توجد طريقة لمنع ذلك. والنتيجة تحصيل حاصل لايوجد أداة تشفير خارقة ..لكن توجد حيل المطور!!
الخلاصة / إستخدم هذه الاداة وأتحداك أن تجد بديلا أحسن منها في الوقت الراهن.
لكن لا داعي للقلق بشأن حجم الشفرة لأنه نظرًا لوجود الكثير من التكرار ، سيتم ضغط الشفرة المبهمة بشكل جيد للغاية بواسطة خادم الويب تستطيع أن تتأكد بنفسك من خلال أداة التحقق من ضغط GZIP
ومن الرائع كذلك في هذه الأداة التي من خلال استخدام مختلف التحولات و"الفخاخ"، مثل ، الدفاع عن النفس و حماية التصحيح ستصعب قراءته باستخدام أدوات مضادة كأداة JS Beautifier إلا طبعا من محترف.
ويبقى السؤال المهم لماذا أصلا أرغب في تعتيم رمز JavaScript الخاص بي؟ اخي العزيز لاتكن متساهل حتى لايفقد المجال رونقه والجمال الكامن في شطط البحث ومايصحبه من لذة النجاح فدعني أخبرك أن هناك العديد من الأسباب التي تجعل من الأفضل حماية التعليمات البرمجية الخاصة بك ، منها ماهو تقني ومنها ماهو تجاري على سبيل المثال إزالة التعليقات والمساحة البيضاء التي ليست مطلوبة. جعله أسرع في التحميل وصعوبة الفهم ؛ حماية المنتج المدفوع كالقوالب والإضافات التي سهرت على بنائها أشهر وأعوام فمن غير العدل أن تسرق منك وتنسب لغيرك..فهل إقتنعت؟!!.
معاينة الأداة
ستكتشف فور إستخدامك للأداة JavaScript Obfuscator Tool ان بيئة العمل سهلة ومرنة لكن تأكد من قراءة جميع الخيارات لتأخذ في عين الإعتبار مستويات الحماية والحجم و السرعة للكود الخاص بك..إنتقل الآن للاداة من خلال الضغط على الزر في الاسفل وبعدها يمكنك الرجوع لأشارككم تفاصيل مهمة قد تحتاجها كمرجع أثناء عملك بالأداة.تفعيل الخيارات المهمة
ستجد في صفحة الأداة جدول بياني يشرح لك جميع ماتحويه الاداة من ميزات وخصائص وبما اننا على منصة البلوجر دعنا نجعل تلك الخيارات على مستوايين إن صحت القراءة لبيئة العمل... وهما مستوى يتماشى مع الملحقات التابعة لبلوجر والمستوى الثاني لانقول العكس وإنما غير مطلوب لذلك سنركز في الجدول الخاص بنا فقط على الخيارات المناسبة والتي يجب عليك تحديدها عندما تريد تعتيم الكود الخاص بك طبعا إلا في حال كان هناك خيار إستثنائي أو خيار غير مرغوب فيه سنوضح ذلك في الجدول الآتي..report
تنبيه...نعيد ونأكد أن الخيارات التي سنشرحها لكم في الجدول التالي لها أهمية قصوى اما بقية الخيارات التي لم نذكرها لكم فذلك يعني تجاهلها في حال كنت تعمل على أكواد سيتم وضعها في قالب بلوجر.
وللإشارة إذا وجدت في الجدول العلامات التالية فتلك تعني:
مستحسن خيار يجب تشغيله
طوعي خيار راجع لك تشغيله
مستبعد خيار لاينصح بتشغيله
وللإشارة إذا وجدت في الجدول العلامات التالية فتلك تعني:
مستحسن خيار يجب تشغيله
طوعي خيار راجع لك تشغيله
مستبعد خيار لاينصح بتشغيله
الخيارات | الوصف |
---|---|
Compact Code كود مضغوط | خيار - مستحسن - يزيل فواصل الأسطر من الشفرة المشوشة. |
Identifier Names Generator مولد أسماء المعرف | استخدم هذا الخيار للتحكم في كيفية إخفاء المعرفات (أسماء المتغيرات ، أسماء الوظائف ، إلخ). 1- خيار hexadecimal عشري : يولد أسماء معرف عشوائية باستخدام نمط عشري (على سبيل المثال: 0xabc123) خيار - مستحسن - 2- خيار mangled : يستخدم أسماء المعرفات القصيرة (مثل: a، b، c، وما إلى ذلك) |
Identifiers Prefix معرفات بادئة | خيار - مستحسن - يجعل جميع المعرفات العامة لها بادئة محددة. المقصود هو الإسم الموجود في بداية الكود عند تشفيره مثلا استخدم هذا الخيار عندما يكون لديك العديد من الأكواد المنفصلة على نفس الصفحة. يساعد وضع إسم معين لكل كود تقوم بتشفيره على تجنب التعارضات بين المعرفات . استخدم بادئة مختلفة لكل ملف. على سبيل المثال js01 ثم js02 وهكذا دواليك. |
Self Defending الدفاع عن النفس | خيار - مستحسن - يجعل هذا الخيار رمز الإخراج مرنًا ضد إعادة التشكيل وتغيير التسمية. إذا حاول أحد استخدام أداة جافا سكريبت JavaScript على التعليمة البرمجية المبهمة ، فلن تعمل الشفرة بعد الآن ، مما يجعل فهمها وتعديلها أكثر صعوبة. يتطلب تمكين خيار - كود مضغوط . |
String Array سلسلة الصفيف | خيار - مستحسن - يزيل حرفية السلسلة ووضعها في صفيف خاص. على سبيل المثال var m = "Hello World"; سيتم استبدال السلسلة "Hello World!" في مكالمة إلى دالة تسترد قيمتها في وقت التشغيل ، النتيجة كالتالي: var m = _0xb0c3('0x1'); |
Rotate String Array تدوير سلسلة الصفيف | خيار - مستحسن - فهو يجعل من الصعب مطابقة ترتيب السلاسل المحذوفة مع مكانها الأصلي. يوصى بهذا الخيار إذا كانت شفرة المصدر الأصلية ليست صغيرة ، لأن وظيفة المساعد يمكن أن تجذب الانتباه. |
Encode String Literals ترميز سلسلة الصفيف | قم بترميز جميع القيم الحرفية للسلسلة باستخدام الخياران: 1- خيار Base64 : ترميز سريع لكن يمكن كشفه بسهولة 2- خيار RC4 : ترميز ابطا لكن من الصعب كشفه / خيار - مستحسن - خيار RC4 أبطأ بنسبة 30 إلى 35٪ من خيار Base64 ، لكن من الصعب استرجاع السلاسل إلى الخلف. لذلك أنصحك بإستخدام RC4 |
String Array Threshold ضبط سلسلة الصفيف | خيار - مستحسن - يعد هذا الإعداد مفيدًا في الأكواد البرمجية الكبيرة إجعل القيمة بين (0.8 إلى 1) |
Transform Object Keys تحويل مفاتيح الكائنات | خيار - مستحسن - بحيث يقوم بحجب الكائنات و الروابط على سبيل المثال، هذا الرمز var a = {enabled: true}; سيتم إخفاء القطعة بهذا التنسيق : var a = {}; a[_0x2ae0[('0x0')] = true; يستخدم بشكل مثالي مع تمكين الخيار سلسلة الصفيف . |
Escape Unicode Sequence سلسلة الهروب | خيار - طوعي - يقوم بتحويل كل السلاسل إلى تمثيل يونيكود. على سبيل المثال ، "Hello World!" سيتم تحويل السلسلة إلى "'\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21". لاينصح به على الأكواد الكبيرة بسبب انه سيزيد من حجم الملف. |
Disable Console Output تعطيل مخرجات وحدة تحكم السجل | خيار - طوعي - الغرض منه تعطيل استخدام console.log و console.info و console.errorو console.warnخلال استبدالها مع وظائف فارغة. وهذا يجعل استخدام مصحح الأخطاء أصعب. |
Debug Protection تعطيل اداة مصحح الاخطاء | خيار - مستبعد - يعمل على تعطيل اداة Debugger أو المنقّح يجعل هذا الخيار من المستحيل تقريبًا استخدام علامة تبويب وحدة التحكم في أدوات المطور الموجودة في المتصفحات وفي الغالب يصيب المتصفح بالتشنج أو التعطيل بمجرد فتح صفحة المصدر. وفي حال أردت تشغيل هذا الخيار بمعنى أنك تريد حقن شفرة تعطيل اداة مصحح الاخطاء فالاحسن تحديد الخيار على سكريبت واحد فقط إذا كان عندك اكثر من سكريبت على قالبك وذلك لتفادي التكرار. ينصح بهذا الخيار مثلا في الواجهة - القالب الشخصي - الخاصة بالمطور نفسه ولاينصح به في القوالب والمنتجات الخاصة بالمستخدم. |
/ | / |
/ | / |
في حال ما إلتبست عليك الأمور إنسى ضبط الإعدادات التي ذكرناها في الجدول و قم بضبطها كما في الصورة التالية...
التعليمات المطروحة في صفحة الأداة
لكي تاخذ فكرة واسعة لمشروع JavaScript Obfuscator Tool سنحاول توضيح ماتم طرحه في الاسئلة الشائعة على واجهة المستخدم الخاصة بالأداةهل التشفير بواسطة هذه الأداة مضمون؟
كما نعلم لايوجد شيء إسمه حماية مطلقة للسكريبت لكن هناك مستويات وصدقوني إن قلت أن مستوى هذه الأداة في الحماية مرتفع جدا لدرجة أنه من المستحيل استرداد شفرة المصدر الأصلية بالضبط .أما مسئلة كسر التشفير لايكون إلا من شخص لديه الوقت والمعرفة والصبر لعكس السلسلة.
قلت لايوجد حماية مطلقة نظرًا لأنه مادام محرك JavaScript في المتصفح قادرًا على قراءته وتفسيره ، فتأكد أنه لا توجد طريقة لمنع ذلك. والنتيجة تحصيل حاصل لايوجد أداة تشفير خارقة ..لكن توجد حيل المطور!!
الخلاصة / إستخدم هذه الاداة وأتحداك أن تجد بديلا أحسن منها في الوقت الراهن.
لماذا الكود المستخرج أكبر من الشفرة المصدرية؟
لأن تطبيق obfuscator يقدم أجزاء جديدة من التعليمات البرمجية التي تهدف إلى الحماية والدفاع ضد تصحيح الأخطاء والهندسة العكسية. كما يتم تحويل السلاسل إلى كود سداسي عشري لجعل الأمور أصعب قليلاً لفهمها.لكن لا داعي للقلق بشأن حجم الشفرة لأنه نظرًا لوجود الكثير من التكرار ، سيتم ضغط الشفرة المبهمة بشكل جيد للغاية بواسطة خادم الويب تستطيع أن تتأكد بنفسك من خلال أداة التحقق من ضغط GZIP
هل يمكن تشغيل مصغر على الكود المستخرج؟
لا يُنصح إستخدام الأدوات المطلوبة مثل UglifyJS أو Google Closure Compiler لغرض تقليل حجم الكود المستخرج لأنه في بعض الحالات سوف يكسر التشفير (مثل إذا قمت بتمكين الدفاع عن النفس ). و يزيل الكود الميت ويقوم بتحسينات أخرى.هل يتم تخزين الكود المصدري الخاص بك عند إستخدامك للأداة؟
المقصود بتخزين الكود المصدري هو مثل مايفعل تطبيق hexdecoder في الإحتفاض بنسخ من الملفات التي يتم تقديمها من طرف المستخدمين.لكن مع تطبيق obfuscator . تتم معالجة المصدر بواسطة خادم التطبيق الخاص بمطور الأداة ، ثم إلى مرحلة التعتيم - التشفير أو التشويش واخيرا العودة إلى المستعرض ، لذلك يبقى فقط على ذاكرة الخادم لفترة زمنية قصيرة (عادةً بالميلي ثانية).
أي أنه لا يوجد اي خوف على ملفاتك البرمجية من ان توضع في سجل المراجعات مادامت لاتوجد اصلا ذاكرة تخزين.
هل يمكن استعادة شفرة المصدر الأصلية ؟
طبعا لا ، فمن المستحيل إعادة الشفرة المبهمة إلى الشفرة الأصلية ، لذا يجب أن تتأكد من حفظ نسخ إحتياطية لملفاتك النصية على الجهاز الخاص بك أو الخدمات السحابية مثل Google Drive .تشغيل obfuscator على الخادم / الجهاز الخاص؟
هذه الأداة مجانية ومفتوحة المصدر (BSD-2-Clause مرخصة) مكتوبة بلغة TypeScript. يمكنك الذهاب إلى صفحة المصادر github الخاصة بها وقراءة المزيد هناك ستجد في نفس الصفحة مجموعة من الملحقات التابعةوالرائع فعلا هو ، تطبيق الويب كذلك هو مفتوح المصدر . تحقق منه على صفحة المصادر github .
وعليه سنقوم بتهيئة الأداة لتعمل كملف index دون الحاجة للإتصال بالنت كمشروع قادم إنشاء الله تعالى.
إرسال تعليق