ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΧΕΔΙΑΣΗΣ MULTITHREADING & KERNEL ΤΩΝ WINDOWS



Σχετικά έγγραφα
Εισαγωγή στην Πληροφορική

Ελέγξτε την ταινία σας

Αναπαραγωγή με αρχεία ήχου

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

UTECO ABEE ΒΙΟΜΗΧΑΝΙΚΟΣ & ΝΑΥΤΙΛΙΑΚΟΣ ΑΥΤΟΜΑΤΙΣΜΟΣ

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Λιβανός Γιώργος Εξάμηνο 2017Β

Κεφάλαιο 3. Διδακτικοί Στόχοι

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

αντίστοιχο γεγονός. Όταν όντως το κουμπί

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Ο Οδηγός γρήγορης εκκίνησης

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ ΠΙΣΤΟΠΟΙΗΣΕΩΝ ΚΑΙ ΕΛΕΓΧΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Η εφαρμογή είναι βελτιστοποιημένη για όλες τις συσκευές ios και Android, με ios 9.x ή νεότερη έκδοση και Android 4.4 ή νεότερη έκδοση.

ΣΗΜΕΙΩΣΕΙΣ. στη γλώσσα προγραμματισμού. Γκέτσιος Βασίλειος

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Αλλαγή της εμφάνισης κειμένου: μέγεθος γραμματοσειράς, είδος γραμματοσειράς

Κατανεμημένα Συστήματα

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ.

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

Οδηγός γρήγορης εκκίνησης του PowerSuite

Κεφάλαιο 10 ο Υποπρογράµµατα

Hase οδηγίες χρήσης.

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Αναλυτικός οδηγός της ενημέρωσης των Windows 8.1

ΓΕΝΙΚΗ ΓΡΑΜΜΑΤΕΙΑ ΗΜΟΣΙΩΝ ΕΠΕΝ ΥΣΕΩΝ & ΕΣΠΑ ΕΘΝΙΚΗ ΑΡΧΗ ΣΥΝΤΟΝΙΣΜΟΥ ΕΙ ΙΚΗ ΥΠΗΡΕΣΙΑ Ο.Π.Σ.

Εισαγωγή στην επιστήμη των υπολογιστών

ΚΕΦΑΛΑΙΟ 12: Επίλυση Προβλημάτων Δικτύων Εισαγωγή

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Σχεδιασμός των Πινάκων μίας Βάσης Δεδομένων

Εφαρμογή δημιουργίας σεναρίων Sctatch

ΛΟΓΙΣΜΙΚΟ (software)

ΓΕΝΙΚΗ ΓΡΑΜΜΑΤΕΙΑ ΔΗΜΟΣΙΩΝ ΕΠΕΝΔΥΣΕΩΝ & ΕΣΠΑ

WiFi V-Timer ΕΚΔΟΣΗ 2Η

Hase οδηγίες χρήσης.

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Α. Ερωτήσεις Ανάπτυξης

Σελίδες Βοήθειας - Υπηρεσία Ψηφιακών Πιστοποιητικών - Υπηρεσία Εγκατάσταση Πιστοποιητικών Αρχής Πιστοποίησης (ROOT CA)

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

Ψηφιακή υπογραφή από το Πανελλήνιο Σχολικό Δίκτυο (Έκδοση, Εγκατάσταση, Χρήση, Απεγκατάσταση)

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Ενημερώσεις λογισμικού Οδηγός χρήσης

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

Εντολές της LOGO (MicroWorlds Pro)

Δια γράφοντας... κλωνάρια

Προγραμματισμός. Το περιβάλλον του scratch

Διαχρονικές δομές δεδομένων

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

3. ΟΠΣ/ ΚΠΣ ΚΠ : Προγραμματισμός

Εμφάνιση μηνυμάτων ή ενεργοποίηση και απενεργοποίηση της ηχούς εντολών.

Αντίγραφα ασφαλείας και επαναφορά Οδηγίες χρήσης

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5. Ρυθμίζοντας τη Φορά Περιστροφής. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Διαχείριση Βάσης Δεδομένων (dbadmin)

1. Τα τμήματα της επιφάνειας εργασίας των Windows

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Εγχειρίδιο Χρήσης για Εκπαιδευτές/Διοικητικούς. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΥΠΕΥΘΥΝΟΣ ΈΡΓΟΥ AΝ.KΑΘ.Χ. ΚΟΥΚΟΥΡΛΗΣ ΤΗΛ: , FAX :

ΕΡΩΤΗΜΑΤΟΛOΓΙΟ ΣΧΟΛΕIΟΥ: ΕΓΧΕΙΡIΔΙΟ ΔΙΕΥΘΥΝΤΉ/ΝΤΡΙΑΣ. Doc.: CY7_CBA_ScQPrincipalManual.docx. Δημιουργήθηκε από: ETS, Core Α Contractor

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Περιεχόµενα. I Βασικές Γνώσεις 1

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

Εισαγωγή στην επανάληψη

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Εικονική Μνήμη (Virtual Μemory)

QS-LIS

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ)

Εισαγωγή στην Πληροφορική

Στο grid διαχείρισης φακέλων εμφανίζονται οι εξής πληροφορίες:

Συγχώνευση αλληλογραφίας και συγχώνευση μιας πηγής δεδομένων με ένα κύριο έγγραφο όπως ένα γράμμα ή ένα έγγραφο ετικετών

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Παραδείγματα μεταβλητών

Transcript:

Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΠΛΗΡΟΦΟΡΙΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΧΕΔΙΑΣΗΣ MULTITHREADING & KERNEL ΤΩΝ WINDOWS Ελευθερία Δερμεντζή (ΑΕΜ = 1416) ΟΚΤΩΒΡΙΟΣ 2011 ΕΠΟΠΤΗΣ ΚΑΘΗΓΗΤΗΣ Στέργιος Παπαδημητρίου Εκπονηθείσα πτυχιακή εργασία απαραίτητη για την κτήση του βασικού πτυχίου

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή Περιεχόμενα Κεφάλαιο 1. Διαδικασίες, νήματα, και εργασίες... 3 1.1 διαδικασία Internals... 3 1.1.1 δομές δεδομένων... 3 1.1.2 μεταβλητές πυρήνων... 10 1.1.3 μετρητές απόδοσης... 10 1.1.4 σχετικές λειτουργίες... 11 1.2 προστατευμένες διαδικασίες... 12 1.3 ροή CreateProcess... 15 1.3.1 στάδιο 1: Μετατροπή και επικύρωση των παραμέτρων και των σημαιών... 17 1.3.2 στάδιο 2: Ανοίγοντας την εικόνα που εκτελείται... 19 1.3.3 στάδιο 3: Δημιουργία του εκτελεστικού αντικειμένου διαδικασίας παραθύρων (Διαδικασία PspAllocate-)... 22 1.3.4 στάδιο 4: Δημιουργία του αρχικού νήματος και του σωρού του και Πλαίσιο... 28 1.3.5 στάδιο 5: Εκτελώντας τα παράθυρα υποσύστημα-συγκεκριμένα Μεταέναρξη... 30 1.3.6 στάδιο 6: Αρχική εκτέλεση του αρχικού νήματος... 33 1.3.7 στάδιο 7: Εκτέλεση της έναρξης διαδικασίας στα πλαίσια η νέα διαδικασία... 34 1.4 νήμα Internals... 42 1.4.1 δομές δεδομένων... 43 1.4.2 μεταβλητές πυρήνων... 48 1.4.3 μετρητές απόδοσης... 48 1.4.4 σχετικές λειτουργίες... 48 1.4.5 γέννηση ενός νήματος... 49 1.5 εξέταση της δραστηριότητας νημάτων... 50 1.6 εργοστάσια εργαζομένων (λίμνες νημάτων)... 55 1.7 σχέδιο νημάτων... 60 1.7.1 επισκόπηση του σχεδίου παραθύρων... 61 1.7.2 επίπεδα προτεραιότητας... 64 1.7.3 παράθυρα που APIs... 66 1.7.4 σχετικά εργαλεία... 66 1.7.5 σε πραγματικό χρόνο προτεραιότητες... 69 1.7.6 κράτη νημάτων... 70 1.7.7 βάση δεδομένων αποστολέων... 73 1.7.8 κβάντο... 75 1.7.9 σχέδιο των σεναρίων... 85 1.7.10 μετατροπή πλαισίου... 89 1.7.11 μη απασχόλησης νήμα... 89 1.7.12 ωθήσεις προτεραιότητας... 91 1.7.13 συστήματα πολυεπεξεργαστών... 109 1.7.14 αλγόριθμοι νήμα-σχεδιασμού πολυεπεξεργαστών... 122 1.7.15 όρια ποσοστού ΚΜΕ... 124 1.8 αντικείμενα εργασίας... 127 1.9 συμπέρασμα... 132 2. Ασφάλεια... 133 2.1 εκτιμήσεις ασφάλειας... 133 2.2 τμήματα συστημάτων ασφάλειας... 137 2.3 προστασία των αντικειμένων... 141 Σελ. 1 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες 2.3.1 έλεγχοι πρόσβασης... 143 2.4 δικαιώματα και προνόμια απολογισμού... 190 2.4.1 δικαιώματα απολογισμού... 191 2.4.3 έξοχα προνόμια... 194 2.5 έλεγχος ασφάλειας... 197 2.6 σύνδεση... 199 2.6.1 έναρξη Winlogon... 201 2.6.2 βήματα σύνδεσης χρηστών... 204 2.7 έλεγχος απολογισμού χρηστών... 210 2.7.1 Virtualization... 212 2.8 πολιτικές περιορισμού λογισμικού... 223 2.9 συμπέρασμα... 226 Σελ. 2 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα, και εργασίες Σε αυτό το κεφάλαιο, θα εξηγήσουμε τις δομές δεδομένων και τους αλγορίθμους που εξετάζουν τις διαδικασίες,νήματα, και εργασίες στο λειτουργικό σύστημα παραθύρων. Το πρώτο τμήμα εστιάζει στον εσωτερικό δομές που αποτελούν μια διαδικασία. Το δεύτερο τμήμα περιγράφει τα βήματα που περιλαμβάνονται στη δημιουργία της διαδικασίας (και το αρχικό νήμα του). Τα internals των νημάτων και του σχεδιασμού νημάτων περιγράφονται έπειτα Το κεφάλαιο ολοκληρώνει με μια περιγραφή του αντικειμένου εργασίας. Όπου οι σχετικές μετρητές απόδοσης ή οι μεταβλητές πυρήνων υπάρχουν, αναφέρονται. Αν και αυτό το βιβλίο δεν είναι παράθυρα προγραμματίζοντας το βιβλίο, τη σχετικά διαδικασία, το νήμα, και τα παράθυρα εργασίας οι λειτουργίες παρατίθενται έτσι ότι μπορείτε να ακολουθήσετε τις πρόσθετες πληροφορίες για τη χρήση τους Επειδή οι διαδικασίες και τα νήματα αγγίζουν τόσα πολλά συστατικά στα παράθυρα, διάφοροι όροι και δομές δεδομένων (τέτοιες ως σύνολα εργασίας, αντικείμενα και λαβές, σωροί μνήμης συστημάτων, et ainsi de suite και τα λοιπά) αναφέρεται σε αυτό το κεφάλαιο αλλά εξηγείται λεπτομερώς αλλού στο βιβλίο. 1.1 διαδικασία Internals Αυτό το τμήμα περιγράφει τις βασικές δομές δεδομένων διαδικασίας παραθύρων. Επίσης απαριθμείται ο βασικός πυρήναςμεταβλητές, μετρητές απόδοσης, και λειτουργίες και εργαλεία που αφορούν τις διαδικασίες 1.1.1 δομές δεδομένων Κάθε διαδικασία παραθύρων αντιπροσωπεύεται από έναν εκτελεστικό φραγμό διαδικασίας (EPROCESS). Εκτός αυτού,περιέχοντας πολλές Σελ. 3 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες ιδιότητες σχετικά με μια διαδικασία, ένας φραγμός EPROCESS περιέχει και δείχνει το αριθμός άλλων σχετικών δομών δεδομένων. Παραδείγματος χάριν, κάθε διαδικασία έχει ένα ή περισσότερα νήματα αντιπροσωπευόμενος από τους εκτελεστικούς φραγμούς νημάτων (ETHREAD). (Οι δομές δεδομένων νημάτων εξηγούνται τμήμα «νήμα Internals» αργότερα σε αυτό το κεφάλαιο.) ο φραγμός EPROCESS και τα σχετικά στοιχεία του οι δομές υπάρχουν στο διάστημα διευθύνσεων συστημάτων, με εξαίρεση το φραγμό περιβάλλοντος διαδικασίας (PEB), το οποίο υπάρχει στο διάστημα διευθύνσεων διαδικασίας (επειδή περιέχει τις πληροφορίες που πρέπει να είναι προσεγγισμένος από τον κώδικα χρήστης-τρόπου) Εκτός από το φραγμό EPROCESS και το PEB, η διαδικασία υποσυστημάτων παραθύρων (Csrss) διατηρεί μια παράλληλη δομή για κάθε διαδικασία που εκτελεί ένα πρόγραμμα παραθύρων. Τέλος, το μέρος πυρήνας-τρόπου του υποσυστήματος παραθύρων (Win32k.sys) θα διατηρήσει επίσης ένα στοιχείο ανά-διαδικασίας κτίστε που δημιουργείται την πρώτη φορά που ένα νήμα καλεί έναν ΧΡΗΣΤΗ παραθύρων ή μια λειτουργία GDI που είναι εφαρμοσμένος στον τρόπο πυρήνων Το σχήμα 1-1 είναι ένα απλουστευμένο διάγραμμα των δομών διαδικασίας και δεδομένων νημάτων. Κάθε στοιχείο η δομή που παρουσιάζεται στο σχήμα περιγράφεται λεπτομερώς σε αυτό το κεφάλαιο. Πρώτα εστιάστε στο φραγμό διαδικασίας. (Θα φτάσουμε στο φραγμό νημάτων νήμα των τμημάτων «Το Internals» αργότερα στο σχήμα 5-2 κεφαλαίου.) παρουσιάζει βασικούς τομείς σε έναν φραγμό EPROCESS ΠΕΙΡΑΜΑ: Επίδειξη του σχήματος ενός φραγμού eprocess Για έναν κατάλογο των τομέων που αποτελούν έναν φραγμό EPROCESS και τα όφσετ τους σε δεκαεξαδικό, DT τύπων _eprocess στο διορθωτή πυρήνων. την παραγωγή (που περικόπτεται για η χάρη του διαστήματος) σε ένα τριανταδυάμπιτο σύστημα μοιάζει με αυτό: Σελ. 4 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή 1. lkd> DT _eprocess 2. nt! _EPROCESS 3. +0x000 PCB: _KPROCESS 4. +0x080 ProcessLock: _EX_PUSH_LOCK 5. +0x088 CreateTime: _LARGE_INTEGER 6. +0x090 ExitTime: _LARGE_INTEGER 7. +0x098 RundownProtect: _EX_RUNDOWN_REF 8. +0x09c UniqueProcessId: Ptr32 κενό 9. +0x0a0 ActiveProcessLinks: _LIST_ENTRY 10. +0x0a8 QuotaUsage: [3] Uint4B 11. +0x0b4 QuotaPeak: [3] Uint4B 12. +0x0c0 CommitCharge: Uint4B 13. +0x0c4 PeakVirtualSize: Uint4B 14. +0x0c8 VirtualSize: Uint4B 15. +0x0cc SessionProcessLinks: _LIST_ENTRY 16. +0x0d4 DebugPort: Ptr32 κενό 17. +0x0d8 ExceptionPortData: Ptr32 κενό 18. +0x0d8 ExceptionPortValue: Uint4B 19. +0x0d8 ExceptionPortState: Pos 0, 3 μπιτ 20. +0x0dc ObjectTable: Ptr32 _HANDLE_TABLE 21. +0x0e0 σημείο: _EX_FAST_REF 22. +0x0e4 WorkingSetPage: Uint4B 23. +0x0e8 AddressCreationLock: _EX_PUSH_LOCK 24. +0x0ec RotateInProgress: Ptr32 _ETHREAD 25. +0x0f0 ForkInProgress: Ptr32 _ETHREAD 26. +0x0f4 HardwareTrigger: Uint4B 27. +0x0f8 PhysicalVadRoot: Ptr32 _MM_AVL_TABLE 28. +0x0fc CloneRoot: Ptr32 κενό 29. +0x100 NumberOfPrivatePages: Uint4B 30. +0x104 NumberOfLockedPages: Uint4B 31. +0x108 Win32Process: Ptr32 κενό 32. +0x10c εργασία: Ptr32 _EJOB Σελ. 5 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες 33. +0x110 SectionObject: Ptr32 κενό 34. +0x114 SectionBaseAddress: Ptr32 κενό 35. +0x118 QuotaBlock: Ptr32 _EPROCESS_QUOTA_BLOCK Σημειώστε ότι ο πρώτος τομέας (PCB) είναι πραγματικά μια υποδομή, ο φραγμός διαδικασίας πυρήνων (KPROCESS). Για να εμφανίσουμε την μορφή του block του πυρήνα θα πρέπει να πληκτρολογήσουμε dt _kprocess: 1. lkd> dt _kprocess 2. nt!_kprocess 3. +0x000 Header : _DISPATCHER_HEADER 4. +0x010 ProfileListHead : _LIST_ENTRY 5. +0x018 DirectoryTableBase : Uint4B 6. +0x01c Unused0 : Uint4B 7. +0x020 LdtDescriptor : _KGDTENTRY 8. +0x028 Int21Descriptor : _KIDTENTRY 9. +0x030 IopmOffset : Uint2B 10. +0x032 Iopl : UChar 11. +0x033 Unused : UChar 12. +0x034 ActiveProcessors : Uint4B 13. +0x038 KernelTime : Uint4B 14. +0x03c UserTime : Uint4B 15. +0x040 ReadyListHead : _LIST_ENTRY 16. +0x048 SwapListEntry : _SINGLE_LIST_ENTRY 17. +0x04c VdmTrapcHandler : Ptr32 Void 18. +0x050 ThreadListHead : _LIST_ENTRY 19. +0x058 ProcessLock : Uint4B 20. +0x05c Affinity : Uint4B 21. +0x060 AutoAlignment : Pos 0, 1 Bit 22. +0x060 DisableBoost : Pos 1, 1 Bit 23. +0x060 DisableQuantum : Pos 2, 1 Bit Σελ. 6 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή 24. +0x060 ReservedFlags : Pos 3, 29 Bits 25. +0x060 ProcessFlags : Int4B 26. +0x064 BasePriority : Char 27. +0x065 QuantumReset : Char 28. +0x066 State : UChar 29. +0x067 ThreadSeed : UChar 30. +0x068 PowerState : UChar 31. +0x069 IdealNode : UChar 32. Chapter 5 Processes, Threads, and Jobs 339 33. +0x06a Visited : UChar 34. +0x06b Flags : _KEXECUTE_OPTIONS 35. +0x06b ExecuteOptions : UChar 36. +0x06c StackCount : Uint4B 37. +0x070 ProcessListEntry : _LIST_ENTRY 38. +0x078 CycleTime : Uint8B Ένας εναλλακτικός τρόπος να δει το KPROCESS (και άλλες υποδομές στο EPROCESS) είναι να χρησιμοποιήσουμε την διακοπή recursion (- ρ) διακόπτη της εντολής της DT. Παραδείγματος χάριν, αν γράψουμε DT _eprocess - r1 recurse θα δούμε όλες τις υποδομές ένα επίπεδο βαθιά Η εντολή της DT παρουσιάζει το σχήμα ενός φραγμού διαδικασίας, όχι το περιεχόμενό της. Για να παρουσιάσει μια περίπτωση από μια πραγματική διαδικασία, μπορείτε να διευκρινίσετε τη διεύθυνση μιας δομής EPROCESS ως επιχείρημα εντολή της DT. Μπορείτε να πάρετε τη διεύθυνση όλων των φραγμών EPROCESS στο σύστημα με τη χρησιμοποίηση! διαδικασία 0 εντολή 0. Ένα σχολιασμένο παράδειγμα της παραγωγής από αυτήν την εντολή συμπεριλαμβάνεται αργότερα σε αυτό το κεφάλαιο Σελ. 7 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες Ο πίνακας 1-1 εξηγεί μερικών από τους τομείς στο προηγούμενο πείραμα λεπτομερέστερα και περιλαμβάνει αναφορές σε άλλες θέσεις στο βιβλίο όπου μπορείτε να βρείτε περισσότερες πληροφορίες για τις. Δεδομένου ότι έχουμε εν λόγω πριν από και αναμφισβήτητα θα πει πάλι, οι διαδικασίες και τα νήματα είναι τέτοια αναπόσπαστα τμήματα των παραθύρων ότι είναι αδύνατο να μιλήσει για τους χωρίς αναφορά σε πολλά άλλα μέρη του συστήματος. Για να κρατήσει το μήκος αυτού του κεφαλαίου εύχρηστου, εντούτοις, έχουμε καλύψει εκείνα τα σχετικά θέματα (όπως διαχείριση, ασφάλεια, αντικείμενα, και λαβές μνήμης) αλλού Ο φραγμός διαδικασίας πυρήνων (KPROCESS), ο οποίος είναι μέρος του φραγμού EPROCESS, και φραγμός περιβάλλοντος διαδικασίας (PEB), που δείχνεται από το φραγμό EPROCESS, περιέχει πρόσθετες λεπτομέρειες για το αντικείμενο διαδικασίας. Ο φραγμός KPROCESS (που καλείται μερικές φορές. Το PCB ή ο φραγμός ελέγχου διεργασίας) είναι διευκρινισμένο στο σχήμα 5-3. Περιέχει τις βασικές πληροφορίες που Ο πυρήνας παραθύρων πρέπει να σχεδιάσει τα νήματα μέσα σε μια διαδικασία Το PEB, που ζει στο χρήστη επεξεργάζεται το διάστημα διευθύνσεων, περιέχει τις πληροφορίες που απαιτούνται από φορτωτής εικόνας, ο διευθυντής σωρών, και άλλο σύστημα DLLs παραθύρων που πρέπει να έχουν πρόσβαση σε το από το χρήστη τρόπος. (Οι φραγμοί EPROCESS και KPROCESS είναι προσιτοί μόνο από τον τρόπο πυρήνων.) Η βασική δομή του PEB είναι διευκρινισμένη στο σχήμα 5-4 και εξηγείται λεπτομερέστερα αργότερα σε αυτό κεφάλαιο ΠΕΙΡΑΜΑ: εξέταση του PeB Μπορείτε να πετάξετε τη δομή PEB με! peb εντολή στο διορθωτή πυρήνων. Για να πάρει η διεύθυνση του PEB, χρησιμοποιεί! εντολή διαδικασίας ως εξής: 1. lkd>! διαδικασία Σελ. 8 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή 2. ΔΙΑΔΙΚΑΣΙΑ 8575f030 SessionId: 1 Cid: 08d0 Peb: 7ffd9000 ParentCid: 0360 3. DirBase: 1a81b000 ObjectTable: e12bd418 HandleCount: 66 4. Εικόνα: windbg.exe Κατόπιν διευκρινίστε ότι διεύθυνση! peb διατάξτε ως εξής: 1. lkd>! peb 7ffd9000 2. PEB σε 7ffd9000 3. InheritedAddressSpace: Αριθ 4. ReadImageFileExecOptions: Αριθ 5. BeingDebugged: Αριθ 6. ImageBaseAddress: 002a0000 7. LDR 77895d00 8. Ldr.Initialized: Ναι 9. Ldr.InInitializationOrderModuleList: 00151c38. 00191558 10. Ldr.InLoadOrderModuleList: 00151bb8. 00191548 11. Ldr.InMemoryOrderModuleList: 00151bc0. 00191550 12. TimeStamp βάσεων ενότητα 13. 2a0000 4678a41e 19 Ιούν. 23: 50: 54 2007 C:\Program Files\Debugging Tools For Windows\ windbg.exe 15. 777d0000 4549bdc 9 Νοέμ. 02 05:43: 37 2006 C:\Windows\system32\Ntdll.dll 16. 764c0000 4549bd80 2 Νοέμ. 05: 42: 24 2006 C:\Windows\system32 \ kernel32.dll 17. SubSystemData: 00000000 18. ProcessHeap: 00150000 19. ProcessParameters: 001512e0 20. WindowTitle: «υπολογιστής γραφείου \ WinDbg.lnk του C:\Users\Alex Ionescu \» 21. ImageFile: «εργαλεία διόρθωσης αρχείων \ του C:\Program για τα παράθυρα \ windbg.exe Σελ. 9 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες 22. CommandLine: ««εργαλεία του C:\Program Files\Debugging για τα παράθυρα\ windbg.exe " «23. DllPath: «εργαλεία του C:\Program Files\Debugging για τα παράθυρα C:\Windows\ 24. system32 C:\Windows\system C:\Windows. C:\Windows\system32 C:\Windows 25. C:\Windows\System32\Wbem κοινά αρχεία \ κοινό Roxio \ αρχείων \ του C:\Program 26. DLLShared \ αρχεία \ κοινό Roxio \ DLLShared \ του C:\Program Files\Common C:\Program 27. Κοινά αρχεία \ κοινό Roxio \ 9.0 \ DLLShared \ αρχείων \ c:\sysint C:\Program Files\ 28. QuickTime \ QTSystem \ «29. Περιβάλλον: 001850a8 30. ALLUSERSPROFILE= C:\ProgramData 31. APPDATA= περιπλάνηση του C:\Users\Alex Ionescu \ AppData \ 1.1.2 μεταβλητές πυρήνων Μερικές βασικές σφαιρικές μεταβλητές πυρήνων που αφορούν τις διαδικασίες παρατίθενται στον πίνακα 5-2. Αυτοί οι μεταβλητές αναφέρονται αργότερα στο κεφάλαιο, όταν περιγράφονται τα βήματα στη δημιουργία μιας διαδικασίας 1.1.3 μετρητές απόδοσης Τα παράθυρα διατηρούν έναν αριθμό μετρητών με τον οποίο μπορείτε να ακολουθήσετε τις διαδικασίες που τρέχουν επάνω το σύστημά σας μπορείτε να ανακτήσετε αυτούς τους μετρητές programmatically ή να τους δείτε με την απόδοση εργαλείο. Ο πίνακας 5-3 απαριθμεί τους μετρητές απόδοσης σχετικούς με τις διαδικασίες Σελ. 10 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή 1.1.4 σχετικές λειτουργίες Για λόγους αναφοράς, μερικές από τις λειτουργίες παραθύρων που ισχύουν για τις διαδικασίες περιγράφονται στον πίνακα 5-4. Για περισσότερες πληροφορίες, συμβουλευθείτε την τεκμηρίωση παραθύρων API στο MSDN Βιβλιοθήκη ΠΕΙΡΑΜΑ: χρησιμοποίηση του διορθωτή πυρήνων! εντολή διαδικασίας Ο διορθωτής πυρήνων! η εντολή διαδικασίας επιδεικνύει ένα υποσύνολο των πληροφοριών Φραγμός EPROCESS. Αυτή η παραγωγή τακτοποιείται σε δύο μέρη για κάθε διαδικασία. Πρώτα βλέπετε πληροφορίες για τη διαδικασία, όπως παρουσιάζεται εδώ (όταν δεν διευκρινίζετε μια διεύθυνση διαδικασίας ή Ταυτότητα! η διαδικασία απαριθμεί τις πληροφορίες για την ενεργό διαδικασία για την τρέχουσα ΚΜΕ): 1. lkd>! διαδικασία 2. ΔΙΑΔΙΚΑΣΙΑ 85857160 SessionId: 1 Cid: 0bcc Peb: 7ffd9000 ParentCid: 090c 3. DirBase: b45b0820 ObjectTable: b94ffda0 HandleCount: 99 4. Εικόνα: windbg.exe 5. VadRoot 85a1c8e8 Vads 97 κλώνος 0 ιδιωτικά 5919. Τροποποιημένα 153. Κλειδωμένο 1 6. DeviceMap 9d32ee50 7. Συμβολικό ebaa1938 8. ElapsedTime 00:48: 44.125 9. UserTime 00:00: 00.000 10. KernelTime 00:00: 00.000 11. QuotaPoolUsage [PagedPool] 166784 12. QuotaPoolUsage [NonPagedPool] 4776 Σελ. 11 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες 13. Μεγέθη συνόλου εργασίας (τώρα, ελάχιστος, ανώτατος) (8938, 50, 345) (35752KB, 200KB, 1380KB) 14. PeakWorkingSetSize 8938 15. VirtualSize 106 ΜΒ 16. PeakVirtualSize 108 ΜΒ 17. PageFaultCount 37066 18. ΥΠΟΒΑΘΡΟ MemoryPriority 19. BasePriority 8 20. CommitCharge 6242 Μετά από τη βασική διαδικασία η παραγωγή έρχεται ένας κατάλογος των νημάτων στη διαδικασία. Εκείνη η παραγωγή είναι εξηγημένος στο «πείραμα: Χρησιμοποίηση του διορθωτή πυρήνων! τμήμα εντολής νημάτων» αργότερα κεφάλαιο. Άλλες εντολές που οι πληροφορίες διαδικασίας επίδειξης περιλαμβάνουν! λαβή, η οποία πετά πίνακας λαβών διαδικασίας. Οι δομές ασφάλειας διαδικασίας και νημάτων περιγράφονται μέσα στο Κεφάλαιο 2 1.2 προστατευμένες διαδικασίες Στο πρότυπο ασφάλειας παραθύρων, οποιαδήποτε διαδικασία που τρέχει με έναν συμβολικό περιορισμό διορθώνει το προνόμιο (όπως ο απολογισμός ενός διοικητή) μπορεί να ζητήσει οποιοδήποτε δικαίωμα πρόσβασης που επιθυμεί σε οποιοιδήποτε άλλη διαδικασία που τρέχει μηχανή-για το παράδειγμα, αυτό μπορεί να διαβάσει και να γράψει την αυθαίρετη διαδικασία η μνήμη, εγχέει τον κώδικα, αναστέλλει και επαναλαμβάνει τα νήματα, και τις πληροφορίες ερώτησης για άλλες διαδικασίες Τα εργαλεία όπως την ανάγκη εξερευνητών διαδικασίας και διευθυντών στόχου και ζητούν αυτά τα δικαιώματα πρόσβασης που παρέχουν η λειτουργία τους στους χρήστες Σελ. 12 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή Αυτή η λογική συμπεριφορά (που οι βοήθειες εξασφαλίζουν ότι οι διοικητές θα έχουν πάντα τον πλήρη έλεγχο ο τρέχοντας κώδικας στις διαφωνίες συστημάτων) με τη συμπεριφορά του συστήματος για την ψηφιακή διαχείριση δικαιωμάτων απαιτήσεις που επιβάλλονται από τη βιομηχανία μέσων στα λειτουργικά συστήματα υπολογιστών που πρέπει να υποστηρίξουν αναπαραγωγή ήχου του προηγμένου, υψηλής ποιότητας ψηφιακού περιεχομένου όπως BluRay και τα μέσα hd-dvd. η αξιόπιστη και προστατευμένη αναπαραγωγή ήχου υποστήριξης τέτοιου περιεχομένου, χρήσεις παραθύρων προστάτευσε τις διαδικασίες. Αυτοί οι διαδικασίες υπάρχουν παράλληλα με τις κανονικές διαδικασίες παραθύρων, αλλά προσθέτουν τους σημαντικούς περιορισμούς δικαιώματα πρόσβασης που άλλες διαδικασίες στο σύστημα (ακόμα και που τρέχει με τα διοικητικά προνόμια) μπορέστε να ζητήσετε Οι προστατευμένες διαδικασίες μπορούν να δημιουργηθούν από οποιαδήποτε εφαρμογή εντούτοις, το λειτουργικό σύστημα μόνο επιτρέψτε σε μια διαδικασία για να προστατευθείτε εάν το αρχείο εικόνας έχει υπογραφεί ψηφιακά με έναν πρόσθετο Πιστοποιητικό μέσων παραθύρων. Η προστατευμένη πορεία MEDIA (PMP) Vista παραθύρων χρησιμοποιεί προστατευμένες διαδικασίες για να παρέχει την προστασία για τα μεγάλης αξίας μέσα, και υπεύθυνοι για την ανάπτυξη των εφαρμογών όπως DVD οι φορείς μπορούν να χρησιμοποιήσουν τις προστατευμένες διαδικασίες με τη χρησιμοποίηση του ιδρύματος API MEDIA Η ακουστική διαδικασία γραφικών παραστάσεων συσκευών (Audiodg.exe) είναι μια προστατευμένη διαδικασία, από την προστατευμένη μουσική το περιεχόμενο μπορεί να αποκωδικοποιηθεί μέσω του. Ομοίως, η υποβολή έκθεσης λάθους παραθύρων (WER δείτε το κεφάλαιο 3 για περισσότερο πελάτη πληροφοριών ) η διαδικασία (Werfault.exe) μπορεί επίσης να τρέξει προστατευμένος επειδή χρειάζεται έχετε πρόσβαση στις προστατευμένες διαδικασίες σε περίπτωση που ένας από τους συντριβές. Τέλος, η ίδια η διαδικασία συστημάτων προστατεύεται επειδή μερικές από τις πληροφορίες αποκρυπτογράφησης παράγονται από τον οδηγό Ksecdd.sys και αποθηκευμένος στη μνήμη χρήστης-τρόπου του. Η Σελ. 13 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες διαδικασία συστημάτων προστατεύεται επίσης για να προστατεύσει την ακεραιότητα όλοι λαβές πυρήνων (από τη λαβή της διαδικασίας συστημάτων ο πίνακας περιέχει όλες τις λαβές πυρήνων σύστημα) Στο επίπεδο πυρήνων, η υποστήριξη για τις προστατευμένες διαδικασίες είναι διπλή: κατ' αρχάς, ο όγκος της διαδικασίας η δημιουργία εμφανίζεται στον τρόπο πυρήνων για να αποφύγει τις επιθέσεις εγχύσεων. (Η ροή και για προστατευμένος και η τυποποιημένη δημιουργία διαδικασίας περιγράφεται λεπτομερώς στις επόμενες δεύτερες, προστατευμένες διαδικασίες τμημάτων.) θέστε ένα πρόσθετο κομμάτι στη δομή EPROCESS τους που τροποποιεί τη συμπεριφορά σχετικού με την ασφάλεια ρουτίνες στο διευθυντή διαδικασίας για να αρνηθεί ορισμένα δικαιώματα πρόσβασης που θα χορηγούνταν κανονικά διοικητές. Ο πίνακας 5-5 δείχνει τα δικαιώματα πρόσβασης που είναι περιορισμένα ή αρνημένα 331 Ορισμένα δικαιώματα πρόσβασης είναι επίσης εκτός λειτουργίας γιατί τα νήματα που τρέχουν το εσωτερικό προστάτευσαν τις διαδικασίες εξετάστε εκείνα τα δικαιώματα πρόσβασης αργότερα σε αυτό το κεφάλαιο στο τμήμα «νήμα Internals.» Επειδή ο εξερευνητής διαδικασίας χρησιμοποιεί τα τυποποιημένα παράθυρα APIs χρήστης-τρόπου στις πληροφορίες ερώτησης για επεξεργαστείτε τα internals, είναι ανίκανο να εκτελέσει ορισμένες διαδικασίες σε τέτοιες διαδικασίες. Αφ' ενός, α εργαλείο όπως WinDbg στον τρόπο διόρθωσης πυρήνων, ο οποίος χρησιμοποιεί την υποδομή πυρήνας-τρόπου για να λάβει αυτό οι πληροφορίες, θα είναι σε θέση να επιδείξουν τις πλήρεις πληροφορίες. Δείτε το πείραμα στο νήμα τμήμα internals τον τρόπο με τον οποίο ο εξερευνητής διαδικασίας συμπεριφέρεται όταν έρχεται αντιμέτωπος με μια προστατευμένη διαδικασία τέτοια σαν Audiodg.exe Σημείωση Όπως αναφέρεται στο κεφάλαιο 1, για να εκτελέσετε τον τοπικό πυρήνα που διορθώνει πρέπει να αρχίσετε μέσα τρόπος διόρθωσης (που επιτρέπεται με τη χρησιμοποίηση «bcdedit του /debug σε» ή με τη χρησιμοποίηση της προηγμένης Msconfig μπότας επιλογή). Αυτό προστατεύει από τις διορθωτής-βασισμένες επιθέσεις στις Σελ. 14 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή προστατευμένες διαδικασίες και προστατευμένη Πορεία μέσων (PMP). Όταν τίθεται σε έναρξη στον τρόπο διόρθωσης, η υψηλής ευκρίνειας ικανοποιημένη αναπαραγωγή ήχου εργασία παραδείγματος χάριν, η προσπάθεια να παιχτούν τα μέσα MPEG2 όπως ένα DVD θα οδηγήσει σε μια πρόσβαση παραβίαση μέσα στον παίκτη μέσων (αυτό είναι από το σχέδιο) Ο περιορισμός αυτών των δικαιωμάτων πρόσβασης επιτρέπει σοβαρά τον πυρήνα sandbox μια προστατευμένη διαδικασία από πρόσβαση χρήστηςτρόπου. Αφ' ενός, επειδή μια προστατευμένη διαδικασία υποδεικνύεται από μια σημαία Ο φραγμός EPROCESS, ένας διοικητής μπορεί ακόμα να φορτώσει έναν οδηγό πυρήνας-τρόπου που θέτει εκτός λειτουργίας αυτού του κομμάτι Εντούτοις, αυτό θα ήταν μια παραβίαση του PMP προτύπου και θεωρημένος κακόβουλος, και ένας τέτοιος οδηγός πιθανώς τελικά θα εμποδιζόταν από τη φόρτωση σε ένα εξηντατετράμπιτο σύστημα επειδή ο πυρήνας-τρόπος η κώδικας-υπογραφή της πολιτικής απαγορεύει την ψηφιακή υπογραφή του κακόβουλου κώδικα. Ακόμη και στα τριανταδυάμπιτα συστήματα, ο οδηγός πρέπει να αναγνωριστεί από PMP την πολιτική ειδάλλως η αναπαραγωγή ήχου θα σταματηθεί. Αυτή η πολιτική είναι εφαρμοσμένος από τη Microsoft και όχι από οποιαδήποτε ανίχνευση πυρήνων. Αυτός ο φραγμός θα απαιτούσε το εγχειρίδιο δράση από τη Microsoft για να προσδιοριστεί η υπογραφή ως κακόβουλο και να ενημερωθεί ο πυρήνας 1.3 ροή CreateProcess Μέχρι τώρα σε αυτό το κεφάλαιο, έχετε δει τις δομές που είναι μέρος μιας διαδικασίας και το API λειτουργίες με τις οποίες εσείς (και το λειτουργικό σύστημα) μπορείτε να χειριστείτε τις διαδικασίες. Έχετε βρεί επίσης έξω πώς μπορείτε να χρησιμοποιήσετε τα εργαλεία στην άποψη πώς οι διαδικασίες αλληλεπιδρούν με το σύστημά σας. Αλλά πώς εκείνοι επεξεργάζεται μπαίνοντας σε η ύπαρξη, και πώς αυτοί βγαίνει μόλις Σελ. 15 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες εκπληρώσουν το σκοπό τους; μετά από τα τμήματα, θα ανακαλύψετε πώς μια διαδικασία παραθύρων έρχεται στη ζωή Μια διαδικασία υποσυστημάτων παραθύρων δημιουργείται όταν καλεί μια εφαρμογή μια από τη διαδικασία λειτουργίες δημιουργιών, όπως CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW, ή CreateProcessWithLogonW. Η δημιουργία μιας διαδικασίας παραθύρων αποτελείται από διάφορα στάδια που πραγματοποιούνται μέσα τρία μέρη του λειτουργικού συστήματος: η πελάτης-δευτερεύουσα βιβλιοθήκη Kernel32.dll παραθύρων (στην περίπτωση οι ρουτίνες CreateProcessAsUser, CreateProcessWithTokenW, και CreateProcessWithLogonW, μέρος της εργασίας γίνεται αρχικά σε Advapi32.dll), τον ανώτερο υπάλληλο παραθύρων, και τα παράθυρα διαδικασία υποσυστημάτων (Csrss) Λόγω της πολλαπλάσιας αρχιτεκτονικής υποσυστημάτων περιβάλλοντος των παραθύρων, δημιουργία το εκτελεστικό αντικείμενο διαδικασίας (που άλλα υποσυστήματα μπορούν να χρησιμοποιήσουν) είναι χωρισμένο από την εργασία σχετική μέσα δημιουργία μιας διαδικασίας υποσυστημάτων παραθύρων. Έτσι, αν και η ακόλουθη περιγραφή της ροής Η λειτουργία CreateProcess παραθύρων είναι περίπλοκη, λαμβάνει υπόψη ότι μέρος της εργασίας είναι συγκεκριμένο για η σημασιολογία που προστέθηκε από το υποσύστημα παραθύρων σε αντιδιαστολή με την εργασία πυρήνων έπρεπε να δημιουργήσει εκτελεστικό αντικείμενο διαδικασίας Ο ακόλουθος κατάλογος συνοψίζει τα κύρια στάδια της δημιουργίας μιας διαδικασίας με τα παράθυρα Λειτουργία CreateProcess. Οι διαδικασίες που εκτελούνται σε κάθε στάδιο περιγράφονται λεπτομερώς επόμενα τμήματα. Μερικές από αυτές τις διαδικασίες μπορούν να εκτελεσθούν από το ίδιο CreateProcess (ή άλλη ρουτίνες αρωγών στον τρόπο χρηστών), ενώ άλλες θα εκτελεσθούν από NtCreateUserProcess ή ένα από οι ρουτίνες αρωγών του στον τρόπο πυρήνων. Στη λεπτομερή ανάλυσή μας που ακολουθεί, θα διαφοροποιήσουμε μεταξύ τα δύο σε κάθε βήμα που απαιτείται Σελ. 16 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή Σημείωση Πολλά βήματα CreateProcess συσχετίζονται με την οργάνωση του εικονικού διαστήματος διευθύνσεων διαδικασίας και επομένως αναφερθείτε σε πολλούς διοικητικούς όρους και δομές μνήμης που καθορίζονται στο κεφάλαιο 9 1. Επικυρώστε τις παραμέτρους μετατρέψτε τις σημαίες και τις επιλογές υποσυστημάτων παραθύρων στον ντόπιό τους αντίστοιχα αναλύστε, επικυρώστε, και μετατρέψτε τον κατάλογο ιδιοτήτων στο εγγενές αντίστοιχό του 2. Ανοίξτε το αρχείο εικόνας (.exe) που εκτελείται μέσα στη διαδικασία 3. Δημιουργήστε το εκτελεστικό αντικείμενο διαδικασίας παραθύρων 4. Δημιουργήστε το αρχικό νήμα (σωρός, πλαίσιο, και εκτελεστικό αντικείμενο νημάτων παραθύρων) 5. Εκτελέστε την μετα-δημιουργία, παράθυρο-υποσύστημα-συγκεκριμένη έναρξη διαδικασίας 6. Εκτέλεση έναρξης του αρχικού νήματος (εκτός αν η ΑΝΑΣΤΑΛΜΈΝΗ CREATE_ σημαία ήταν διευκρίνισε) 333 7. Στα πλαίσια της νέων διαδικασίας και του νήματος, ολοκληρώστε την έναρξη της διεύθυνσης χωρίστε κατά διαστήματα (όπως απαραίτητο φορτίο DLLs) και αρχίστε την εκτέλεση του προγράμματος Το σχήμα 5-5 παρουσιάζει ότι μια επισκόπηση των σκηνικών παραθύρων ακολουθεί για να δημιουργήσει μια διαδικασία 1.3.1 στάδιο 1: Μετατροπή και επικύρωση των παραμέτρων και των σημαιών Πρίν ανοίγει την εκτελέσιμη εικόνα που τρέχει, CreateProcess εκτελεί τα ακόλουθα βήματα: Σε CreateProcess, η κατηγορία προτεραιότητας για τη νέα διαδικασία διευκρινίζεται ως ανεξάρτητα κομμάτια μέσα η παράμετρος CreationFlags. Κατά συνέπεια, μπορείτε να διευκρινίσετε περισσότερες από μια κατηγορίες προτεραιότητας για έναν ενιαίο Κλήση CreateProcess. Τα παράθυρα επιλύουν το θέμα του οποίου κατηγορία Σελ. 17 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες προτεραιότητας για να ορίσει στη διαδικασία με την επιλογή του συνόλου κατηγορίας χαμηλός-προτεραιότητας Εάν καμία κατηγορία προτεραιότητας δεν διευκρινίζεται για τη νέα διαδικασία, η κατηγορία προτεραιότητας προκαθορίζει σε κανονικό εκτός αν η κατηγορία προτεραιότητας της διαδικασίας που δημιούργησε αυτό είναι μη απασχόλησης ή κάτω από κανονικό, οπότε σ'αυτή την περίπτωση η κατηγορία προτεραιότητας της νέας διαδικασίας θα έχει την ίδια προτεραιότητα με τη δημιουργώντας κατηγορία Εάν μια σε πραγματικό χρόνο κατηγορία προτεραιότητας διευκρινίζεται για τη νέα διαδικασία και ο επισκέπτης της διαδικασίας όχι έχετε το προνόμιο προτεραιότητας σχεδίου αύξησης, η κατηγορία προτεραιότητας χρησιμοποιείται αντ' αυτού. Σε άλλος οι λέξεις, CreateProcess δεν αποτυγχάνουν ακριβώς επειδή ο επισκέπτης έχει τα ανεπαρκή προνόμια για να δημιουργήσει διαδικασία στη σε πραγματικό χρόνο κατηγορία προτεραιότητας η νέα διαδικασία ακριβώς δεν θα έχει μια τόσο υψηλή προτεραιότητα όπως Πραγματικός χρόνος Όλα τα παράθυρα συνδέονται με τους υπολογιστές γραφείου, η γραφική αντιπροσώπευση ενός χώρου εργασίας. Εάν κανένας υπολογιστής γραφείου δεν διευκρινίζεται σε CreateProcess, η διαδικασία συνδέεται με το ρεύμα του επισκέπτη υπολογιστής γραφείου Εάν η διαδικασία είναι μέρος ενός αντικειμένου εργασίας, αλλά οι σημαίες δημιουργιών ζήτησαν ένα χωριστό εικονικό OS η μηχανή (VDM), η σημαία αγνοείται Εάν ο επισκέπτης στέλνει μια λαβή σε ένα όργανο ελέγχου ως λαβή παραγωγής αντί μιας κονσόλας andle, οι τυποποιημένες σημαίες λαβών αγνοούνται Εάν οι σημαίες δημιουργιών διευκρινίσουν ότι η διαδικασία θα διορθωθεί, Kernel32 αρχίζει το α σύνδεση ο ο εγγενής κώδικας διόρθωσης σε Ntdll.dll με την κλήση DbgUiConnectToDbg και του ETS α η λαβή διορθώνει το αντικείμενο από το φραγμό περιβάλλοντος νημάτων (TEB) μόλις επιστρέψει το unction Σελ. 18 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή Kernel32.dll θέτει στην προεπιλογή τον τρόπο σκληρού λάθους εάν οι σημαίες δημιουργιών διευκρίνισαν μιας Οι καθορισμένες ως προς τον χρήστη ιδιότητες απαριθμούν μετατρέπονται από το σχήμα υποσυστημάτων παραθύρων στον ντόπιο ormat, και εσωτερικές ιδιότητες προστίθεται σε τον Σημείωση Ο κατάλογος ιδιοτήτων έδωσε τις άδειες μιας κλήσης CreateProcess που περνούν πίσω στον επισκέπτη πληροφορίες eyond ένας απλός κώδικας θέσης, όπως η διεύθυνση TEB του αρχικού νήματος ή πληροφορίες ν το τμήμα εικόνας. Αυτό είναι απαραίτητο για τις προστατευμένες διαδικασίες δεδομένου ότι ο γονέας δεν μπορεί ρωτήστε τις πληροφορίες του αφότου δημιουργείται το παιδί Μόλις ολοκληρωθούν αυτά τα βήματα, CreateProcess θα εκτελέσει την αρχική κλήση Δημιουργία προσπάθειας NtCreateUserProcess ο της διαδικασίας. Επειδή Kernel32.dll δεν έχει καμία ιδέα σε αυτό σημείο hether που το όνομα εικόνας εφαρμογής είναι μια πραγματική εφαρμογή παραθύρων, ή εάν αυτό η δύναμη είναι ένα POSIX, 6 μπιτ, ή η εφαρμογή DOS, η κλήση μπορεί να αποτύχει, στην οποία το σημείο CreateProcess θα εξετάσει το rror ο λόγος και προσπαθεί να διορθώσει την κατάσταση 1.3.2 στάδιο 2: Ανοίγοντας την εικόνα που εκτελείται Όπως διευκρινίζεται στο σχήμα 5-6, το πρώτο στάδιο σε NtCreateUserProcess είναι να βρεθεί ο κατάλληλος Εικόνα παραθύρων που θα τρέξει το εκτελέσιμο αρχείο που διευκρινίζεται από τον επισκέπτη και θα δημιουργήσει ένα τμήμα αντικείμενο για να το χαρτογραφήσει αργότερα στο διάστημα διευθύνσεων της νέας διαδικασίας. Εάν η κλήση απέτυχε για οποιοδήποτε λόγο, αυτό θα επιστρέψει σε CreateProcess με ένα κράτος αποτυχίας (δείτε τον πίνακα 5-6) που θα προκαλέσει CreateProcess εκτέλεση προσπάθειας πάλι Εάν το εκτελέσιμο αρχείο που διευκρινίζεται είναι παράθυρα.exe, NtCreateUserProcess θα προσπαθήσει να ανοίξει αρχειοθετήστε και Σελ. 19 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες δημιουργήστε ένα αντικείμενο τμημάτων για το. Το αντικείμενο δεν χαρτογραφείται στη μνήμη ακόμα, αλλά το ανοίγουν Ακριβώς επειδή ένα αντικείμενο τμημάτων έχει δημιουργηθεί επιτυχώς δεν σημαίνει ότι το αρχείο ισχύει Εικόνα παραθύρων, εντούτοις θα μπορούσε να είναι ένα DLL ή ένα POSIX εκτελέσιμο. Εάν το αρχείο είναι ένα POSIX εκτελέσιμος, η εικόνα για να είναι οργανωμένες αλλαγές σε Posix.exe, και καινούρια ξεκινήματα CreateProcess από αρχή του σταδίου 1. Εάν το αρχείο είναι ένα DLL, CreateProcess αποτυγχάνει Τώρα που έχει βρεί NtCreateUserProcess μια έγκυρη εκτελέσιμη εικόνα παραθύρων, ως τμήμα ο κώδικας δημιουργιών διαδικασίας που περιγράφεται στο στάδιο 3 αυτό κοιτάζει στο ληξιαρχείο κάτω από το ΛΟΓΙΣΜΙΚΌ HKLM \ \ Επιλογές εκτέλεσης αρχείων εικόνας της Microsoft \ WINDOWS NT \ CurrentVersion \ να δει εάν ένα subkey 335 με το αρχείο - όνομα και επέκταση της εκτελέσιμης εικόνας (αλλά χωρίς τον κατάλογο και την πορεία πληροφορία-για το παράδειγμα, Image.exe) υπάρχει εκεί. Εάν, PspAllocateProcess ψάχνει το α ονομασμένος αξία διορθωτής για εκείνο το κλειδί. Εάν αυτή η αξία είναι παρούσα, η εικόνα που οργανώνεται γίνεται η σειρά σε εκείνη την αξία και τα καινούρια ξεκινήματα CreateProcess στο στάδιο 1 Άκρη Μπορείτε να εκμεταλλευτήτε αυτήν την συμπεριφορά δημιουργιών διαδικασίας και να διορθώσετε τον κώδικα ξεκινήματος Διαδικασίες υπηρεσιών παραθύρων προτού να αρχίσουν παρά τη σύνδεση ο διορθωτής μετά από να αρχίσουν α υπηρεσία, η οποία δεν επιτρέπει σε σας για να διορθώσει τον κώδικα ξεκινήματος Αφ' ενός, εάν η εικόνα δεν είναι παράθυρα.exe (για το παράδειγμα, εάν είναι ένα MS-dos, Win16, ή μια εφαρμογή POSIX), CreateProcess περνά από μια σειρά βημάτων να βρεί τα παράθυρα εικόνα υποστήριξης για να το τρέξει. Αυτή η διαδικασία είναι απαραίτητη επειδή οι εφαρμογές μηπαραθύρων δεν οργανώνονται τα άμεσα-παράθυρα χρησιμοποιούν αντ' αυτού μιας από μερικές πρόσθετες εικόνες υποστήριξης που είναι στη συνέχεια αρμόδιες για πραγματικά να τρέξει το πρόγραμμα μηπαραθύρων. Παραδείγματος χάριν, εάν προσπαθείτε να τρέξετε ένα Σελ. 20 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή POSIX η εφαρμογή, CreateProcess τον προσδιορίζει υπό αυτήν τη μορφή και αλλάζει την εικόνα που οργανώνεται στα παράθυρα εκτελέσιμο αρχείο Posix.exe. Εάν προσπαθείτε να τρέξετε ένα MS-dos ή ένα Win16 εκτελέσιμο, η εικόνα οργανώνεται γίνεται τα παράθυρα εκτελέσιμο Ntvdm.exe. Εν ολίγοις, δεν μπορείτε να δημιουργήσετε άμεσα μια διαδικασία αυτή δεν είναι μια διαδικασία παραθύρων. Εάν τα παράθυρα δεν μπορούν να βρούν έναν τρόπο να επιλυθεί η ενεργοποιημένη εικόνα ως α Η διαδικασία παραθύρων (όπως φαίνεται στον πίνακα 5-6), CreateProcess αποτυγχάνει 336 Συγκεκριμένα, το δέντρο απόφασης ότι CreateProcess πηγαίνει κατευθείαν να τρέξει μια εικόνα είναι το ακόλουθο: Εάν η εικόνα είναι μια εφαρμογή MS-dos με.exe, το.com, ή μια.pif επέκταση, ένα μήνυμα στέλνεται στο υποσύστημα παραθύρων στον έλεγχο εάν μια διαδικασία υποστήριξης MS-dos (Ntvdm.exe, διευκρινισμένο στον έλεγχο ΣΥΣΤΗΜΆΤΩΝ \ \ CurrentControlSet \ αξίας HKLM ληξιαρχείων το cmdline ΚΑΤΑΠΛΗΚΤΙΚΉΣ ΕΠΙΤΥΧΊΑΣ \ \) έχει ήδη δημιουργημένος για αυτήν την σύνοδο. Εάν μια διαδικασία υποστήριξης έχει δημιουργηθεί, χρησιμοποιείται για να τρέξει Εφαρμογή MS-dos. (Το υποσύστημα παραθύρων στέλνει το μήνυμα στο VDM [εικονικό DOS Μηχανή] διαδικασία για να τρέξει τις νέες επιστροφές CreateProcess εικόνας.) έπειτα. Εάν μια διαδικασία υποστήριξης δεν έχει δημιουργημένος, η εικόνα για να είναι οργανωμένες αλλαγές σε Ntvdm.exe και καινούρια ξεκινήματα CreateProcess στο στάδιο 1 Εάν το αρχείο που τρέχει έχει.bat ή μια επέκταση του.cm δ, η εικόνα που οργανώνεται γίνεται Cmd.exe, Τα παράθυρα διατάζουν την υπαγόρευση, και τα καινούρια ξεκινήματα CreateProcess στο στάδιο 1. (Το όνομα του αρχείου δεσμης είναι περασμένος ως πρώτη παράμετρος σε Cmd.exe.) Εάν η εικόνα είναι ένα Win16 (παράθυρα 3.1) εκτελέσιμο, CreateProcess πρέπει να αποφασίσει εάν α η νέα διαδικασία VDM πρέπει να δημιουργηθεί για να το τρέξει ή εάν πρέπει να χρησιμοποιήσει το sessionwide προεπιλογής κοινή διαδικασία VDM (που δύναμη όχι ακόμα να έχει δημιουργηθεί). Οι σημαίες CreateProcess Σελ. 21 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες CREATE_SEPARATE_WOW_VDM και CREATE_SHARED_WOW_VDM ελέγχει αυτό απόφαση. Εάν αυτές οι σημαίες δεν διευκρινίζονται, το ΣΎΣΤΗΜΑ \ \ CurrentControlSet αξίας HKLM ληξιαρχείων \ Η ΚΑΤΑΠΛΗΚΤΙΚΉ ΕΠΙΤΥΧΊΑ \ DefaultSeparateVDM ελέγχου \ υπαγορεύει τη συμπεριφορά προεπιλογής Εάν η εφαρμογή πρόκειται να οργανωθεί σε ένα χωριστό VDM, η εικόνα για να είναι οργανωμένες αλλαγές στην αξία HKLM \ wowcmdline ΚΑΤΑΠΛΗΚΤΙΚΉΣ ΕΠΙΤΥΧΊΑΣ \ ελέγχου \ ΣΥΣΤΗΜΆΤΩΝ \ CurrentControlSet \ και καινούρια ξεκινήματα CreateProcess Στάδιο 1. Διαφορετικά, το υποσύστημα παραθύρων στέλνει ένα μήνυμα που βλέπει εάν το κοινό VDM η διαδικασία υπάρχει και μπορεί να χρησιμοποιηθεί. (Εάν η διαδικασία VDM τρέχει σε έναν διαφορετικό υπολογιστή γραφείου ή δεν είναι τρέχοντας κάτω από την ίδια ασφάλεια με τον επισκέπτη, δεν μπορεί να χρησιμοποιηθεί και μια νέα διαδικασία VDM πρέπει να είναι δημιουργημένο.) εάν μια κοινή διαδικασία VDM μπορεί να χρησιμοποιηθεί, το υποσύστημα παραθύρων στέλνει ένα μήνυμα σε το τρέξτε τη νέες εικόνα και τις επιστροφές CreateProcess. Εάν η διαδικασία VDM δεν έχει δημιουργηθεί ακόμα (ή εάν αυτό 337 υπάρχει αλλά δεν μπορεί να χρησιμοποιηθεί), η εικόνα για να είναι οργανωμένες αλλαγές στην εικόνα υποστήριξης VDM και Καινούρια ξεκινήματα CreateProcess στο στάδιο 1. 1.3.3 στάδιο 3: Δημιουργία του εκτελεστικού αντικειμένου διαδικασίας παραθύρων (Διαδικασία PspAllocate-) Σε αυτό το σημείο, NtCreateUserProcess έχει ανοίξει ένα έγκυρο εκτελέσιμο αρχείο παραθύρων και ένα δημιουργημένο α αντικείμενο τμημάτων για να το χαρτογραφήσει στο νέο διάστημα διευθύνσεων διαδικασίας. Έπειτα δημιουργεί έναν ανώτερο υπάλληλο παραθύρων αντικείμενο διαδικασίας για να τρέξει την εικόνα με την κλήση της εσωτερικής λειτουργίας PspAllocateProcess συστημάτων Η δημιουργία του εκτελεστικού αντικειμένου διαδικασίας (που γίνεται από το νήμα δημιουργίας) περιλαμβάνει μετά από τα υποστάδια: Καθιέρωση Σελ. 22 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή ο φραγμός EPROCESS Δημιουργία του αρχικού διαστήματος διευθύνσεων διαδικασίας Μονογραφή του φραγμού διαδικασίας πυρήνων (KPROCESS) Καθιέρωση το PEB Συμπέρασμα της οργάνωσης του διαστήματος διευθύνσεων διαδικασίας (που περιλαμβάνει τη μονογραφή της εργασίας καθορισμένος κατάλογος και εικονικοί περιγραφείς και χαρτογράφηση διαστήματος διευθύνσεων η εικόνα στο διάστημα διευθύνσεων) Σημείωση Ο μόνος χρόνος δεν θα υπάρξει μια διαδικασία γονέων είναι κατά τη διάρκεια της έναρξης συστημάτων. Μετά από αυτόν το σημείο, μια διαδικασία γονέων απαιτείται πάντα για να παρέχει ένα πλαίσιο ασφάλειας για τη νέα διαδικασία Στάδιο 3A: Καθιέρωση ο φραγμός EPROCESS Αυτό το υποστάδιο περιλαμβάνει τα ακόλουθα βήματα: 1. Διαθέστε και μονογράψτε το φραγμό παραθύρων EPROCESS 2. Κληρονομήστε τη συσκευή παραθύρων namespace (συμπεριλαμβανομένου του καθορισμού των επιστολών κίνησης, COM λιμένες, et ainsi de suite και τα λοιπά) 3. Κληρονομήστε την προτεραιότητα μασκών και σελίδων συγγένειας διαδικασίας από τη διαδικασία γονέων. Εάν υπάρχει αριθ η διαδικασία γονέων, η προτεραιότητα σελίδων προεπιλογής (5) χρησιμοποιείται, και μια μάσκα συγγένειας όλων των επεξεργαστών (KeActiveProcessors) χρησιμοποιείται 4. Θέστε το φραγμό ποσόστωσης της νέας διαδικασίας στη διεύθυνση του φραγμού ποσόστωσης της διαδικασίας γονέων του, και αύξηση η αρίθμηση αναφοράς για το φραγμό ποσόστωσης του γονέα. Εάν η διαδικασία δημιουργήθηκε κατευθείαν Το CreateProcessAsUser, αυτό το βήμα δεν θα εμφανιστεί 5. Το ελάχιστο και μέγιστο μέγεθος συνόλου επεξεργασίας τίθεται τις τιμές PspMinimumWorkingSet και PspMaximumWorkingSet, αντίστοιχα. Αυτές οι τιμές μπορούν να είναι εξαιρετικά σημαντικός εάν οι επιλογές απόδοσης διευκρινίστηκαν στο βασικό μέρος PerfOptions του αρχείου εικόνας Επιλογές εκτέλεσης, οπότε σ'αυτή την περίπτωση το μέγιστο σύνολο εργασίας λαμβάνεται από εκεί Σελ. 23 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες 6. Αποθηκεύστε την ταυτότητα διαδικασίας της διαδικασίας γονέων στον τομέα InheritedFromUniqueProcessId νέο αντικείμενο διαδικασίας 338 7. Συνδέστε τη διαδικασία με τη σύνοδο της διαδικασίας γονέων 8. Μονογράψτε το μέρος KPROCESS του αντικειμένου διαδικασίας. (Δείτε το στάδιο 3C.) 9. Δημιουργήστε το αρχικό σημείο πρόσβασης της διαδικασίας (ένα αντίγραφο του αρχικού σημείου του γονέα του) Οι νέες διαδικασίες κληρονομούν το σχεδιάγραμμα ασφάλειας των γονέων τους. Εάν το CreateProcessAsUser η λειτουργία χρησιμοποιείται για να διευκρινίσει ένα διαφορετικό σημείο πρόσβασης για τη νέα διαδικασία, το σημείο είναι έπειτα αλλαγμένος κατάλληλα 10. Ο πίνακας λαβών διαδικασίας μονογράφεται. Εάν κληρονομήστε η σημαία λαβών τίθεται για το γονέα η διαδικασία, οποιεσδήποτε κληρονομικές λαβές αντιγράφεται από τον πίνακα λαβών αντικειμένου του γονέα στο νέο διαδικασία. (Για περισσότερες πληροφορίες για τους πίνακες λαβών αντικειμένου, δείτε το κεφάλαιο 3.) Μια ιδιότητα διαδικασίας μπορεί επίσης χρησιμοποιείται για να διευκρινίσει μόνο ένα υποσύνολο των λαβών, το οποίο είναι χρήσιμο όταν χρησιμοποιείτε CreateProcessAsUser για να περιορίσει ποια αντικείμενα πρέπει να κληρονομηθούν με τη διαδικασία παιδιών 11. Εάν οι επιλογές απόδοσης διευκρινίστηκαν μέσω του κλειδιού PerfOptions, αυτές εφαρμόζονται τώρα Το κλειδί PerfOptions περιλαμβάνει αγνοεί για το όριο συνόλου εργασίας, I/O προτεραιότητα, προτεραιότητα σελίδων, και Κατηγορία προτεραιότητας ΚΜΕ της διαδικασίας 12. Η κατηγορία και το κβάντο προτεραιότητας διαδικασίας υπολογίζονται και τίθενται 13. Θέστε τη θέση εξόδων της νέας διαδικασίας σε STATUS_PENDING Στάδιο 3B: Δημιουργία του αρχικού διαστήματος διευθύνσεων διαδικασίας Το αρχικό διάστημα διευθύνσεων διαδικασίας αποτελείται από τις ακόλουθες σελίδες: Κατάλογος σελίδων (και είναι δυνατό εκεί θα είναι περισσότερο από ένας για τα συστήματα με τους πίνακες σελίδων περισσότερα από δύο επίπεδα, όπως x86 τα συστήματα στον τρόπο PAE Σελ. 24 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή ή τα εξηντατετράμπιτα συστήματα) Σελίδα υπερδιαστημάτων Κατάλογος λειτουργώντας συνόλου Για να δημιουργήσει αυτές τις τρεις σελίδες, τα ακόλουθα μέτρα λαμβάνονται: 1. Οι επιτραπέζιες καταχωρήσεις σελίδων δημιουργούνται στους κατάλληλους πίνακες σελίδων για να χαρτογραφήσουν τις αρχικές σελίδες 2. Ο αριθμός σελίδων αφαιρείται από τον πυρήνα μεταβλητό MmTotalCommittedPages και προστιθέμενος σε MmProcessCommit 3. Το σε όλο το σύστημα προεπιλογής μέγεθος συνόλου επεξεργασίας ελάχιστο (PsMinimumWorkingSet) είναι αφαιρεμένος από MmResidentAvailablePages 4. Οι επιτραπέζιες σελίδες σελίδων για η μερίδα του διαστήματος συστημάτων και η κρύπτη συστημάτων είναι ταξινομικός στη διαδικασία Στάδιο 3C: Δημιουργία του φραγμού διαδικασίας πυρήνων Το επόμενο στάδιο PspAllocateProcess είναι η έναρξη του φραγμού KPROCESS. Αυτό η εργασία εκτελείται από KeInitializeProcess, το οποίο περιέχει: Ένας δείκτης σε έναν κατάλογο νημάτων πυρήνων. (Ο πυρήνας δεν έχει καμία γνώση λαβών, έτσι αυτό παρακάμπτει τον πίνακα αντικειμένου.) 339 Ένας δείκτης στον επιτραπέζιο κατάλογο σελίδων της διαδικασίας (που χρησιμοποιείται για να παρακολουθήσει της διαδικασίας εικονικό διάστημα διευθύνσεων) Ο συνολικός χρόνος τα νήματα της διαδικασίας έχει εκτελέσει Ο αριθμός κύκλων ρολογιών τα νήματα της διαδικασίας έχει καταναλώσει Η προτεραιότητα βάση-σχεδιασμού προεπιλογής της διαδικασίας (που αρχίζει όπως κανονική, ή 8, εκτός αν η διαδικασία γονέων τέθηκε ως στόχος να τεμπελιάσει ή κάτω από κανονικό, οπότε σ'αυτή την περίπτωση η ρύθμιση κληρονομείται) Η συγγένεια επεξεργαστών προεπιλογής για τα νήματα στη διαδικασία Η ανταλλαγή διαδικασίας δηλώνει (εδρεύων, έξω-ανταλλαγμένος, ή στη μετάβαση) Ο ιδανικός κόμβος NUMA (αρχικά θέστε 0) Σελ. 25 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες Ο σπόρος νημάτων, βασισμένος στον ιδανικό επεξεργαστή που ο πυρήνας έχει επιλέξει για αυτήν την διαδικασία (που είναι βασισμένο στον προηγουμένως δημιουργημένο ιδανικό επεξεργαστή της διαδικασίας, τυχαιοποιώντας αποτελεσματικά αυτό κατά τρόπο round-robin). Η δημιουργία μιας νέας διαδικασίας θα ενημερώσει το σπόρο σε KeNodeBlock (το αρχικό Φραγμός κόμβων NUMA) έτσι ώστε η επόμενη νέα διαδικασία θα πάρει έναν διαφορετικό ιδανικό σπόρο επεξεργαστών Η αρχική αξία (ή επαναρυθμισμένη αξία) του κβάντου προεπιλογής διαδικασίας (που περιγράφεται μέσα περισσότερη λεπτομέρεια στο «νήμα που» το τμήμα αργότερα στο κεφάλαιο), που είναι σε 6 μέχρι μονογράφεται αργότερα (από PspComputeQuantumAndPriority) Σημείωση Το αρχικό κβάντο προεπιλογής διαφέρει μεταξύ των συστημάτων πελατών και κεντρικών υπολογιστών παραθύρων. Για περισσότερες πληροφορίες για το νήμα quantums, στροφή στη συζήτησή τους στο τμήμα «σχέδιο νημάτων.» Στάδιο τρισδιάστατο: Συμπέρασμα της οργάνωσης του διαστήματος διευθύνσεων διαδικασίας Η καθιέρωση το διάστημα διευθύνσεων για μια νέα διαδικασία είναι κάπως περίπλοκη, έτσι εξετάστε αυτό που περιλαμβάνεται ένα βήμα τη φορά. Για να πάρετε τα περισσότερα από αυτό το τμήμα, πρέπει να έχετε μερικών οικειότητα με τα internals του διευθυντή μνήμης παραθύρων. Ο διευθυντής εικονικής μνήμης θέτει την αξία του τελευταίου χρόνου περιποίησης της διαδικασίας στο ρεύμα χρόνος. Ο διευθυντής λειτουργώντας συνόλου (που τρέχει στα πλαίσια του καθορισμένου συστήματος διευθυντών ισορροπίας νήμα) χρησιμοποιεί αυτήν την αξία για να καθορίσει πότε για να αρχίσει την τακτοποίηση συνόλου εργασίας Ο διευθυντής μνήμης μονογράφει τα ελαττώματα κατάλογος-σελίδων λειτουργώντας συνόλου της διαδικασίας μπορεί τώρα να είναι λήφθείτε Το τμήμα (που δημιουργείται όταν άνοιξαν το αρχείο εικόνας) χαρτογραφείται τώρα στο νέο το διάστημα διευθύνσεων της διαδικασίας, και η διεύθυνση βάσεων τμημάτων διαδικασίας τίθενται τη διεύθυνση βάσεων εικόνα Ntdll.dll χαρτογραφείται στη διαδικασία Σελ. 26 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή Σημείωση Οι διαδικασίες POSIX κλωνοποιούν το διάστημα διευθύνσεων των γονέων τους, έτσι δεν ειναι απαραίτητο να πάνε μέσω αυτών των βημάτων για να δημιουργήσει ένα νέο διάστημα διευθύνσεων. Στην περίπτωση POSIX των εφαρμογών, ο νέος η διεύθυνση βάσεων τμημάτων της διαδικασίας τίθεται αυτή της διαδικασίας γονέων της και το PEB του γονέα κλωνοποιείται για η νέα διαδικασία Στάδιο 3E: Καθιέρωση το PEB Το NtCreateUserProcess καλεί MmCreatePeb, το οποίο χαρτογραφεί αρχικά το σε όλο το σύστημα υπήκοο πίνακες γλωσσικής υποστήριξης (NLS) στο διάστημα διευθύνσεων της διαδικασίας. Καλεί έπειτα MiCreatePebOrTeb διαθέστε μια σελίδα για το PEB και μονογράφει έπειτα διάφορους τομείς, οι οποίοι περιγράφονται στον πίνακα 5-7 Εντούτοις, εάν οι εικόνας nity τιμές έκδοσης ή affi παραθύρων FI LE specifi ES ρητές, αυτό οι πληροφορίες αντικαθιστούν τις αρχικές τιμές που παρουσιάζονται στον πίνακα 5-7. Η χαρτογράφηση από τις πληροφορίες εικόνας το FI elds στο FI PEB elds περιγράφεται στον πίνακα 5-8 Εάν τα χαρακτηριστικά IMAGE_FILE_UP_SYSTEM_ONLY ΛΦ ag επιγραφών εικόνας τίθενται (δείχνοντας ότι η εικόνα μπορεί να τρέξει μόνο σε ένα uniprocessor σύστημα), μια ενιαία ΚΜΕ επιλέγεται για όλους τα νήματα σε αυτήν την νέα διαδικασία που τρέχει επάνω. Η διαδικασία επιλογής εκτελείται με απλά να ανακυκλώσει μέσω του διαθέσιμου επεξεργαστής-κάθε χρόνος αυτός ο τύπος εικόνας οργανώνεται, ο επόμενος επεξεργαστής χρησιμοποιείται Κατά αυτόν τον τρόπο, αυτοί οι τύποι εικόνων διαδίδονται ομοιόμορφα στους επεξεργαστές Εάν το specifi ES εικόνας μια ρητή nity μάσκα affi επεξεργαστών (για το παράδειγμα, ένα FI eld στο confi η επιγραφή guration), αυτή η αξία αντιγράφεται στο PEB και έθεσε αργότερα ως affi διαδικασίας προεπιλογής nity μάσκα Στάδιο 3F: Ολοκλήρωση της οργάνωσης του εκτελεστικού αντικειμένου διαδικασίας (PspInsertProcess) Προτού να μπορέσει να επιστραφεί η λαβή στη νέα διαδικασία, μερικά τελικά βήματα οργάνωσης Σελ. 27 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες πρέπει να είναι ολοκληρωμένος, τα οποία εκτελούνται από PspInsertProcess και τις λειτουργίες αρωγών του: 1. Εάν ο σε όλο το σύστημα έλεγχος των διαδικασιών επιτρέπεται (είτε ως αποτέλεσμα των τοπικών πολιτικών τοποθετήσεων είτε οι πολιτικές τοποθετήσεις ομάδας από έναν ελεγκτή περιοχών), η δημιουργία της διαδικασίας γράφονται στην ασφάλεια κούτσουρο γεγονότος 2. Εάν η διαδικασία γονέων περιλήφθηκε σε μια εργασία, η εργασία ανακτάται από το σύνολο επιπέδων εργασίας ο γονέας και συνδεδεμένος έπειτα στη σύνοδο της πρόσφατα δημιουργημένης διαδικασίας. Τέλος, η νέα διαδικασία είναι προστιθέμενος στην εργασία 3. Το PspInsertProcess παρεμβάλλει το νέο φραγμό διαδικασίας στο τέλος του καταλόγου παραθύρων ενεργού διαδικασίες (PsActiveProcessHead) 4. Η διαδικασία διορθώνει το λιμένα της διαδικασίας γονέων αντιγράφεται στη νέα διαδικασία παιδιών, εκτός αν Η σημαία NoDebugInherit τίθεται (που μπορεί να ζητηθεί κατά το δημιουργία της διαδικασίας). Εάν διορθώστε το λιμένα διευκρινίστηκε, είναι συνδεμένο με τη νέα διαδικασία αυτή τη στιγμή 5. Τέλος, PspInsertProcess δηλώνει οποιεσδήποτε καταχωρημένες ρουτίνες επανάκλησης, δημιουργεί μια λαβή για η νέα διαδικασία με την κλήση ObOpenObjectByPointer, και επιστρέφει έπειτα αυτήν την λαβή στον επισκέπτη 1.3.4 στάδιο 4: Δημιουργία του αρχικού νήματος και του σωρού του και Πλαίσιο Σε αυτό το σημείο, το εκτελεστικό αντικείμενο διαδικασίας παραθύρων οργανώνεται εντελώς. Δεν έχει ακόμα κανένα νήμα, εντούτοις, έτσι δεν μπορεί να κάνει τίποτα ακόμα. Είναι τώρα χρόνος να αρχιστεί εκείνη η εργασία. Κανονικά, Η ρουτίνα PspCreateThread είναι αρμόδια για όλες τις πτυχές της δημιουργίας νημάτων και καλείται κοντά NtCreateThread όταν ένα νέο νήμα δημιουργείται. Εντούτοις, επειδή το αρχικό νήμα δημιουργείται εσωτερικά από τον πυρήνα χωρίς εισαγωγή χρήστης- Σελ. 28 από 226

Πτυχιακή εργασία της Ελευθερίας Δερμεντζή τρόπου, οι δύο ρουτίνες αρωγών που PspCreateThread στηρίζεται χρησιμοποιείται αντ' αυτού: PspAllocateThread και PspInsertThread Το PspAllocateThread χειρίζεται την πραγματικές δημιουργία και την έναρξη του εκτελεστικού νήματος το ίδιο αντικείμενο, ενώ PspInsertThread χειρίζεται τη δημιουργία της λαβής και της ασφάλειας νημάτων ιδιότητες και η κλήση σε KeStartThread για να μετατρέψει το εκτελεστικό αντικείμενο σε schedulable νήμα επάνω το σύστημα. Εντούτοις, το νήμα δεν θα κάνει τίποτα που ακόμα- δημιουργείται σε ένα ανασταλμένο κράτος και δεν είναι επανέλαβε έως ότου μονογράφεται εντελώς η διαδικασία (όπως περιγράφεται στο στάδιο 5) Σημείωση Η παράμετρος νημάτων (που δεν μπορεί να διευκρινιστεί σε CreateProcess αλλά μπορεί να διευκρινιστεί μέσα CreateThread) είναι η διεύθυνση του PEB. Αυτή η παράμετρος θα χρησιμοποιηθεί από τον κώδικα έναρξης αυτός τρέχει στα πλαίσια αυτού του νέου νήματος (όπως περιγράφεται στο στάδιο 6) Το PspAllocateThread εκτελεί τα ακόλουθα βήματα: 342 1. Ένας εκτελεστικός φραγμός νημάτων (ETHREAD) δημιουργείται και μονογράφεται 2. Προτού να μπορέσει να εκτελέσει το νήμα, χρειάζεται έναν σωρό και ένα πλαίσιο στους οποίους να τρέξει, έτσι αυτοί είναι ιδρυθείτε. Το μέγεθος σωρών για το αρχικό νήμα δεν λαμβάνεται από είναι εικόνα-εκεί κανένας τρόπος να διευκρινίσει ένα άλλο μέγεθος 3. Ο φραγμός περιβάλλοντος νημάτων (TEB) διατίθεται για το νέο νήμα 4. Η διεύθυνση έναρξης νημάτων χρήστης-τρόπου αποθηκεύεται στο ETHREAD. Αυτό είναι λειτουργία ξεκινήματος νημάτων σε Ntdll.dll (RtlUserThreadStart). Η διευκρινισμένη έναρξη παραθύρων του χρήστη η διεύθυνση αποθηκεύεται στο φραγμό ETHREAD σε μια διαφορετική θέση η οποία έτσι όπως εργαλεία διόρθωσης Ο εξερευνητής διαδικασίας μπορεί να ρωτήσει τις πληροφορίες 1. Το KeInitThread καλείται για να οργανώσει το φραγμό KTHREAD. Η αρχική και τρέχουσα βάση του νήματος οι προτεραιότητες τίθενται την προτεραιότητα βάσεων της διαδικασίας, και η συγγένεια και το κβάντο της Σελ. 29 από 226

Κεφάλαιο 1. Διαδικασίες, νήματα και εργασίες τίθενται αυτό διαδικασία. Αυτή η λειτουργία θέτει επίσης στο αρχικό νήμα τον ιδανικό επεξεργαστή. (Δείτε το τμήμα «ιδανικό και τελευταίο Ο επεξεργαστής» για μια περιγραφή για το πώς αυτό είναι επιλεγμένο.) KeInitThread διαθέτει έπειτα έναν σωρό πυρήνων για το νήμα και μονογράφει το machinedependent πλαίσιο υλικού για το νήμα, συμπεριλαμβανομένου πλαίσιο, παγίδα, και πλαίσια εξαίρεσης. Το πλαίσιο του νήματος τίθεται επάνω έτσι ώστε το νήμα θα αρχίσει μέσα τρόπος πυρήνων σε KiThreadStartup. Τέλος, KeInitThread θέτει το κράτος του νήματος μονογραμμένος και επιστροφές σε PspAllocateThread Μόλις τελειώσουν εκείνη την εργασία, NtCreateUserProcess θα καλέσει PspInsertThread για να εκτελέσει μετά από τα βήματα: 1. Μια ταυτότητα νημάτων παράγεται για το νέο νήμα 2. Η αρίθμηση νημάτων στο αντικείμενο διαδικασίας αυξάνεται, και το νήμα προστίθεται κατάλογος νημάτων διαδικασίας 3. Το νήμα τίθεται σε ένα ανασταλμένο κράτος 4. Το αντικείμενο παρεμβάλλεται και οποιεσδήποτε καταχωρημένες επανακλήσεις νημάτων καλούνται 5. Η λαβή δημιουργείται με ObOpenObjectByName 6. Το νήμα είναι για την εκτέλεση με την κλήση KeStartThread 1.3.5 στάδιο 5: Εκτελώντας τα παράθυρα υποσύστημασυγκεκριμένα Μετα-έναρξη Μόλις επιστρέψει NtCreateUserProcess με έναν κώδικα επιτυχίας, όλη η απαραίτητη εκτελεστική διαδικασία και τα αντικείμενα νημάτων έχουν δημιουργηθεί. Τα Kernel32.dll θα εκτελέσουν τώρα τις διάφορες διαδικασίες σχετικές με Υποσύστημα-συγκεκριμένες διαδικασίες παραθύρων για να τελειώσει τη διαδικασία Καταρχήν, οι διάφοροι έλεγχοι γίνονται για εάν τα παράθυρα πρέπει να επιτρέψουν στον εκτελέσιμο για να τρέξουν Αυτοί οι έλεγχοι περιλαμβάνουν την επικύρωση της έκδοσης εικόνας στην επιγραφή και τον έλεγχο εάν παράθυρα η πιστοποίηση εφαρμογής έχει Σελ. 30 από 226