חוקי הפורום

מדריך לשימוש בסיסי בתוכנת Procmon



  • מה זה Procmon?

    Procmon ‏(Process Monitor) היא תוכנת ניטור שניתן לנטר באמצעותה אירועים במערכת ווינדוס.
    זה שימושי מאוד לדיבוג תקלות.
    איזה אירועים אפשר לנטר?

    • קבצים: פתיחה, סגירה, כתיבה, קריאה, מחיקה, ועוד
    • מפתחות רג'יסטרי: פתיחה, סגירה, כתיבה, קריאה, מחיקה, ועוד
    • רשת: אירועי רשת, חיבור, ניתוק, האזנה, שליחה, קבלה ועוד
    • תהליכים: הרצת תהליך, טעינת DLL, יצירת thread, סיום תהליך/thread ועוד

    כל אירוע מלווה בשלל מידע שימושי. מזהה תהליך, מזהה thread, צילום של ה-stack (מאוד שימושי!) ועוד.
    יש אפשרויות מתקדמות לסינון האירועים

    מאיפה מורידים?

    https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
    התוכנה היא קובץ אחד (שמכילה בתוכה: גירסת x64 של התוכנה, וכן גירסאות x68 ו-x64 של הדרייבר שהתוכנה צריכה. התוכנה חולצת מתוכה את הקבצים הנצרכים בזמן ריצה!). אין צורך בהתקנה.

    הרצה

    קליק כפול על קובץ התוכנה, אם נתבקש נאשר הרצה כמנהל - אי אפשר להריצו בלי הרשאות ניהול- וזהו, אנחנו בפנים!
    (בהרצה ראשונה צריך לאשר את תנאי השימוש).
    הערה: אם אתה מבין מה זה stack trace וברצונך לעשות בו שימוש כדאי שתגדיר גם debugging symbols בתפריט options ‏> ‏configure symbols...‎

    החלון הראשי

    כך נראה החלון הראשי בפתיחה הראשונה:
    bbe444e1-23f4-4534-92b9-48fbb6fb1c78-image.png
    נשים לב לאיזור העיקרי - זה מכיל רשימה של אירועים. הרשימה הולכת וגדלה כל שנייה בעוד אלפי אירועים!
    בשורת המצב כתוב מספר האירועים שהוקלטו, וכמה מתוכם מוצגים:
    3ec62d90-b746-4b1d-86d2-12850b2210ed-image.png
    אז דבר ראשון נפסיק את ההקלטה לפני שהמספר יגיע למאות מליונים!
    לחיצה על fdaed507-8ea4-4413-9963-e81676c76f2b-image.png מפסיק את ההקלטה. לחיצה נוספת יתחיל אותה שוב.

    עכשיו נסביר בקצרה על הרשימה.
    כל שורה מייצג אירוע אחד. בברירת מחדל העמודות שמופיעות הם:

    • Time of Day: זה "השעה:דקה:שנייה.מילי שנייה" של האירוע
    • Process Name: שם התהליך שגרם לאירוע
    • PID: מזהה התהליך (לפעמים יש כמה תהליכים עם אותו שם. אפשר להבחין ביניהם על ידי המזהה)
    • Operation: זה סוג האירוע. האייקון מצביע על הסוג הכללי (רג'יסטרי, קובץ, תהליך, או רשת). הטקסט מצביע על הסוג הפרטי, פתיחת קובץ קריאת קובץ וכו' וכו' (יש עשרות...)
    • Path: הנתיב של ה{קובץ, מפתח רג'יסטרי} או ה-IP + פורט + כיוון של תעבורת הרשת.
    • Result: תוצאת הפעולה. SUCCESS = הצלחה. אם לא הצליח, כתוב קוד השגיאה.
    • Detail: פרטים נוספים משתנים לפי סוג הפעולה.

    נעבור בקצרה על האייקונים בסרגל:

    • fa70531b-8bd8-4b86-9827-2b64cf7a9a23-image.png פתיחת הקלטה שנשמרה
    • 418e3be9-9ec0-405c-9771-c65b3f1274e6-image.png שמירת הקלטה
    • c24642be-40d6-43ce-af98-cc1be5940817-image.png התחל/עצור הקלטה
    • 0ff24ec4-aa92-46bb-a3c4-105567661c4f-image.png הפעל השבת גלילה אוטומטי של הרשימה
    • 1378f7ac-93a7-4cad-9b68-05e9fded0d24-image.png נקה רשימה
    • 1230f81b-c687-4699-ac65-a55ceb4fb8a3-image.png הגדרת סינון
    • b66923d5-159f-4163-9032-88cdd70619e4-image.png הגדרת סימון שורות לפי תנאים
    • c29520f6-77d1-4d74-b182-8ace382a5e8d-image.png אפשר לגרור את האייקון על גבי חלון של תוכנה וזה יוסיף את מזהה התוכנה ההוא לסנן הפעיל
    • e7e7ecf5-5f9b-4270-9eec-effdc341efc8-image.png פותח חלון עם רשימת התהליכים שהיו פעילים בעת ההקלטה
    • d0b3b632-b05a-451a-a986-ca6f39e2462c-image.png חיפוש תיבה ברשימה
    • 4ccf0ccb-095f-4def-b61c-cdfa3a2a4610-image.png פותח את הנתיב של השורה הנוכחי
    • 511884cc-9245-4262-aae3-5cd31fa526a2-image.png הפעלה/השבתה של סוגי אירועים: רג'יסטרי, קובץ, רשת, תהליך, profiling (לא נדבר על profiling בהדרכה זו)

    סינון

    עכשיו נגדיר מסנן. נלחץ על e77437b0-089a-4f4f-922b-e2d432942a99-image.png

    בברירת מחדל מוגדרים כבר כמה מסננים. מומלץ להשאיר אותם.
    לכל מסנן יש 4 שדות:
    10acba35-9e84-4a8c-9882-6d9bee6ec297-image.png

    1. הראשון הוא בחירת השדה לפיו נסנן. יש המון אופציות. העקריים הם

      • Process Name: לסנן לפי שם התהליך
      • PID: לפי מזהה תהליך במקרה שיש כמה תהליכים של אותו תוכנה
      • Operation: לסנן לפי אירוע
      • Path: סינון לפי נתיב קובץ/מפתח רג'יסטרי
    2. בחירת סוג תנאי לפיו נסנן:

      • is/is not: הערך המלא תואם/לא תואם לתנאי
      • less than/more than: על שדות של מספרים הערך שוה יותר/פחות מהערך של התנאי
      • begins with/ends with: הערך מתחיל ב/מסתיים בהערך של התנאי
      • includes/excludes: הערך של התנאי נמצא/לא נמצא איפשהו בערך של השדה
    3. פה נמלא את הערך של התנאי, כלומר שהתוכנה יבדוק את השדה שבחרנו ב-① מול מה שנכתוב כאן ולפיו יקבע אם התנאי מתקיים או לא. האופציות פה משתנות לפי מה שבחרנו בשדה ①. לדוגמה, אם ב-① בחרנו Operation, כאן נוכל למלאות אחד מהאירועים הזמינים, התפריט מתמלא עם הרשימה הזמינה של אירועים אפשריים. אם בחרנו בשדה ① Path, נמלא פה נתיב או חלק מנתיב (לפי מה שבחרנו בשדה ②)

    4. כאן נבחר אם קיום התנאי יגרום לשורה להופיע (include) או לא להופיע (exclude).

    הערה: אף פעם לא עמדתי על צורת ההרכבה של תנאים מרובים... האם זה OR או AND או האם אפשר לחבר חלק ב-OR וחלק ב-AND (לא נראה לי אפשרי, הלוואי...)... ניסוי וטעיה פשוט אמור להביא את התשובה... אם מישהו מתנדב לבדוק אשמח!

    דוגמה

    ועכשיו נעבור על דוגמה פשוטה.
    נגיד שאנחנו רוצים לראות איפה ההגדרות של רקע שולחן העבודה שמורות.

    • נפתח את הגדרות המערכת על הדף של רקע שולחן עבודה.
    • נפתח את procmon ונגדיר סינון כמו בתמונה:
      • לחיצה על reset כדי לאפס את הסינוןן לברירת המחדל
      • נגדיר סינון על שדה path שהנתיב יכלול את המילה "wallpaper" (טפט). סביר להניח שאם הגדרוות רקע שמורות ברג'יסטרי או בקובץ כלשהו שהנתיב יכלול את המילה הזאת.
      • אחרי הגדרת סינון צריך ללחוץ "add" להוסיף אותו לרשימה.
      • נעשה עוד סינון על אירוע שכול את המילה set או write. זה יכלול רק פעולות של כתיבה לקובץ (WriteFile) או למפתח רג'יסטרי (RegSetValue). זה יוריד אלפי אלפים של שורות של קריאה. אנחנו מעוניינים רק בכתיבה ולא בקריאה.
        54e39cfc-5b31-4a39-8b0d-09d47284b8e9-image.png
      • אישור
    • עכשיו מתחיל ההקלטה
    • נעבור לחלון ההגדרות ונשנה רקע שולחן העבודה. נפסיק את ההקלטה.
    • נסתכל על הרשימה - והנה הסוד מתגלה לעינינו...
      HKCU\Control Panel\Desktop\Wallpaper

    הערה: שימו לב שלא סיננתי לפי מזהה או שם התהליך של ההגדרות. אם הייתי עושה כן לא היה מתקבל שום תוצאה. הסיבה היא שתוכנת ההגדרות לא עושה את השינוי בעצמה אלא שולחת מסר לתהליך explorer.exe לבצע את השינוי.

    הערה: במדריך זה כסינו רק שימוש בסיסי בתוכנה. מומלץ מאוד לעבור על קובץ העזרה, וגם לקרוא בבלוג של יוצר התוכנה עוד דוגמאות לשימוש בתוכנה (בד"כ הדוגמאות נמצאים בפוסטים שהכותרת שלהם מתחיל במילים ‎"The case of..."‎).

    בהצלחה!


התחבר כדי לפרסם תגובה