ams 4 arab
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتدى تعليمي متعلق بالاتوبلاي ميديا ستوديو
 
الرئيسيةأحدث الصورالتسجيلدخول

 

  سلسلة حماية البرمجيات (منع الباتش و إسترجاع الكود)

اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin
Admin



المساهمات : 83
تاريخ التسجيل : 12/03/2013

 سلسلة حماية البرمجيات (منع الباتش و إسترجاع الكود) Empty
مُساهمةموضوع: سلسلة حماية البرمجيات (منع الباتش و إسترجاع الكود)    سلسلة حماية البرمجيات (منع الباتش و إسترجاع الكود) Emptyالثلاثاء مارس 12, 2013 4:24 pm


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

اليوم سنبدأ بدرس جميل عن منع الباتش و إسترجاع الكود
أولا ما هو الباتش
هو طريقة لتغيير أحد شروط البرنامج
فمثلا لو أنت كتبت فى الأوتوبلاى
if serial== 123456
فإنها تترجم عند أرجل المعالج بنتيوم إلى
cmp ,eax 123456
je xxxxxxxxx
حيث xxxxxxxx هو عنوان بدء التفعيل و التسجيل
و كلمة je
هى jump if equal
و cmp هى إختصار compare أى مقارنة
فماذا يفعل الكراكر
الكراكر غالبا ما تكون قدراته البرمجية محدودة
و لماذا يهتم بالبرمجة ما دامت الصيغة التى ستظهر عليها كل المقارنات فى الأسمبلى متشابهة
لأنه فى الظلام كل البقرات سوداء
كذلك فى الأسمبلى كل المقارنات هى cmp متبوعة ب je
لذلك يكتفى الكراكر بتحويل je إلى jne
التحويل من jump if equal إلى jump if not equal
و يعدل المقطع البرمجى كالآتى
من
cmp ,eax 123456
je xxxxxxxxx
إلى
cmp ,eax 123456
jne xxxxxxxxx
يعنى التغيير من je إقفز فقط لو تساوي السيريال مع الصحيح
إلى jne إقفز فقط لو لم يساوى السيريال الصحيح
لدينا طريقتين هنا
الطريقة الأولى منع الكراك بجعل الملف يتلف لو تم عمل باتش و هى طريقة مضمونة 100% و لها عيب واحد و هو أنها تتأثر بالفيرس و لكن إكتشفت طريقة لحل تلك المشكلة
الطريقة الثانية جعل البرنامج يقبل الباتش ثم عند تشغيله يسترجع كوده الأصلى

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


الحلقة الثانية
سنبدأ بأول سيناريو للحماية
و هو إسترجاع الكود
بعد إنتهاءك تماما من كتابة كل أكوادك و تعليقاتك و قبل تصدير المشروع
أضف الكود الآتى لصفحة التسجيل التى إسمها مثلا page1

[
الكود:
s1 = Application.GetPageScript("Page1", "On Show");
s2 = Application.GetPageScript("Page2", "On Show");
s3 = Application.GetPageScript("Page3", "On Show");
s4 = Application.GetPageScript("Page4", "On Show");
s5 = Application.GetPageScript("Page5", "On Show");
ser = 123456
if s1~=s2
then
Page.Jump("Page5");
elseif s5~=s2
then
Page.Jump("Page4");
else
end
ما هذا ؟؟؟؟
المشروع ليس به إلا صفحة واحدة و أنت تقارن حتى صفحة 5 ؟؟ هل تمزح ؟؟ Mad Mad Mad

8-) 8-) 8-) لا أعزائى حاشا لله
و لكن بعد قليل سنقوم بتكرار هذه الصفحة بالأمر duplicate حتى نصنع منها 5 نسخ متطابقة
و لاكن ............................ إنتظر
قم بنسخ زر التسجيل فى نفس الصفحة و أزد عليه الكود الآتى
الكود:
bk1 = Page.GetObjectScript("Button1", "On Click");
bk2 = Page.GetObjectScript("Button2", "On Click");
user = Input.GetText("Input1");
ser = 123456
if bk1 ~= bk2 then
result = Dialog.Message("Notice", "not matched", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
elseif user+0 == ser+0 then
Dialog.Message("Notice", "good", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
else
result = Dialog.Message("Notice", "bad", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
طبعا ستغيرون طريقتكم للتسجيل كما تشاؤون المهم لابد من الأسطر 1 و 2 و 5

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

ما هذا ؟؟؟؟؟؟؟؟؟؟ حلقة مفرغة ؟؟؟؟؟؟؟؟؟
ههههههههههه نعم
لكن من سيقع فيها هو الكراكر فلا تنزعجوا

كيفيه و آلية العمل
سيبدأ الكراكر بمحاولة تغيير كود الصفحة فإن غيرها سيحدث الآتى
سيقارن البرنامج بين كود الصفحة 1 و الصفحة 2 فإذا لم يكونا متساويين سينتقل البرنامج إلى الصفحة 5 و هى طبعا نسخة من الكود الأصلى
و على سبيل الإحتياط ستتم المقارنة بين الصفحة 5 و الصفحة 2
فلو كانتا متساويتين سيعمل البرنامج
أما لو كان الكراكر عنيد و قام أيضا بتعديل الصفحة 2 إذا فقد طفح منه الكيل
فليذهم إلى جحيم الصفحة 4
عندها سيدور فى حلقة لا نهائية 34343434 إلى الأبد
و لكن أنت طبعا ستجرب فلو وصلت لهذه الحالة بسبب التجربه فقم بإستدعاء مدير المهام
alt+ctrl+del وقم بإنهاء البرنامج
و ماذا لو حاول الكراكر تغيير الشرط من يساوى إلى لا يساوى ؟؟
هذا الكود موجود فى زر التسجيل
و زر التسجيل يقارن نفسه مع الزر غير النشط و المخفى
الذى يحتوى على الكود الأصلى و يعطى رسالة غير مطابق
و هنا سيعتقد أن الذى لا يطابق هو السيريال
بينما الذى لا يطابق هو كود الزرين
حاولو تغيير أكواد الصفحة عند on show
و شغلو البرنامج
ثم غيرو شرط المقارنة فى زر التسجيل
و شغلوا البرنامج
و أنا جاهز لإستفساراتكم

أتطلع إلى ألا يسألنى أحد السؤال التقليدى
و ماذا لو قرأ الكراكر السيريال من الكود و هو 123456 و كتبه بكل بساطه فإجابة هذا السؤال موجودة فى توقيعى و فى درس منع قنص السيريال

أترككم للإستفسار
و معكم الملف المفتوح

http://www.multiupload.com/6LEG86JXW7
استفساري الاول : سوف اشرح لك شئ بسيط لان سؤالى مبني على هذا الشرح ....

نفترض اني وضعت في برنامجي الاكواد التاليه في on startup وليس في on preload للصفحه ..

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

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


يتبع ...

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

النصيحة البرونزية
كرر كود التحقق من تطابق الصفحات فى كل أزرار المشروع
حتى زر الخروج و حتى زر الثلاجة إن أمكنك Laughing Laughing Laughing
لا تزعل من المزاح فالموضوع جاف نوعا و صعب و لابد من بعض المزاح

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

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

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


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


نفترض ان الصفحات لا تشمل اي اكواد بالفعل لان اكواد البرنامج في ازرار فقط كيف يمكن عمل المقارنه ؟

يتبع ...
لسؤال مش واضح
حتى لو وضعت كود التحقق ...... لازم تحدد فين يعنى فى نفس الصفحة ؟ فى زر عليها ؟ فى صفحة المشروع؟؟ فى صفحة أو زر ثانى ؟؟ ...... حدد لو تكرمت
لو كان قصدك متقارنش بين صفحات يبقى لازم تكون مخزن الكود الأصلى و ناوى تسترجعه
و ممكن فى الحالة دى تحضره بدالة get ثم من دالة text تخزنه و لازم تشفره لأنه مش معقول تحط اكوادك بدون تشفير
و ممكن تخلى صفحة أو عدة صفحات من المشروع تراقب صفحة المشروع و فى الحالة دى حتقارن الكود الحالى مع كود تكون مخزنه
و لو قصدك إنه متعملش مقارنات خالص و تعمل إسترجاع للكود كل مرة تبقى جميلة جدا
علشان مفيهاش مقارنة تثير الكراكر
بس لاحظ إن بعد ما ترجع الكود
لازم لازم تعمل منقارنة من أي صفحة من المشروع
لأنك لو إكتفيت كل مرة بإرجاع الكود فقط حيبقى سهل تنكسر
على فكرة ممكن تستخدم كود الخروج من ضمن الأماكن إلى تعمل منها مقارنة لأنه مش مشكوك فيه و طبعا مش شرط زر الخروج أنا بقول كود الخروج يعنى موجود فى كل الصفحات
فى الحدث on shutdown فى صفحة المشروع
و فى الحدث on close للصفحه العادية
و أحداث صفحة المشروع لن تكون مثيرة للشك
لو اجابتى مش كافية أعد صياغة سؤالك بتوضيح أكثر
فكرة مش بطالة

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://ams4arab.yoo7.com
 
سلسلة حماية البرمجيات (منع الباتش و إسترجاع الكود)
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» سلسلة حماية البرمجيات (حماية البرنامج بالسيريال الملغوم)
» سلسلة حماية البرمجيات (درس منع قنص السيريال)
» سلسلة حماية البرمجيات (ملف cdd وخطورته)
»  (سلسلة حماية البرمجيات) تشفير الفيديو
»  (سلسلة حماية البرمجيات) منع المحاكاة و شرط وجود الأسطوانة

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
ams 4 arab :: منتديات الأوتو بلاي وصناعة الأسطوانات :: منتدى الدروس والشروحات-
انتقل الى: