كيف يعمل التطبيق RunAsDate ؟
#1
السلام عليكم ورحمة الله

نعلم جيدا أن الكثير من البرامج تعمل وفق مدة تجريبية ، تعتمد هذه البرامج على تاريخ النظام.

* ماذا لو ثبتنا تاريخ هذا البرنامج ؟ ، مثال برنامج به باقي 30 يوم من المدة التجريبية ، حتى مع تغيير التاريخ يبقى التاريخ ثابت لا تنقص الأيام.

- يوجد برنامج يقوم بهذه المهمة RunAsDate

رابط البرنامج
كود :
http://www.nirsoft.net/utils/run_as_date.html

+ على ما أعتقد يوجد مصدر للبرنامج بلغة #C
كود :
https://github.com/badforlabor/runasdate/blob/master/Program.cs

* الأن إلى صلب الموضوع ماذا لو برمجنا هذا البرنامج بلغة الدلفي ؟ .

+ المشاركة متاحة للجميع ، من لديه خبرة في التعامل مع الملفات التنفيذية فل يشاركنا بخبرته ، المبدأ نفس عمل برنامج [b]Loader[/b]
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
[-] كل من 1 user says قال شكرا ل larbiparadox على المشاركة المفيدة
  • Delphi4Us
الرد
#2
السلام عليكم 

ترجمة بسيطة لذلك الكود المكتوب ب #C ربما تفيد 


.rar   RunAsDate.rar (الحجم : 88.86 ك ب / التحميلات : 38)
:: من يملك المعلومة يملك الميدان :: 
[-] كل من 3 users say قال شكرا ل AX302 على المشاركة المفيدة
  • larbiparadox, أبو معاذ, Delphi4Us
الرد
#3
(28-11-2021, 10:47 PM)AX302 كتب : السلام عليكم 

ترجمة بسيطة لذلك الكود المكتوب ب #C ربما تفيد 

وعليك السلام

شكرا على تحويل الكود الى الدلفي ، لكن لا يقوم بالمهمة المطلوبة
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
الرد
#4
بعد تتبع برنامج  RunAsDate  يعتمد على  دوال  Winapi  الخاصة بـ Windows ، الممثلة في ملف Kernel32.dll

برنامج في حالة اخذ المعلومات من النظام  بواسطة دالة ما، يتم إعادة توجيهه بشئ أخر

* وطرف الخيط في هذا المصدر ، حيث تتم عملية الحقن

كود :
https://github.com/MahdiSafsafi/DDetours

يمكننا اعادة توجيه دالة افتراضية للتاريخ و الوقت
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
[-] كل من 2 users say قال شكرا ل larbiparadox على المشاركة المفيدة
  • أبو معاذ, Delphi4Us
الرد
#5
و عليكم السلام و رحمة الله
موضوع جميل و مفيد جدا...
اظن ان قسمه المناسب هو قسم التمارين...

القيت نظرة على سورس "السي شارب" و عملت له بناء مع حذف و اضافة اشياء (مثل اضافة التحقق من ان التطبيق تم تشغيله بصلاحيات الأدمن)
ما يقوم به السورس الأصلي و "المعدل" بسيط جددا:
1- يحفظ التاريخ الحقيقي.
2- يغير تاريخ النظام بما يحتويه ملف "runasdate.ini"
3- يشغل البرنامج المستهدف بما يحتويه ملف "runasdate.ini"
4- ينتظر مدة معينة بما يحتويه ملف "runasdate.ini"
5- يعيد التاريخ الحقيقي.
6- ينهي تنفيذ نفسه.
كملخص، يقوم التطبيق برمجيا ما يستطيع عمله صاحب الجهاز يدويا.

.rar   runasdate_csharp.rar (الحجم : 9.26 ك ب / التحميلات : 10)


بخصوص الترجمة الى دلفي، المثال فوق ينقصه:
1- اضافة معلومات لــ STRUCTURE
PHP كود :
NewSystemTime.wSecond := 0;
NewSystemTime.wHour := 0;
NewSystemTime.wMinute := 0; 

2- اضافة "الانتظار" بين مرحلة تشغيل البرنامج المستهدف و امر ارجاع التاريخ الحقيقي.
PHP كود :
  ShellExecute(0, 'open', PWideChar(FileName), '', '', SW_SHOWNORMAL);
  sleep(5000);
  SetLocalTime(OldSystemTime); 

و اخيرا، دالة النظام المسؤولة عن تغيير التاريخ تحتاج صلاحيات "المدير" لكي تعمل...

بخصوص طريقة عمل التطبيق csharp يمكن تجاوزها ! كيف ؟

بخصوص اداة nirsoft لم القي نظرة على عملها بعد...
[-] كل من 3 users say قال شكرا ل I3CT على المشاركة المفيدة
  • embarcadero, أبو معاذ, larbiparadox
الرد
#6
(29-11-2021, 07:03 PM)larbiparadox كتب :
(28-11-2021, 10:47 PM)AX302 كتب : السلام عليكم 

ترجمة بسيطة لذلك الكود المكتوب ب #C ربما تفيد 

وعليك السلام

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

السلام عليكم 
 تم عمل تعديل بسيط مثل ما قال الاخ I3CT (اضافة Structure + UAC)

بخصوص عمل برنامج NirSoft , من الموقع الرسمي يمكن ملاحظة التالي : 

PHP كود :
How does it work ?
RunAsDate intercepts the kernel API calls that returns the current date and time (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime, NtQuerySystemTime, GetSystemTimePreciseAsFileTime), and replaces the current date/time with the date/time that you specify. 

Intercepts بمعنى القيام باعتراض (Hook) تلك الدوال و تغير قيم فيها 

يمكن تفقد هذا المثال لدالة GetlocalTime ربما يفيد 

PHP كود :
https://www.52pojie.cn/thread-988900-1-1.html 


.rar   RunAsDate_Modified.rar (الحجم : 89.13 ك ب / التحميلات : 8)
[-] كل من 2 users say قال شكرا ل AX302 على المشاركة المفيدة
  • larbiparadox, أبو معاذ
الرد
#7
(30-11-2021, 05:05 PM)AX302 كتب :
(29-11-2021, 07:03 PM)larbiparadox كتب :
(28-11-2021, 10:47 PM)AX302 كتب : السلام عليكم 

ترجمة بسيطة لذلك الكود المكتوب ب #C ربما تفيد 

وعليك السلام

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

السلام عليكم 
 تم عمل تعديل بسيط مثل ما قال الاخ I3CT (اضافة Structure + UAC)

بخصوص عمل برنامج NirSoft , من الموقع الرسمي يمكن ملاحظة التالي : 

PHP كود :
How does it work ?
RunAsDate intercepts the kernel API calls that returns the current date and time (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime, NtQuerySystemTime, GetSystemTimePreciseAsFileTime), and replaces the current date/time with the date/time that you specify. 

Intercepts بمعنى القيام باعتراض (Hook) تلك الدوال و تغير قيم فيها 

يمكن تفقد هذا المثال لدالة GetlocalTime ربما يفيد 

PHP كود :
https://www.52pojie.cn/thread-988900-1-1.html 

شكرا لـ I3CT و AX302 ، طريقة تغيير وقت نظام مؤقتا ، ليس بحل جيد لأنه في كل مرة تشغل البرنامج يؤخر وقت نظام

أفضل حل و هو اعتراض (Hook) تلك الدوال و تغير قيم فيها ، ولكن اعتراض الدوال الخاصة بالملف المستهدف
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
الرد
#8
السلام عليكم.
هناك وحدة اسمها EXMODE ،
هذه الوحدة تتيح الفرصة للكتابة في الملف التنفيذي.
ربما تكون مفيدة.
يمكن تخزين تاريخ الابتداء و تاريخ النظام و المقارنة بينهما.
.7z   EXMODE.7z (الحجم : 12.32 ك ب / التحميلات : 8)
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
[-] كل من 3 users say قال شكرا ل أبو معاذ على المشاركة المفيدة
  • embarcadero, wadoud, larbiparadox
الرد
#9
برمجت على السريع تطبيق صغير الحجم (32/64) بت بهدف تجربة الحقن عليه و جعله يرجع ما نريد...


.rar   release.rar (الحجم : 2.09 ك ب / التحميلات : 8)

[صورة: 5dmT3Y6.gif]
[-] كل من 2 users say قال شكرا ل I3CT على المشاركة المفيدة
  • larbiparadox, أبو معاذ
الرد
#10
السلام عليكم 

تجربة Hook باستعمال DDetours

[صورة: F6nY4Yc_d.webp?maxwidth=760&fidelity=grand]


.rar   HookTimeD4A.rar (الحجم : 123.18 ك ب / التحميلات : 14)
:: من يملك المعلومة يملك الميدان :: 
[-] كل من 1 user says قال شكرا ل AX302 على المشاركة المفيدة
  • larbiparadox
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم