13-01-14, 06:07 PM
(آخر تعديل لهذه المشاركة : 20-01-14, 12:45 AM {2} بواسطة الشاكي لله.)
بسم الله الرحمن الرحيم
والصلاة والسلام على اشرف الخلق محمد وعلى اله الطيبين والطاهرين
السلام عليكم ورحمة الله وبركاته
والصلاة والسلام على اشرف الخلق محمد وعلى اله الطيبين والطاهرين
السلام عليكم ورحمة الله وبركاته
--
مقدمة عن السلسلة
نرحب بكم في سلسلة دروس جديدة تحت مسمى [سلسلة ادوات المبرمج] ومن الاسم يتضح ان السلسلة تشرح بعض الادوات التي تساعد المبرمج في اداة عمله.
من عادتي ان اقوم بكتابة عنوانين المقالات في النوت باد قبل كتابة المقالات وهذا اسلوب من اساليب التخطيط < سأقوم بعمل سلسلة لاحقة لكيفية التخطيط لمشاريعك بشكل سليم.
المهم ، تتكون هذه السلسة من 3 مقالات :-
[سلسلة ادوات المبرمج] {1} - اداة مراقبة الريجستري RegFromApp
[سلسلة ادوات المبرمج] {2} - اداة تحليل صفحات الويب HAPXPathFinder
[سلسلة ادوات المبرمج] {3} - اداة تحليل طلبات الويب Live Http Header
[سلسلة ادوات المبرمج] {4} - اداة تحليل البرامج ++Spy
[سلسلة ادوات المبرمج] {1} - اداة مراقبة الريجستري RegFromApp
[سلسلة ادوات المبرمج] {2} - اداة تحليل صفحات الويب HAPXPathFinder
[سلسلة ادوات المبرمج] {3} - اداة تحليل طلبات الويب Live Http Header
[سلسلة ادوات المبرمج] {4} - اداة تحليل البرامج ++Spy
اعلم ان هناك سلسلة لم اكملها وهي [سلسلة التحكم] وأنا لم انسى ذلك ، لكني بحاجة الى معلومات اكثر لكيفيات تخطي الحمايات ليصبح المقال الخامس موسوعة علمية ومرجع كبير .
المهم نتابع معا هذه المقالة الرائعة
ماهي أداة RegFromApp
كلنا يعلم ماهو الRegistry وكيف يعمل ، حيث ان الRegistry مساحة لحفظ اعدادات الوندوز وحتى اعدادات بعض البرامج ، ويتطلب تغيير هذه الاعدادات معرفة مفاتيح القيم للوصول اليها وتعديلها.
--
الان هذا الخيار يقوم بإظهار رموز الدرايفرات :-
فلو قمت بتفعيله ، سيقوم الوندوز بعرض رموز الدرايفرات :-
واما لو قمت بإلغاء تفعيله ، لن تظهر الرموز :-
--
طيب لو طلب منك العميل ان تقوم بإلغاء تفعيل هذا الخيار برمجيا (بالكود) فكيف ستفوم بفعل ذلك ؟
طبعا اغلبنا يعرف الفئات والدوال التي تتعامل مع الريجستري ، ولهذا الكل يعرف انه لابد لنا من معرفة مفتاح هذا الخيار لكي نغيره قيمته ، فكيف نعرف المفتاح ؟
هناك طريقتين :-
1- البحث في قوقل
2- استخدام اداة RegFromApp
طبعا لن نتحدث عن الطريقة الاولى لأن الكل يعرف يبحث في قوقل .
استخدام اداة RegFromApp
الان يجب ان نذهب لذلك الاعداد
نشيل علامة الصح من على الاعداد ثم نضغط OK وهكذا سيقوم الوندوز بتغيير قيم الربجستري لهذا الاعداد
الان نذهب لأداتنا عشان نشوف ايش هي القيم الي غيرها الوندوز ، طبعا بتنزل لآخر الاداة دائما وبتلاقي :
اللون الازرق : مسار المفتاح
اللون الاخضر : اسم المفتاح
اللون الاحمر : قيمة المفتاح ونوعه
اللون الاخضر : اسم المفتاح
اللون الاحمر : قيمة المفتاح ونوعه
الان من الافضل أن نذهب للريجستري لكي نرى المفتاح وقيمته بشكل افضل :
نرى ان نوع المتاح هو DWORD وهذا يعني ان القيمة هي عبارة عن byte ، والان سنقوم بتغيير هذه القيمة "برمجيا" بواسطة السي شارب
تعديل قيم الريجستري
طبعا اغلبكم عارف كيف يغير قيمة بالريجستري ، وتكون على الطريقة التالية :-
PHP كود :
//[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
//"ShowDriveLettersFirst"=dword:00000002
byte date = 0x00000002;
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
@"Software\Microsoft\Windows\CurrentVersion\Explorer", true);
key.SetValue("ShowDriveLettersFirst", date, Microsoft.Win32.RegistryValueKind.DWord);
فقط انا اريد ان اوضح لماذا كتبت 0x فالبعض قد لايعلم وظيفتها . محرر الكود في السي شارب لايدعم كتابة الارقام بالنظام Hex ، فلو قررت كتابة هذا الرقم في المحرر لن يسمح لي بذلك :
PHP كود :
//HEX value
int hexValue = 0C; //<< Error
طيب مالعمل ، انا اريد ان اقوم بوضع قيمة Hex داخل هذا المتغير !! اصحابنا في الفيجوال بيسك يستخدمون البادئة H& ولكن نحن في السي شارب لدينا البادئة 0x ، فالان هذا الكود لن يعطي خطا :-
PHP كود :
//HEX value
int hexValue = 0x0C; //<< No Error
في الحقيقة بدل مانحاول اسناد قيمة بالهكس احدهم قال لي ، قم بتحويلها بالحاسبة الى النظام العشري مثلا 0C تساوي بانظام العشري 12 ، ولكن مادام السي شارب يدعم قيم الهكس باستعمال البادئة 0x اذن ليش تتعب نفسك وتحول القيم ؟؟
نرجع لكودنا:
PHP كود :
//[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
//"ShowDriveLettersFirst"=dword:00000002
byte date = 0x00000002;
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
@"Software\Microsoft\Windows\CurrentVersion\Explorer", true);
key.SetValue("ShowDriveLettersFirst", date, Microsoft.Win32.RegistryValueKind.DWord);
تلاحظ كتبنا 0x00000002 بتسألني من وين جبت هذي القيمة ؟؟
كما ذكرنا سابقا الاداة جلبت لنا القيمة ولكن
تقدر تروح للريجستري وتشوف القيمة (افضل ان تراها من الريجتسري مباشرة) :
بما ان DWORD هي قيمة = بايت ، لذلك سويت متغير بايت والقيمة كما ظهرت لي .
الان نفذ البرنامج ، وروح My computer وسو Refresh والنتيجة :
تم اخفاء رموز الدرايفرات.
--
طيب الان تبي ترجع الوضع لحالته الطبيعية لازم ترجع القيمة الاصلية قبل التعديل.
مادام احنا عرفنا المفتاح ، مايحتاج نستخدم الاداة RegFromApp ، كل ماعليك هو وضع علامة الصح على الاعداد الي غيرناه :-
ثم تروح الريجستري وتسوي Refresh وتشوف القيمة الجديدة :-
الان عرفنا كل شيئ :-
1- قيمة المفتاح وهو مفعل (اظهار رموز الدرايفرات) = 0x00000000
2- قيمة المفتاح وهو غير مفعل (اخفاء رموز الدرايفرات) = 0x00000002
يعني الان بكل بساطة اذا تبي ترجع القيمة الاصلية ماعليك سوا تعديل كود ال data الى:
PHP كود :
byte date = 0x00000000;
بما ان 0x00000000 تساوي 0 ، فلإختصار الكود يمكننا كتابة صفر عادية :
PHP كود :
byte date = 0;
لكن الافضل دائما استخدام قيم الhex كما هي عشان لاتتخربط لو كانت لديك قيم كبيرة عليك تعديلها .
النتيجة :-
رجوع رموز الدرايفرات.
الخاتمة