Τι είναι το Code Injection στα Windows;
Η ένεση κώδικα είναι κοινή στα Windows. Οι εφαρμογές "εισάγουν" κομμάτια του δικού τους κώδικα σε μια άλλη τρέχουσα διαδικασία για να τροποποιήσουν τη συμπεριφορά τους. Αυτή η τεχνική μπορεί να χρησιμοποιηθεί για καλό ή κακό, αλλά με κάθε τρόπο μπορεί να προκαλέσει προβλήματα.
Η ένεση κώδικα ονομάζεται επίσης ένεση DLL, επειδή ο κώδικας που εισάγεται είναι συχνά με τη μορφή αρχείου DLL (βιβλιοθήκη δυναμικής σύνδεσης). Ωστόσο, οι εφαρμογές θα μπορούσαν επίσης να εισάγουν άλλους τύπους κώδικα που δεν είναι DLLs σε μια διαδικασία.
Τι χρησιμοποιείται η ένεση κώδικα για
Η ένεση κώδικα χρησιμοποιείται για την πραγματοποίηση όλων των ειδών κόλπα και λειτουργικότητα στα Windows. Ενώ τα νόμιμα προγράμματα το χρησιμοποιούν, χρησιμοποιείται επίσης από κακόβουλο λογισμικό. Για παράδειγμα:
- Τα προγράμματα προστασίας από ιούς συχνά εισάγουν κώδικα σε προγράμματα περιήγησης ιστού. Μπορούν να το χρησιμοποιήσουν για να παρακολουθήσουν την κυκλοφορία του δικτύου και να μπλοκάρουν το επικίνδυνο περιεχόμενο του ιστού, για παράδειγμα.
- Τα κακόβουλα προγράμματα ενδέχεται να προσθέσουν κώδικα στο πρόγραμμα περιήγησης ιστού σας για να παρακολουθήσουν καλύτερα την περιήγησή σας, να κλέψουν προστατευμένες πληροφορίες όπως κωδικούς πρόσβασης και αριθμούς πιστωτικών καρτών και να αλλάξουν τις ρυθμίσεις του προγράμματος περιήγησης.
- Το WindowBlinds του Stardock, το οποίο τοποθετεί την επιφάνεια εργασίας σας, εισάγει κώδικα για να τροποποιήσει τον τρόπο με τον οποίο σχεδιάζονται τα παράθυρα.
- Οι φράχτες του Stardock εισάγουν κώδικα για να αλλάξουν τον τρόπο λειτουργίας της επιφάνειας εργασίας των Windows.
- Το AutoHotkey, το οποίο σας επιτρέπει να δημιουργείτε δέσμες ενεργειών και να εκχωρείτε σε αυτά τα πλήκτρα πρόσβασης, εισάγει κώδικα για να το επιτύχετε.
- Ο οδηγός γραφικών, όπως τα ένθετα DLL της NVIDIA, ολοκληρώνουν διάφορες εργασίες σχετικές με γραφικά.
- Ορισμένα προγράμματα εισάγουν DLL για να προσθέσουν πρόσθετες επιλογές μενού σε μια εφαρμογή.
- Τα εργαλεία εξαπάτησης των παιχνιδιών PC συχνά εισάγουν κώδικα σε παιχνίδια για να τροποποιήσουν τη συμπεριφορά τους και να αποκτήσουν αθέμιτο πλεονέκτημα έναντι άλλων παικτών.
Είναι κακή η ένδειξη κώδικα?
Αυτή η τεχνική χρησιμοποιείται συνεχώς από μια μεγάλη ποικιλία εφαρμογών στα Windows. Είναι ο μόνος πραγματικός τρόπος για να πετύχετε μια ποικιλία εργασιών. Σε σύγκριση με μια σύγχρονη κινητή πλατφόρμα, όπως το iOS της Apple ή το Android της Google, η επιφάνεια εργασίας των Windows είναι τόσο ισχυρή, διότι εάν προσφέρει τέτοια ευελιξία στους προγραμματιστές.
Φυσικά, με όλη αυτή την εξουσία έρχεται κάποιος κίνδυνος. Η ένεση κώδικα μπορεί να προκαλέσει προβλήματα και σφάλματα στις εφαρμογές. Η Google λέει ότι οι χρήστες των Windows που έχουν κώδικα που έχουν εισαχθεί στο πρόγραμμα περιήγησης Chrome τους είναι κατά 15% πιο πιθανό να βιώσουν συντριβές του Chrome, γι 'αυτό και η Google προσπαθεί να το εμποδίσει. Η Microsoft σημειώνει ότι η έγχυση κώδικα θα μπορούσε να χρησιμοποιηθεί από κακόβουλες εφαρμογές για να παραβιάσει τις ρυθμίσεις του προγράμματος περιήγησης, πράγμα που είναι ένας λόγος για τον οποίο έχει ήδη αποκλειστεί στην άκρη.
Η Microsoft παρέχει ακόμη οδηγίες για να ελέγξει εάν τα φορμά DLL τρίτων μερών φορτώνονται στο Microsoft Outlook, καθώς προκαλούν τόσες πολλές διακοπές στο Outlook.
Ως υπάλληλος της Microsoft το έθεσε σε ένα blog του προγραμματιστή από το 2004:
Η έγχυση DLL δεν είναι ποτέ ασφαλής. Μιλάτε για να κάνετε squirting κώδικα σε μια διαδικασία που ποτέ δεν σχεδιάστηκε, κατασκευάστηκε ή δοκιμάστηκε από τον συγγραφέα της διαδικασίας, και συν-opting ή δημιουργώντας ένα νήμα για να τρέξει αυτόν τον κώδικα. Διατρέχετε τον κίνδυνο να δημιουργήσετε προβλήματα χρονισμού, συγχρονισμού ή πόρων που δεν υπήρχαν πριν ή επιδεινώνοντας ζητήματα που υπήρχαν εκεί.
Με άλλα λόγια, η έγχυση κώδικα είναι κάπως βρώμικο. Σε έναν ιδανικό κόσμο, θα υπήρχε ένας ασφαλέστερος τρόπος για να επιτευχθεί αυτό που δεν προκάλεσε πιθανή αστάθεια. Ωστόσο, η ένεση κώδικα είναι απλώς ένα φυσιολογικό μέρος της πλατφόρμας εφαρμογής των Windows σήμερα. Αυτό συμβαίνει συνεχώς στο παρασκήνιο στον υπολογιστή με Windows. Ίσως να το αποκαλείτε απαραίτητο κακό.
Πώς να ελέγξετε για τα Injected DLLs
Μπορείτε να ελέγξετε για την ένεση κώδικα στο σύστημά σας με την ισχυρή εφαρμογή Process Explorer της Microsoft. Είναι βασικά μια προχωρημένη έκδοση του Task Manager που είναι γεμάτη με πρόσθετα χαρακτηριστικά.
Κάντε λήψη και εκτελέστε το Process Explorer αν θέλετε να το κάνετε αυτό. Κάντε κλικ στην επιλογή Προβολή> Κάτω προβολή παραθύρου> DLL ή πατήστε Ctrl + D.
Επιλέξτε μια διαδικασία στο επάνω τμήμα του παραθύρου και κοιτάξτε στο κάτω τμήμα του παραθύρου για να δείτε τα DLL που έχουν φορτωθεί. Η στήλη "Όνομα εταιρείας" παρέχει έναν χρήσιμο τρόπο φιλτραρίσματος αυτής της λίστας.
Για παράδειγμα, είναι φυσιολογικό να βλέπετε εδώ μια ποικιλία DLL από την "Microsoft Corporation", καθώς είναι μέρος των Windows. Επίσης, είναι φυσιολογικό να βλέπετε DLL από την ίδια εταιρεία με τη συγκεκριμένη διαδικασία - "Google Inc." στην περίπτωση του Chrome στο παρακάτω στιγμιότυπο οθόνης.
Μπορούμε επίσης να εντοπίσουμε μερικά αρχεία DLL από το "AVAST Software" εδώ. Αυτό δείχνει ότι το λογισμικό Avast antimalware στο σύστημά μας εισάγει κώδικα όπως το "Avast Script Blocking library filter library" στο Chrome.
Δεν υπάρχει τίποτα που μπορείτε να κάνετε εάν βρείτε την ένεση κώδικα στο σύστημά σας - εκτός από την κατάργηση της εγκατάστασης του κώδικα ένεσης του προγράμματος, για να αποφευχθεί η πρόκληση προβλημάτων. Για παράδειγμα, εάν το Chrome σπάσει τακτικά, ίσως να θέλετε να δείτε εάν υπάρχουν προγράμματα που εισάγουν κώδικα στο Chrome και απεγκαταστήσετε τα για να αποτρέψετε την παραβίαση των διαδικασιών του Chrome.
Πώς λειτουργεί ο κώδικας έγχυσης?
Η ένεση κώδικα δεν τροποποιεί την υποκείμενη εφαρμογή στο δίσκο σας. Αντίθετα, περιμένει την εκτέλεση αυτής της εφαρμογής και εισάγει πρόσθετο κώδικα σε αυτήν την τρέχουσα διαδικασία για να αλλάξει τον τρόπο λειτουργίας της.
Τα Windows περιλαμβάνουν μια ποικιλία διασυνδέσεων προγραμματισμού εφαρμογών (API) που μπορούν να χρησιμοποιηθούν για την ένεση κώδικα. Μια διαδικασία μπορεί να προσκολληθεί σε μια διαδικασία στόχου, να διαθέσει μνήμη, να γράψει ένα DLL ή άλλο κώδικα σε αυτή τη μνήμη και στη συνέχεια να καθοδηγήσει τη διαδικασία προορισμού για την εκτέλεση του κώδικα. Τα Windows δεν εμποδίζουν τις διεργασίες στον υπολογιστή σας να παρεμβάλλονται μεταξύ τους.
Για περισσότερες τεχνικές πληροφορίες, ανατρέξτε σε αυτήν την ανάρτηση ιστολογίου που εξηγεί τον τρόπο με τον οποίο οι προγραμματιστές μπορούν να εγχέουν DLL και αυτή η ματιά σε άλλους τύπους έγχυσης κώδικα στα Windows.
Σε ορισμένες περιπτώσεις, κάποιος μπορεί να αλλάξει τον υποκείμενο κώδικα στο δίσκο - για παράδειγμα, αντικαθιστώντας ένα αρχείο DLL που συνοδεύει ένα παιχνίδι υπολογιστή με ένα τροποποιημένο για να ενεργοποιήσετε την εξαπάτηση ή την πειρατεία. Αυτό τεχνικά δεν είναι "έγχυση κώδικα." Ο κώδικας δεν εισάγεται σε μια τρέχουσα διαδικασία, αλλά το πρόγραμμα είναι αντ 'αυτού εξαπατώντας να φορτώσει ένα διαφορετικό DLL με το ίδιο όνομα.
Κάλυψη εικόνας: Lukatme / Shutterstock.com.