الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن حماية البرامج من تغيير التوقيت؟

مغلق
بدأه xhacker في 26 أغسطس 2005 · 30 رد · 4,000 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

توجد بعض البرامج لتى تكسر الحماية الموضوعة على البرنامج عن طريق تغيير توقيت الويندوز! :(

فياريت كيفية حماية البرنامج منها!(يوجد مثال صغير مرفق مع المشاركة)

DateHack.zip.zip

#2

السلام عليكم ورحمة الله وبركاته

الحماية منها انك ماتعتمدش على التاريخ فى حماية البرنامج لان البرامج دى بتفتح البرامج اللى بتشتغل مدة معينة وبعد كده تتوقف

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

feed.1.gif

#3

لدي فكره ...

يمكن انشاء مفتاح في الريجيستري اثناء عملية تنزيل البرنامج وتحفظ فيه تاريخ اليوم

وفي كل مره يتم تشغيل البرنامج من المفترض أن يكون التاريخ بعد او هو نفس التاريخ المحفوظ من قبل

ويتم حفظ التاريخ الجديد في الريجستري

اما لو قام البرنامج بمقارنة التاريخ الحالي مع التاريخ المحفوظ في الريجيستري ووجد ان التاريخ الحالي قبل التاريخ المحفوظ >>>>>

إذاً تم التلاعب في التاريخ ولا يسمح بتفعيل البرنامج

طبعا انت حافظ تاريخ اول يوم تم تشغيل البرنامج به لزوم المقارنه وانهاء فترة التجربه

تم تعديل هذه المشاركة بواسطة Asm4all في 26 أغسطس 2005 في 16:59

#4

الكلام ده معروف و انا ليا مشاركة فى هذا الصدد فى موضوع برنامجArmadillo و لكن الفكرة هى عن كيفية التغلب على هذه البرامج و البداية هى ان نعرف ما تفعله اصلا لتخدع البرنامج و بدون التأثير على تاريخ النظام الاساسى!

تم تعديل هذه المشاركة بواسطة xhacker في 26 أغسطس 2005 في 16:59

#5

طب افرض ان انا خليت التاريخ اللى انا هتلاعب بيه هو نفس التاريخ الذى نزلت به البرنامج!!

بذلك عندما يقوم البرنامج بالمقارنة سيجد ان التاريخ هو نفس التاريخ و ليس قبله (او بعده) و سيقبل العمل!

(ياريت تنزل البرنامج الاول عشان المسألة تبقى واضحة)

تم تعديل هذه المشاركة بواسطة xhacker في 26 أغسطس 2005 في 17:05

#6

نتكلم بالبرمجه افضل

حنعمل مفتاح ( متغير في الريجستري) نسميه A ونحفظ فيه تاريخ أو مره تم تشغيل البرنامج

ونعمل مفتاح ونسميه B ونحفظ فيه تاني تاريخ التشغيل

بعد كده .....

عند تشغيل البرنامج يقوم بعمل الآتي :

1 - يقارن بين تاريخ اليوم والتاريخ المحفوظ في B

اذا كان تاريخ اليوم يسبق المحفوظ في B إذا تم التلاعب في التاريخ , ويتم غلق البرنامج

اذا كان تاريخ اليوم يساوي أو بعد التاريخ في B

@@@@@ نحفظ تارخ اليوم في B - بكده التاريخ اتغير ولو عدلته تاني ليوم تثبيت البرنامج حيعرف انه تم التعديل فيه @@@@@

2 -نقارن بين تاريخ اليوم والتاريخ المحفوظ في A

اذا وصل الفرق للمده المسموحه اغلق البرنامج

#7

الفكرة هى ان البرنامج بتاعى لما ييجى ياخد التاريخ من الويندوز هياخد تاريخ غلط (تاريخ اول مرة) مش تاريخ اليوم الصحيح

يعنى لما اشغل البرنامج المرفق على البرنامج بتاعى تاريخ الويندوز بالنسبة للبرنامج بتاعى هيفضل متجمد

و بالمنطق بتاعك التاريخ لما البرنامج يعمل فيها الفحص هيفضل بالنسبة للبرنامج تاريخ اول مرة بدون زيادة او نقصان!

ياريت تعمل تجربة بسيطة جدا شان تتأكد من اللى انا بقوله

تم تعديل هذه المشاركة بواسطة xhacker في 26 أغسطس 2005 في 17:38

#8

كل البرامج اللي عندي بالسريال نامبر مش محتاج أعدل التواريخ

خلاص , لا تعتمد على التاريخ , اعتمد على عدد مرات التشغيل

تم تعديل هذه المشاركة بواسطة Asm4all في 26 أغسطس 2005 في 17:58

#9

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

#10

طيب في طريقه تانيه علشان حكاية البرنامج اللي انت بتقول عليه ده

ملحوظه : لم أنظر بعد في كود السي المرفق مع البرنامج لذلك لا اعلم فكرة عمله

اعتقد والله اعلم ان البرنامج يخدع دالة النظام المسئوله عن جلب التاريخ من النظام , ويقوم بتمرير تاريخ ثابت

فما رأيك باخذ التاريخ بطريقه بدائيه لا علاقه لها بالنظام ؟

تأخذ التاريخ من الــ BIOS نفسه عن طريق دوال الادخال والاخراج , وبهذا تكون قد فلت من الكمين الذي اعده البرنامج لك

طبعا البرنامج يقوم بايقاف التاريخ نظريا ولكنه بالفعل يعمل في الــ BIOS

ها ما رأيك بهذه الفكره ؟؟؟؟

#11

الفكرة جميلة بس ياريت تقولى ازاى!

#12

بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته

أخي الكريم لا تكتفي بأخذ التاريخ م ن الوندوز

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

لا تكتفي فقط بالرجيستري، يمكم إستخدام ملف ini

وليكن خيالك و اسع

تم تعديل هذه المشاركة بواسطة DeltaAziz في 27 أغسطس 2005 في 12:56

d4baa0.gif
#13

طب ازاى اتعامل مع ال BIOS؟؟؟؟؟؟؟؟؟؟

هى دى المشكللللللللللللللللللللللللللللة!

تم تعديل هذه المشاركة بواسطة xhacker في 27 أغسطس 2005 في 12:33

#14

التعامل مع الــ BIOS يكون من خلال دوال الادخال والاخراج , حيث انك ستتعامل مع منفذ لعنوان معين في ذاكرة الــ BIOS وعنوان آخر لتقرأ منه البيانات

انا حاشرح بالأسمبلي ثم اعلق بالسي لأني لا أتذكر بيسيك حاليا للاسف :

mov dx,70h
mov al,07h
out dx,al
inc dx
in al,dx
mov month,al

dec dx
mov al,08h
out dx,al
inc dx
in al,dx
mov day,al

المثال خطوه خطوه

أولا نحدد عنوان مكان حفظ الشهور في ذاكرة الــ BIOS

وهو العنوان رقم 07

نخرج هذه القيمه على Address Bus الخاص بـالـ BIOS وهذا من خلال العنوان 0x70

outport(0x70, 7);

الآن نقرا من الــ Data Bus القيمه المحفوظه داخل العنوان الذي اخترناه وهو الشهر

عنوان الــ Data Bus هي 0x71

سنقوم بتخذين الناتج في متغير يسمى monthe

monthe = inport(0x71);

الآن نقرأ اليوم بنفس الطريقه ولكن عنوان اليوم هو 8

outport(0x70, 8);

ونحفظ الناتج في متغير اسمه day

day = inport(0x71);

ملحوظه هامه : النتيجه محفوظه بصورة BCD اي انك تقراها صحيحه وهي في صورة الهيكسديسيمال

بعد هذا تقوم بعملية المقارنه كما تحب

ارجو ألا اكون عقدت الأمور , وارجوا ممن يستطيع الترجمه الى البيسيك ليستفيد الجميع

احمد

تم تعديل هذه المشاركة بواسطة Asm4all في 27 أغسطس 2005 في 23:02

#15

مشكوووووووووووووووووووور و ياريت لو اى عضو يحوله للبيسك لتعم الفائدة!

#16

طيب لو المستخدم هو اللي ثبت التاريخ يعني لو كل يوم قبل تشغيل البرنامج يقوم بارجاع التاريخ الي

نفس يوم تنزيل البرنامج سواء من الويندوز او من Bios ، فما هو الحل؟

#17

برامج تغيير التوقيت تخدع البرنامج إذا تعامل مع الويندوز ليأخذ التاريخ و ليس عندما يتعامل مع البيوس

#18

اعتقد في البيسيك مش حتفرق كثير عن السي

يعني على افتراض ان دوال التعامل مع المنافذ بهذا الاسم

Inp, outp

يكون الكود بهذا الشكل

outp &h070, 7
month = inp(&h071)
outp &h070, 8
day = inp(&h071)

مش فاكر بالضبط تمثيل الهيكس في البيسيك هل هو بهذه الصوره أم لا :(

عموما يمكنك تسجيل الساعه كمان وتعمل معاها نفس الحكايه لو التاريخ هو هو

ولو الراجل بيلعب في التاريخ بتاع الويندوز نفسه والوقت كمان , يبقى مفيش فايده واتحدى اي فكره تانيه , لأن البرنامج مش بيشم على ظهر ايده :blink:

#19

هو لا يتلاعب فى التوقيت الاساسى للنظام !بل يتلاعب فى الويندوز بس !

و من البحث الذى كنت قد قمت به من فترة فلا يوجد اى برنامج يتلاعب فى التوقيت الاساسى بأستئناء برنامج XCopy NeverExpire الذى انقرض الان و لا يوجد حتى فى شبكات مشاركة الملفات!(و لكننى احتفظت بنسخة منه!! B))

تم تعديل هذه المشاركة بواسطة xhacker في 29 أغسطس 2005 في 10:34

#20

بسم الله الرحمن الرحيم

ممكن معرفة ما إذا كان التاريخ مجمد أو لا حسب فترة عمل البرنامج ( طبعا حسب طبيعة عمله ) فإن عمل البرنامج أكثر من 24 ساعة دون اغلاق أكيد لازم التاريخ يتغير وجوبا والا .......

حكيت طبعا حسب طبيعة عمل البرنامج أي أنه من الممكن أن تغير الحد الى 12 ساعات أو 8 ساعات أو .... .

طبعا هذا للتأكد من أن الوقت لم يغير أو يجمد .

والسلام عليكم ورحمة الله وبركاته

********************* ******************** *********************

(( أشــهد أن لا اله الا الله ..... وأشهد أن محمد رسول الله ))

********************* ******************** *********************

لا تقـل من أيـن أبدأ

طـاعـة الله الـبدايـة

***

لا تقـل أين طـريـقي

شــرع الله الهـدايـة

***

لا تـقـل أيـن نعـيمي

جـنـة الله كـفـايـــــة

***

لا تقـل في الغـد أبدأ

ربمـــا تأتـي النهـايـــة

**************** **************** ****************

#21

الفكرة جميلة ! مشكوووووووووووووور!

#22

أخي الفاضل:

لقد خطرت لي فكرة و انا أقرأ هذا الموضوع و هي كالتالي:

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

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

أرجو ان أكون قد وفقت في عرض الأفكار , و بإنتظار تعليقاتكم ...

و لكم مني جزيل الشكر,,, (h)

____________________________________________________________________________

{ اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ } سورة الأنبياء (1)

____________________________________________________________________________

In a world without walls and fences, who needs Windows and Gates

مدونتي

#23

هى دى الافكار المحترفة بجد يا جماعة!

ياريت بقى نبتدى نعمل امثلة !

تم تعديل هذه المشاركة بواسطة xhacker في 29 أغسطس 2005 في 14:14

#24

السلام عليكم

اليكم هذه الفئه والتى تتي لمبرمجى VB ان يجلبوا اهم بيانات الBios

أرجو ان تفيد

Saif_Bios.rar

لآ إله إلا الله محمد رسول الله

#25

بس ياريت كمان الفورم مع نموزج للتطبيق!

هذا الموضوع مغلق.

مواضيع مشابهة