5/21/2019

settings_overscan print announcement
مرحبا اخواني وكل عام وأنتم بخير...في هذه التدوينة والتي قطعا ستفرح إخواننا المطورين بأداة سرية ومجانية متوفرة على النت تتيح لكم تحويل شفرة مصدر JavaScript الأصلية إلى تمثيل جديد يصعب فهمه ونسخه وإعادة استخدامه أوتعديله دون إذن. والرائع هو أنه مهما كان حجم وتداخل السكريبت المراد تشفيره سيكون للنتيجة المبهمة الوظيفة الدقيقة للرمز الأصلي..أقصد بدون الحصول على خطا بنسبة 99.99% أوليس هذا رائعا!!.
ومن الرائع كذلك في هذه الأداة التي من خلال استخدام مختلف التحولات و"الفخاخ"، مثل ، الدفاع عن النفس و حماية التصحيح ستصعب قراءته باستخدام أدوات مضادة كأداة 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 دون الحاجة للإتصال بالنت كمشروع قادم إنشاء الله تعالى.