Το DTrace είναι πλέον διαθέσιμο στα Windows
Η επόμενη ενημέρωση λειτουργιών των Windows 10 (19H1, Ενημέρωση Απριλίου 2019, έκδοση 1903) θα περιλαμβάνει υποστήριξη για το DTrace, το δημοφιλές εργαλείο εντοπισμού σφαλμάτων και διάγνωσης ανοιχτού κώδικα. Κατασκευάστηκε αρχικά για το Solaris και έγινε διαθέσιμο για Linux, FreeBSD, NetBSD και macOS. Η Microsoft το έχει μεταφέρει στα Windows.
Το DTrace είναι ένα δυναμικό πλαίσιο ανίχνευσης που επιτρέπει σε έναν διαχειριστή ή προγραμματιστή να βλέπει ένα σύστημα σε πραγματικό χρόνο είτε σε λειτουργία χρήστη είτε σε λειτουργία πυρήνα. Το DTrace έχει μια υψηλού επιπέδου και ισχυρή γλώσσα προγραμματισμού σε στυλ C που σας επιτρέπει να εισάγετε δυναμικά σημεία ίχνους. Χρησιμοποιώντας αυτά τα δυναμικά εισαγόμενα σημεία ίχνους, μπορείτε να φιλτράρετε τις συνθήκες ή τα σφάλματα, να γράψετε κώδικα για να αναλύσετε μοτίβα κλειδώματος, να εντοπίσετε αδιέξοδα κ.λπ.
Στα Windows, το DTrace επεκτείνει την ανίχνευση συμβάντων για Windows (ETW), η οποία είναι στατική και δεν παρέχει τη δυνατότητα εισαγωγής σημείων παρακολούθησης μέσω προγραμματισμού κατά το χρόνο εκτέλεσης.
Όλα τα API και οι λειτουργίες που χρησιμοποιούνται από το dtrace.sys είναι τεκμηριωμένες κλήσεις.
Η Microsoft έχει εφαρμόσει ένα ειδικό πρόγραμμα οδήγησης για τα Windows 10 που επιτρέπει την εκτέλεση ορισμένων ρόλων παρακολούθησης συστήματος. Το πρόγραμμα οδήγησης θα συμπεριληφθεί στα Windows 10 έκδοση 1903. Επίσης, το DTrace απαιτεί επί του παρόντος την εκκίνηση των Windows με ενεργοποιημένο τον εντοπισμό σφαλμάτων πυρήνα.
Ο πηγαίος κώδικας για το μεταφερόμενο εργαλείο DTrace είναι διαθέσιμος στο GitHub. Επισκεφθείτε τη σελίδα "DTrace στα Windows” κάτω από το έργο OpenDTrace στο GitHub για να το δείτε.
Ρύθμιση του DTrace στα Windows 10
Προϋποθέσεις για τη χρήση της δυνατότητας
- Windows 10 insider κατασκευή 18342 ή υψηλότερη
- Διατίθεται μόνο σε x64 Windows και καταγράφει πληροφορίες ανίχνευσης μόνο για διαδικασίες 64-bit
-
Πρόγραμμα Windows Insider είναι ενεργοποιημένη και έχει ρυθμιστεί με έγκυρο λογαριασμό Windows Insider.
- Επισκεφτείτε τις Ρυθμίσεις->Ενημέρωση και ασφάλεια->Πρόγραμμα Windows Insider για λεπτομέρειες
Οδηγίες:
-
Σύνολο διαμόρφωσης BCD:
- bcdedit /set dtrace on
- Σημείωση, θα πρέπει να ορίσετε ξανά την επιλογή bcdedit, εάν κάνετε αναβάθμιση σε νέα έκδοση Insider
-
Κατεβάστε και εγκαταστήστε το πακέτο DTrace από κέντρο λήψης.
- Αυτό εγκαθιστά τα στοιχεία λειτουργίας χρήστη, τα προγράμματα οδήγησης και τα πρόσθετα πακέτα δυνατοτήτων κατά απαίτηση που είναι απαραίτητα για να είναι λειτουργικό το DTrace.
- Προαιρετικά: Ενημερώστε το Μεταβλητή περιβάλλοντος PATH να συμπεριλάβει C:\Program Files\DTrace
- ορίστε PATH=%PATH%;"C:\Program Files\DTrace"
- Ρύθμιση διαδρομή συμβόλων
- Δημιουργήστε έναν νέο κατάλογο για την προσωρινή αποθήκευση συμβόλων τοπικά. Παράδειγμα: mkdir c:\symbols
- Σειρά _NT_SYMBOL_PATH=srv*C:\symbols*http://msdl.microsoft.com/download/symbols
- Το DTrace κατεβάζει αυτόματα τα απαραίτητα σύμβολα από τον διακομιστή συμβόλων και αποθηκεύει προσωρινά στην τοπική διαδρομή.
-
Προαιρετικός:Ρύθμιση προγράμματος εντοπισμού σφαλμάτων πυρήνα σύνδεση με το μηχάνημα προορισμού (Σύνδεσμος MSDN). Αυτό είναι μόνο απαιτείται εάν θέλετε να παρακολουθείτε συμβάντα πυρήνα χρησιμοποιώντας FBT ή άλλους παρόχους.
- Σημειώστε ότι θα χρειαστεί να απενεργοποιήσετε το Secureboot και το Bitlocker στο C:, (αν είναι ενεργοποιημένο), εάν θέλετε να ρυθμίσετε έναν εντοπισμό σφαλμάτων πυρήνα.
- Επανεκκίνηση μηχανή στόχου
Χρησιμοποιώντας το DTrace
- Ανοίξτε ένα ανυψωμένη γραμμή εντολών.
- Εκτελέστε μία από τις ακόλουθες εντολές:
# Σύνοψη Syscall ανά πρόγραμμα για 5 δευτερόλεπτα: dtrace -Fn "tick-5sec { exit (0);} syscallentry{ @num[pid, execname] = count();} " # Συνοψίστε το σύνολο χρονοδιακόπτη/ακύρωση προγράμματος για 3 δευτερόλεπτα: dtrace -Fn "tick-3sec { exit (0);} syscall:: Nt*Timer*:entry { @[probefunc, execname, pid] = count();}" # Dump System Process δομή πυρήνα: (απαιτείται διαδρομή συμβόλων προς να οριστεί) dtrace -n "BEGIN{print(*(struct nt`_EPROCESS *) nt`PsInitialSystemProcess);exit (0);}" # Παρακολούθηση διαδρομών μέσω NTFS κατά την εκτέλεση του notepad.exe (απαιτείται KD a
Η εντολή dtrace -lvn syscall θα απαριθμήσει όλους τους ανιχνευτές και τις παραμέτρους τους που είναι διαθέσιμες από τον πάροχο syscall.
Ακολουθούν μερικοί από τους παρόχους που είναι διαθέσιμοι στα Windows και τι ορίζουν.
- syscall – Κλήσεις συστήματος NTOS
- fbt (Function Boundary Tracing) – Εισαγωγή και επιστροφές συνάρτησης πυρήνα
- pid – Ανίχνευση διαδικασίας σε λειτουργία χρήστη. Όπως το FBT σε λειτουργία πυρήνα, αλλά και επιτρέποντας την οργάνωση αυθαίρετων μετατοπίσεων συναρτήσεων.
-
etw (Ιχνηλασία συμβάντων για Windows) – Επιτρέπει τον καθορισμό ανιχνευτών για το ETW Αυτός ο πάροχος βοηθά στη μόχλευση των υπαρχόντων οργάνων του λειτουργικού συστήματος στο DTrace.
- Αυτή είναι μια προσθήκη που κάναμε στο DTrace για να του επιτρέψουμε να εκθέσει και να αποκτήσει όλες τις πληροφορίες που ήδη παρέχουν τα Windows στο ETW.
Περισσότερα δείγματα σεναρίων που ισχύουν για σενάρια Windows μπορείτε να βρείτε σε αυτό κατάλογο δειγμάτων.
Πηγή: Microsoft