-
מה זה 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...החלון הראשי
כך נראה החלון הראשי בפתיחה הראשונה:
נשים לב לאיזור העיקרי - זה מכיל רשימה של אירועים. הרשימה הולכת וגדלה כל שנייה בעוד אלפי אירועים!
בשורת המצב כתוב מספר האירועים שהוקלטו, וכמה מתוכם מוצגים:
אז דבר ראשון נפסיק את ההקלטה לפני שהמספר יגיע למאות מליונים!
לחיצה על מפסיק את ההקלטה. לחיצה נוספת יתחיל אותה שוב.עכשיו נסביר בקצרה על הרשימה.
כל שורה מייצג אירוע אחד. בברירת מחדל העמודות שמופיעות הם:- Time of Day: זה "השעה:דקה:שנייה.מילי שנייה" של האירוע
- Process Name: שם התהליך שגרם לאירוע
- PID: מזהה התהליך (לפעמים יש כמה תהליכים עם אותו שם. אפשר להבחין ביניהם על ידי המזהה)
- Operation: זה סוג האירוע. האייקון מצביע על הסוג הכללי (רג'יסטרי, קובץ, תהליך, או רשת). הטקסט מצביע על הסוג הפרטי, פתיחת קובץ קריאת קובץ וכו' וכו' (יש עשרות...)
- Path: הנתיב של ה{קובץ, מפתח רג'יסטרי} או ה-IP + פורט + כיוון של תעבורת הרשת.
- Result: תוצאת הפעולה. SUCCESS = הצלחה. אם לא הצליח, כתוב קוד השגיאה.
- Detail: פרטים נוספים משתנים לפי סוג הפעולה.
נעבור בקצרה על האייקונים בסרגל:
- פתיחת הקלטה שנשמרה
- שמירת הקלטה
- התחל/עצור הקלטה
- הפעל השבת גלילה אוטומטי של הרשימה
- נקה רשימה
- הגדרת סינון
- הגדרת סימון שורות לפי תנאים
- אפשר לגרור את האייקון על גבי חלון של תוכנה וזה יוסיף את מזהה התוכנה ההוא לסנן הפעיל
- פותח חלון עם רשימת התהליכים שהיו פעילים בעת ההקלטה
- חיפוש תיבה ברשימה
- פותח את הנתיב של השורה הנוכחי
- הפעלה/השבתה של סוגי אירועים: רג'יסטרי, קובץ, רשת, תהליך, profiling (לא נדבר על profiling בהדרכה זו)
סינון
עכשיו נגדיר מסנן. נלחץ על
בברירת מחדל מוגדרים כבר כמה מסננים. מומלץ להשאיר אותם.
לכל מסנן יש 4 שדות:
-
הראשון הוא בחירת השדה לפיו נסנן. יש המון אופציות. העקריים הם
- Process Name: לסנן לפי שם התהליך
- PID: לפי מזהה תהליך במקרה שיש כמה תהליכים של אותו תוכנה
- Operation: לסנן לפי אירוע
- Path: סינון לפי נתיב קובץ/מפתח רג'יסטרי
-
בחירת סוג תנאי לפיו נסנן:
- is/is not: הערך המלא תואם/לא תואם לתנאי
- less than/more than: על שדות של מספרים הערך שוה יותר/פחות מהערך של התנאי
- begins with/ends with: הערך מתחיל ב/מסתיים בהערך של התנאי
- includes/excludes: הערך של התנאי נמצא/לא נמצא איפשהו בערך של השדה
-
פה נמלא את הערך של התנאי, כלומר שהתוכנה יבדוק את השדה שבחרנו ב-① מול מה שנכתוב כאן ולפיו יקבע אם התנאי מתקיים או לא. האופציות פה משתנות לפי מה שבחרנו בשדה ①. לדוגמה, אם ב-① בחרנו Operation, כאן נוכל למלאות אחד מהאירועים הזמינים, התפריט מתמלא עם הרשימה הזמינה של אירועים אפשריים. אם בחרנו בשדה ① Path, נמלא פה נתיב או חלק מנתיב (לפי מה שבחרנו בשדה ②)
-
כאן נבחר אם קיום התנאי יגרום לשורה להופיע (include) או לא להופיע (exclude).
הערה: אף פעם לא עמדתי על צורת ההרכבה של תנאים מרובים... האם זה OR או AND או האם אפשר לחבר חלק ב-OR וחלק ב-AND (לא נראה לי אפשרי, הלוואי...)... ניסוי וטעיה פשוט אמור להביא את התשובה... אם מישהו מתנדב לבדוק אשמח!
דוגמה
ועכשיו נעבור על דוגמה פשוטה.
נגיד שאנחנו רוצים לראות איפה ההגדרות של רקע שולחן העבודה שמורות.- נפתח את הגדרות המערכת על הדף של רקע שולחן עבודה.
- נפתח את procmon ונגדיר סינון כמו בתמונה:
- לחיצה על reset כדי לאפס את הסינוןן לברירת המחדל
- נגדיר סינון על שדה path שהנתיב יכלול את המילה "wallpaper" (טפט). סביר להניח שאם הגדרוות רקע שמורות ברג'יסטרי או בקובץ כלשהו שהנתיב יכלול את המילה הזאת.
- אחרי הגדרת סינון צריך ללחוץ "add" להוסיף אותו לרשימה.
- נעשה עוד סינון על אירוע שכול את המילה set או write. זה יכלול רק פעולות של כתיבה לקובץ (WriteFile) או למפתח רג'יסטרי (RegSetValue). זה יוריד אלפי אלפים של שורות של קריאה. אנחנו מעוניינים רק בכתיבה ולא בקריאה.
- אישור
- עכשיו מתחיל ההקלטה
- נעבור לחלון ההגדרות ונשנה רקע שולחן העבודה. נפסיק את ההקלטה.
- נסתכל על הרשימה - והנה הסוד מתגלה לעינינו...
HKCU\Control Panel\Desktop\Wallpaper
הערה: שימו לב שלא סיננתי לפי מזהה או שם התהליך של ההגדרות. אם הייתי עושה כן לא היה מתקבל שום תוצאה. הסיבה היא שתוכנת ההגדרות לא עושה את השינוי בעצמה אלא שולחת מסר לתהליך explorer.exe לבצע את השינוי.
הערה: במדריך זה כסינו רק שימוש בסיסי בתוכנה. מומלץ מאוד לעבור על קובץ העזרה, וגם לקרוא בבלוג של יוצר התוכנה עוד דוגמאות לשימוש בתוכנה (בד"כ הדוגמאות נמצאים בפוסטים שהכותרת שלהם מתחיל במילים "The case of...").
בהצלחה!
-