ما هو أفضل API Monitor تستخدمه
KAM من www.kakeeware.com
ApiMonitor من www.apimonitor.com
ApiMonitor من www.rohitab.com
FileMonitor+RegMonitor+مجموعة SysInternals من www.sysinternals.com
او غيرها
يرجى ذكر سبب التفضيل وذكر المزايا والعيوب
ما هو أفضل API Monitor تستخدمه
KAM من www.kakeeware.com
ApiMonitor من www.apimonitor.com
ApiMonitor من www.rohitab.com
FileMonitor+RegMonitor+مجموعة SysInternals من www.sysinternals.com
او غيرها
يرجى ذكر سبب التفضيل وذكر المزايا والعيوب
تم تعديل هذه المشاركة بواسطة AND في 6 أكتوبر 2008 في 17:14
لم تذكرها كلها...بعضها بدون ترتيب
kerberos من Rustem Fasihov ليس له موقع
WinAPIOverride32 من Jacquelin POTIER الموقع http://jacquelin.potier.free.fr/winapioverride32/
Auto Debug من http://www.autodebug.com/
API Spy من vitaly evseenko الموقع http://www.matcode.com/apis32.htm
SpyStudio من http://www.nektra.com/products/spystudio/
وهناك اخرى...
وانت اخي محمد ماذا تفضل منها ؟
تختلف البرامج السابقة في كثير من المزايا وفي الاداء، سأعرض بعضها من وجهة نظر معينة:
XXXXXXXXXX
Points
SysInternals GroupKAMApiMonitorSpyStudioAPISpy32Auto Debug ProfessionalWinAPIOverride32ApiMonitor by rohitabReal TimeYESNONOYESNONONONOExplain ParametersYESSome of FunctionNONONONONONOBefor&After ParametersNONOYESYESNOYESNONODefine Exact API CallsNONONONOYESNOYESNOAbility to Extended (ADD New Dll & more Functions) NONOYESNONOAutoYESNOMonitor Multi ProcessYESNONOYESNONOYESYESLicense FreeFreeSharewareFreeSharewareSharewareFree under GPL Free[trrrrr]ساشرح النقاط الموجودة في الجدول:
Real Time:
وهي ان تتم المراقبة وتعرض النتائج دون ان يؤثر ذلك بالتأخير الزمني على وظائف البرنامج و عمله،ومجموعة ال SysInternals و SpyStudio
يحققان هذا الشيء والحقيقية ان الSpyStudio يقوم فقط بعمل Hook لبروسس يعمل (ِِِOnly Attach Process) ولا يدعم مراقبة البرنامج في بداية تشغيله وهذا اعتبره احد العيوب الكبيرة فيه.
اما باقي البرامج فعلى حسب كثافة اختيار الدوال محل المراقبة وطبيعة عمل هذه الدوال يتم تاخيرها ،فمثلا عند اختيار مراقبة الدالة SendMessage وهي من الدوال الكثيفة الاستخدام في البرامج ذات الواجهة فسيمضي وقت اطول لعمل البرنامج المُراقب.
================================================================================
Explain Parameters :
يعكس شرح لبارامترات دوال ال API التي يتم عرضها ،كمثال(من برنامج KAM ):
بينما في ApiMonitor :
(هنا KAM أعطى شرح موسع مثل FILE_SHARE_READ | FILE_SHARE_WRITE و OPEN_ALWAYS ولم يكتفي فقط بعرض ارقام مما يغني عن الرجوع لشرح الدالة)
اما برامج SysInternals فهي متميزة بالتوضيح فمثلا برنامج FileMonitor يعطي تفصيل دقيق لما يجري على الملفات فقط:
فيعرض الكثير من المعلومات الدقيقة مثل (Create,Open,Close,Read,Write,Query Information,Set Infomation ....etc )
فمن ناحية Create اذا عرضها فيعني انشاء حقيقي للملف وليس المعنى العام لCreateFile الذي قد يعني انشاء او فتح ، فيميز بين Create و Open اضافة الى معلومات اخرى موسعة
================================================================================
Befor&After Parameters :
هذا يعني ان البرنامج يعرض بارامترات الدالة قبل استدعاءها وبعدها للحصول على قيمة بارمترات معينة لبعض الدوال التي تستخدمهذه البارامترات لتخزين نتائج بها ( WinAPIOverride32 لايعرض Befor&After Parameters الا انه يعرض Befor&After All Register )
================================================================================
Define Exact API Calls :
وتعني عرض الاستدعاء الحقيقي للبرنامج وألا تدخل الاستدعاءات الضمنية للدوال للتوضيح اكثر:
شغل برنامج KAM وقم بمراقبة برنامج KAM نفسه باختيار الدالة CreateFileA سيُعرض ما يلي:
ستظهر استدعاءات كثيرة للدالة CreateFileAبينما في الحقيقة برنامج KAM يستدعي الدالة CreateFileA بشكل مباشر لمرة واحدة فقط ليقرأ محتويات الملف kam.ini والمشار اليه فوق باللون الازرق ولكن انظر الى استدعاءات الدالة باللون الاحمر بعدModule MLANG.dll accessed at 75CF0000هذه الاستدعاءات لا يطلبها البرنامج بشكل مباشر لكن MLANG.dll هي التي تطلبها في سياق(in Context) عملها داخل البرنامج
ولمن يستعملون الDebugger يماثل الامر الفرق بين وضع نقطة توقف(Break Point) للاستدعاء داخل البرنامج ووضع نقطة توقف للدالة في مصدرها (المنبع) اي وضع علامة توقف لل Export للدالة ، (لاحظ اختلاف العنوان Address ) :
وهكذا يتضح ان برامج ال API Monitors تقوم بعمل Hook للدوال في مصدرها اي في المكان الذي يتواجد فيه ال Export الخاص بدالة معينة
وهنا صراحة ارى مشكلة معينة وهي عدم دقة الحصول على الاستدعاءات المباشرة للبرنامج وظهور كثير من النتائج غير المشوشة للمُراقب في المتابعة ويستهلك الكثير من وقته وتركيزه للحصول على النتائج المباشرة لعملية المراقبة.
وهنا يتميز برنامج ال WinAPIOverride32 في عرض الاستدعاء المباشر للبرنامج مهملا باقي النتائج مما يعطي عرض دقيق ونقي لما يجري عند المراقبة
ايضا في كثير من الاحيان وفي ويندوز تستدعي دوال ال ANSI التي تنتهي ب A دوال ال Unicode التي تنتهي ب W
فمثلا اختيار كل من CreateFileA و CreateFileW للمراقبة سييعطي Duplicated Result ويؤخر في عملية المراقبة وتتصبح عملية مرهقة وصعبة
(ملاحظة هناك خيار لبرنامج ApiMonitor لتفادي هذه الحالة فقط ، الا ان WinAPIOverride32 يتجواز جميع ما سبق كما ذكر)
وهذه الميزة حاسمة عندي شخصيا في تفضيل WinAPIOverride32 على غيره.
================================================================================
Ability to Extended (ADD New Dll & more Functions) :
وهي القدرة على وضع مكتبات و Function جديدة لمراقبتها في فيما بعد كمثال وضع ملفات Dll الخاصة بياهو لمراقبتها !!
================================================================================
================================================================================
================================================================================
الان نظرة الى البرامج في الداخل:
SysInternals Group :
والتي تحتوي على برامج المراقبة التالية (FileMonitor+RegMonitor+ProcessMonitor+PortMonitor+DiskMonitor ) مجموعة متخصصة جدا في عملها FileMonitor اشهرها واكثرها استخداما تستطيع مراقبة اي نوع من الملفات تختاره وليس فقط الملفات التنفيذية وهو متوفر المصدر هو واخوه RegMonitor على الشبكة، وهي كثير التفاصيل الدقيقة الا ان هذه التفاصيل قد تصبح حشو زائد وكثرتها يسبب التشويش والبعد عن هدف معين اضافة الا ان هذه البرامج حالة خاصة فلا يمكن تعيين دالة بعينها لمراقبتها وانما تقوم بمراقبة عامة في تخصصها لكن وجدت ان هناك اختلاف كبير في نتائج File و Reg عند مراقبة برنامج مضغوط ونفس البرنامج بعد فك ضغطه حيث لم تعد تظهر نتائج عمليات حقيقية لبرنامج بعد فك ضغطه!!!!
KAM :
احد الخيارات المفضلة لدي جدا، فهو سريع وخفيف وهو اصغرها حجما وقليل المشاكل والاخطاء واقل الواجهات تعقيدا وبه شرح لبارامترات العديد من الدوال اضافة الى ترتيبه لأغراض الدوال في مجموعات معينة(Function Categories) بطريقة مرتبة تعطي فكرة عن اقسام هذه الدوال انظر الصورة المرفقة
وهو يعرض النتائج على شكل صفحة HTML مدعمة بالالوان مما يسهل عمليات البحث والنسخ وسرعة القراءة.
ApiMonitor :
مراقب جيد جدا يدعم عدد كبير من الدوال اضافة الى امكانيات توسيع هذه القائمة، به ميزة Show GetLastError لمعرفة نتيجة معينة بعد استدعاء دالة ما،بامكانه تصدير النتائج الى عدة هيئات (Excel,Xm,Html&txt)، وهو غير مجاني.
SpyStudio :
يراقب فقط العمليات التي تعمل في الويندوز حاليا ولا يمكنه مراقبة العمليات لحظة نشوءها ،وهو Real Time Monitor
وبه ميزة Wide Hooking التي تقوم بمراقبة دالة معينة لعدة عمليات مجتمعة، كما به (Function Categories) مثل نظيره السابق KAM
APISpy32 :
حاولت كثيرا مع هذا البرنامج الا انه في اغلب الاحيان لا يعمل ، قليل المزايا ،وقاعدة الدوال المعرفة لديه قليلة نسبيا
بصراحة هو عندي في آخر السلم،وفوق كل هذا غير مجاني.
Auto Debug Professional :
لا باس به ، يدعم GetLastError ويعرض الرسالة النصية الخاصة برمز هذا ال Error ،وايضا يعرض ال Exception code في حال حدوثها ويدعم مراقبة Remote Process متفردا بهذه النقطة عن باقي نظرائه ،ولكن به مشكلة وهي عند اختيار برنامج لمراقبته فانه يعرض فقط المكتبات الموجودة
في ال Import Table لهذا البرنامج فاذا كان الملف مضغوط فانه يقلل من عدد الدوال محل المراقبة كما نلا حظ في الصورة عند اختيار برنامج KAM وهو مضغوط
فانه يعرض ما يلي
ولكن بعد ان يعمل ويفك ضغط البرنامج في الذاكرة تصبح الخيارات
مما يحرم من اختيار دوال اخرى لمراقبنها عند بداية عمل البرنامج
WinAPIOverride32 :
البرنامج المدجج بالكثير من المزايا ،يدعم GetLastError ويعرض الرسالة النصية الخاصة برمز هذا ال Error ، عمل Hook لبرامج NET.
و Hook لل COM ، وتصدير النتائج بعدة هيئات (Html,Txt,Xml,Csv)،والخاصية الكبيرة فيه عمل Overridig للدوال التي تمكن من
اختيار دالة معينة من ان تحل محل الدالة المُراقبة، اضافة الى ال Documentation الذي يزوده والمحتوي على معلومات قوية ومفيدة في هذا المجال
وفوق كل هذا فهو مفتوح المصدر تحت اتفاقية GPL ومُبرمَج بال ++C مما يفيد اصحاب هذه اللغة بالاستفادة من هذه الاكواد، والعديد من المزايا الاخرى وهو المفضل عندي صراحة.
ApiMonitor by rohitab :
يدعم GetLastError ، يدعم القيام بعمل Hook للدالة GetProcAddress ،يحتوي على IOCTL Decoder
لكنه يقوم بمراقبة الدوال بناء على API Categories ،ولا يمكن اختيار دالة معينة بعينها لمراقبتها فقط
والسؤال الاهم هل انت مهتم بهذه الادوات ؟
تم تعديل هذه المشاركة بواسطة AND في 14 أكتوبر 2008 في 22:32
اقتباسوالسؤال الاهم هل انت مهتم بهذه الادوات ؟
حسب الحاجة أخي AND !
ربما لا يفي أي منهم بالغرض الذي اريده وأضطر الى كتابة واحد موجه فقط للغرض الذي اريده .
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
اهلا GM
أردت ان اسالك عن ال FileMonitor بما ان لديك خبرة في مواضيع ال Kernel كيف يتم بالضبط اقتناص
بالرجوع للسورس فتقريبا اي امر يحول الى ال Driver الخاص بالبرنامج ،يعني ان الDriver يقوم بالعمل الحقيقي
لكن عند فتح احد برامج ال kernel واختيار ال SSDT لا يظهر هناك اي Hook ، وكنت اتوقع وجوده على ZwCreateFile وأشقائه
وما اثار سؤالي حقيقة هو اظهاره لنتائج لا يمكن للباقي اظهارها مثلا :
فمثلا اذا قام برنامج بالعمل على مفتاح في الرجستري في HKLM\Software فيظهر في النتائج ملف Software.log المسؤول عن المفتاح السابق:
سؤال آخر : كما تعلم اذا اردنا برنامجنا ان يصل بدرايفر معين نستخدم IODeviceControl، ولكن ماذا بالعكس اذا اردنا ان ينقل الدرايفر قيمة معينة للبرنامج؟
أهلا AND :
Filemon يقوم بعمل hook على الـFSD او الـFile-System Driver .
لكل نوع من الملفات يوجد نظام خاص لادارته (File-System) , مثلا اذا اردت التعامل مع ملف FAT32 ستتجه فورا الى الـdevice الخاص به والذي بدوره يتبع fastfat.sys أما عند التعامل مع ملفات NTFS فنتجه لـNtfs.sys .
طبعا العمل كـfilter-driver افضل واضمن في الحصول على النتائج من مجرد عمل hook على الـSDT .
اقتباسسؤال آخر : كما تعلم اذا اردنا برنامجنا ان يصل بدرايفر معين نستخدم IODeviceControl، ولكن ماذا بالعكس اذا اردنا ان ينقل الدرايفر قيمة معينة للبرنامج؟
هناك طرق اخرى مثل استخدام الـEvents او SharedMemory (ستجد امثلة على CodeProject) .
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
هذا الموضوع مغلق.