Blog

9 θάλασσα 2017

Ανάπτυξη Λογισμικού: Τι είναι ένας γάντζος;

/
Αναρτήθηκε από

Ανάπτυξη Λογισμικού: Τι είναι ένας γάντζος;

Πρέπει να ξέρουμε για λίγους τύπους γάντζου.

Τι είναι το γάντζο;Στην ανάπτυξη λογισμικού, το Hooking είναι μια ιδέα που επιτρέπει την αλλαγή της συμπεριφοράς ενός προγράμματος. Ο κωδικός πιθανότητας σάς προσφέρει την αλλαγή της πρώτης συμπεριφοράς για κάτι χωρίς να αλλάξετε τον κωδικό της κατηγορίας σύγκρισης. Αυτό ολοκληρώθηκε με την αντικατάσταση των στρατηγικών αγκίστρωσης.

Αυτό το είδος χρήσης είναι εξαιρετικά χρήσιμο λόγω της προσθήκης νέων λειτουργιών σε εφαρμογές, επιπλέον ενθαρρύνοντας την αλληλογραφία μεταξύ εναλλακτικών διαδικασιών και μηνυμάτων του συστήματος. Οι γάντζοι τείνουν να μειώνουν την εκτέλεση του συστήματος με την επέκταση του φορτίου προετοιμασίας που χρειάζεται να εκτελεί το σύστημα για κάθε μήνυμα. Θα έπρεπε να εισαχθεί μόνο όταν απαιτείται και να εκκενωθεί το συντομότερο δυνατό.

Θεωρείτε ότι χρησιμοποιείτε ένα Σύστημα Διαχείρισης Πελατών (CMS) από έναν ξένο και ίσως θέλετε ένα σούπερ στέλεχος να σας προειδοποιεί με email κάθε φορά που διανεμόταν μια άλλη θέση και ότι αυτή η συμπεριφορά δεν είναι η προεπιλογή της συσκευής. Θα υπήρχαν δύο διαδρομές προς τα εμπρός:

Αλλάξτε τον πηγαίο κώδικα CMS δεν είναι μια έξυπνη σκέψη, μετά από όλα στην επόμενη ανανέωση της συσκευής που θα αντιμετωπίσετε τη δυσκολία να χάσει την αλλαγή σας ή δεν έχουν την ικανότητα να συνεχίσει τα πάντα ανανεωμένο?

  • Δημιουργήστε το δικό σας CMS είναι μια άλλη τρομερή σκέψη, όλα τα πράγματα που εξετάζονται, δεν έχετε αρκετή ενέργεια ή περιουσιακά στοιχεία αρκετά για να κάνετε νέα πράγματα ή ακόμα και να κρατήσει επάνω τι να κατασκευάσει?
  • Εξερευνήστε την πιθανότητα να χρησιμοποιήσετε ένα άγκιστρο, δηλαδή να ελέγξετε αν το CMS κοιτάζει σε εξωτερικές μονάδες ή μονάδες για στοιχεία ενός προσφερόμενου ονόματος που θα εκτελεστούν με το λαχταριστό λεπτό, για αυτή την περίπτωση, τη διανομή νέων θέσεων.
  • Το κάτω προς τη γη μέρος των αγκίστρων που χρησιμοποιούνται κυμαίνεται γενικά από συσκευή σε όργανο. Η αρχή της ευνοϊκής θέσης των αγκίστρων δεν είναι να αλλάξει ο πρώτος κώδικας. Σε όλα τα εγχειρίδια εξαιρετικής πρακτικής όλων των συσκευών ανοιχτού κώδικα που έχουν διαλείπουσες ενημερώσεις, το μάντρα που αναβιώνει το ίδιο δεν αλλάζει το κέντρο. Παρά το γεγονός ότι η ανανέωση είναι αδιανόητη, κάθε άτομο που έρχεται αργότερα για να συντηρήσει δεν θα σκεφτεί την αλλαγή και ο άνθρωπος που μόλις το συζητάει εσείς δεν είναι η συσκευή.

Η εκτατότητα είναι μια άλλη προτιμώμενη άποψη της χρήσης στρατηγικών αγκιστριών που επιτρέπουν στην εφαρμογή να αυξάνει τις σταθερές διεπαφές της. Οι στρατηγικές αγκίστρου αποσυνδέουν τις σταθερές διεπαφές και τη διεξαγωγή ενός χώρου που μπορεί να προκύψει από την δημιουργία μιας εφαρμογής για μια συγκεκριμένη ρύθμιση.

Καινοτόμες τεχνολογικές λύσεις προσφέρει Εκπαίδευση Ανάπτυξης Λογισμικού στο Gurgaon, Delhi NCR στην Ινδία.

Άγκιστρα ως μοτίβα σχεδίασης

Είναι ενδιαφέρον να σημειώσουμε ότι πολυάριθμα (όλα) σχεδιαγράμματα σκιαγραφούν τη σημασιολογία για τα άγκιστρα. Μιλούν για τον τρόπο εκτέλεσης υποσυστημάτων προβληματικών περιοχών. Ορισμένοι εξαρτώνται από τον κανόνα της ανάπτυξης της απόσπασης: Περίληψη, Εργοστάσιο, Οικοδόμος, Διοίκηση, Διερμηνέας, Παρατηρητής, Πρωτότυπο, Κράτος και Στρατηγική.

Άλλοι και στα δύο παραδείγματα ενοποίησης και ανάπτυξης κατατμήσεων: Μέθοδος προτύπου και Γέφυρα.

Η σημασιολογία κοινοποιείται συνήθως στο όνομα της τεχνικής αγκίστρου (για παράδειγμα, στην εντολή, η στρατηγική καλείται execute ()).

 

Πίνακας εικονικής μεθόδου

Ανάπτυξη Λογισμικού - Τι είναι ένα Άγκιστρο - Point 1Vηβική τεχνική μεταφέρεται σε μια αδιαμφισβήτητη διαδρομή από τις στατικές στρατηγικές, αλλά καθώς οι εικονικές τεχνικές μπορούν να αλλάξουν, ο μεταγλωττιστής δεν γνωρίζει τη διεύθυνση μιας συγκεκριμένης εικονικής χωρητικότητας όταν το καλείτε στον κώδικα σας. Ο μεταγλωττιστής, συνεπώς, συγκεντρώνει έναν πίνακα εικονικής μεθόδου (VMT), ο οποίος δίνει έναν τρόπο διερεύνησης στις διευθύνσεις χωρητικότητας κατά το χρόνο εκτέλεσης. Κάθε ενιαία εικονική στρατηγική ενεργοποιείται κατά τη διάρκεια εκτέλεσης μέσω του VMT. Το VMT μιας ερώτησης περιέχει όλες τις εικονικές στρατηγικές για τους προδρόμους και επιπλέον εκείνες που διακηρύσσει. Επομένως, οι εικονικές τεχνικές χρησιμοποιούν περισσότερη μνήμη από τις στρατηγικές στοιχείων, παρά το γεγονός ότι τρέχουν πιο γρήγορα.

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

 

Σύνδεση API

Ανάπτυξη Λογισμικού - Τι είναι ένα Άγκιστρο - Point 2Η διαδικασία Hooking API σας επιτρέπει πραγματικά να ανακαλύψετε τα στοιχεία του λειτουργικού συστήματος. Με τη δυνατότητα λήψης τέτοιων χρεώσεων, μπορείτε να αλλάξετε τις παραμέτρους τους, αλλάζοντας την δραστηριότητα που θα εκτελεστεί αρχικά.

Είναι πιθανό, για παράδειγμα, να κόψετε μια συγκεκριμένη εγγραφή, να διατηρήσετε μια εφαρμογή από το τρέξιμο και να ζητήσετε μια επιβεβαίωση του πελάτη για να αποθηκεύσετε ένα αρχείο στον κύκλο και ούτω καθεξής.

Πράγματι, η μεγαλύτερη μείωση των αποφάσεων είναι στην περιοχή της ασφάλειας, για παράδειγμα, antivirus και antispyware. Όντως, υπάρχουν περιστάσεις στη συνηθισμένη μας ανάπτυξη, όπου το API Hooking μπορεί να είναι η κύρια διέξοδος.

Διεπαφή προγραμματισμού Η αγκίστρωση, υπό τις συγκεκριμένες συνθήκες μας, προϋποθέτει την απόκτηση ενός API από το λειτουργικό σύστημα ή από οποιοδήποτε DLL και την αλλαγή της τυπικής εκτέλεσης σε κάπου αλλού, ακόμα πιο συγκεκριμένα, σε άλλη χωρητικότητα. Υπάρχουν ουσιαστικά δύο προσεγγίσεις:

EAT και IAT: όλα τα EXE / DLL περιέχουν API για εισαγωγή και τιμοκαταλόγους. Αυτοί οι πίνακες περιέχουν δείκτες που εμφανίζουν το σημείο εισαγωγής API. Αλλάζοντας αυτούς τους δείκτες, κάνοντάς τους να υποδείξουν την επανάκλησή μας, έχουμε ένα γάντζο. Όντως, αν αυτό το EXE / DLL δεν εισάγει API, αυτή η στρατηγική δεν θα λειτουργήσει.

Επαλήθευση απλού κώδικα: Όπως είπε προηγουμένως, σε περίπτωση που ήταν πιθανό να προστεθεί μια κλήση στην κλήση μας προς την αρχή του κώδικα API, θα μπορούσαμε να την "ανοίξουμε", καθιστώντας την ικανότητά μας να τρέχει σε οποιοδήποτε σημείο κλήθηκε το API. Είτε αυτό συμβαίνει, υπάρχει ένα ζήτημα: αν, μετά την επεξεργασία του κώδικα μας, έπρεπε να καλέσουμε το πρώτο API, θα επιστρέψαμε στην callback μας και θα δημιουργήσουμε μια πλημμύρα στοίβας. Μια ρύθμιση είναι να καθορίσετε το άγκιστρο ώστε να έχει την ικανότητα να καλέσει το API, ξανά να το δοκιμάσει μόλις εκτελεστεί. Όσο και να είναι, εν μέσω αυτού του κεντρικού εδάφους, μπορούν να γίνουν μερικές κλήσεις API και δεν θα εκτελεστούν τα callback μας.

Το Inline Hook είναι το σημείο στο οποίο έχουμε τις βασικές κατευθυντήριες γραμμές μιας δυναμικότητας και κάνουμε το εμπόριο για ένα Jump, Push ή Call για την ικανότητά μας.

Προδιαγραφημένη ανάγνωση: Το λειτουργικό σύστημα Windows υποστηρίζει επιπλέον το API αγκύρωσης. Πρέπει να γνωρίζουμε πώς λειτουργούν τα Windows API με αγκίστρωση;

 

Περιστασιακά σύνδεση

Ανάπτυξη Λογισμικού - Τι είναι ένα Hook - Point Οι τεχνικές γάντζου 3As αποσυνδέουν τις σταθερές διεπαφές και τη διεξαγωγή ενός χώρου που μπορεί να προκύψει από τη δημιουργία μιας εφαρμογής για μια συγκεκριμένη ρύθμιση συμβαίνει μια αντιστροφή του ελέγχου. Αντικείμενα χειριστές ευκαιριών τροποποιούν τα βήματα προετοιμασίας. Στο τέλος της ημέρας, όταν συμβαίνει μια περίσταση, ο χειριστής αποκρίνεται στρατηγικές άγκιστρου με άγκιστρα σε προ-εγγεγραμμένα αντικείμενα που εκτελούν συγκεκριμένες δραστηριότητες προετοιμασίας. Περιπτώσεις των περιπτώσεων: μηνύματα παραθύρων, δέσμες προσγείωσης από τους λιμένες αλληλογραφίας.

 

Στο εσωτερικό του IAT Hooking

Ανάπτυξη Λογισμικού - Τι είναι ένα Hook - Point Η διαδικασία 4Each στα Windows έχει έναν πίνακα που ονομάζεται Import Address Table (IAT), ο οποίος αποθηκεύει δείκτες στις δυνατότητες που αποστέλλονται από τα DLLs κάθε διαδικασίας. Αυτός ο πίνακας συμπληρώνεται σταδιακά με τη διεύθυνση των στοιχείων των αρχείων DLL κατά το χρόνο εκτέλεσης.

Με τη χρήση ιδιαίτερων δυνατοτήτων, μπορούμε να καταστήσουμε τον πίνακα IAT εγγράψιμο, καθώς είναι πιθανό να αλλάξει η διεύθυνσή του με μια διεύθυνση προσαρμοσμένης ικανότητας, αλλάζοντας πάλι τον πίνακα ως απλή μετά από αυτήν την αλλαγή. Στο σημείο που η διαδικασία προσπαθεί να καλέσει την χωρητικότητα, η διεύθυνσή της αποκτάται στον πίνακα IAT και επιστρέφεται ένας δείκτης. Καθώς ο πίνακας IAT έχει αλλάξει, η προσαρμοσμένη χωρητικότητα δημιουργείται από την πρώτη χωρητικότητα και ο κωδικός που έχει εγχυθεί στη διαδικασία αποκτάται.

 

Netfilter Hook

Ανάπτυξη Λογισμικού - Τι είναι ένα Άγκιστρο - Point Το 5Netfilter είναι ένα υποσύστημα κομμάτι του Linux πιο αξιοσημείωτο από το 2.4. Είναι υπεύθυνη για το διαχωρισμό δέσμης, NAT, firewall, ανακατεύθυνση, μεταξύ άλλων. Το Netfilter είναι εξαιρετικά εκτάσιμο και η τεκμηρίωσή του έχει ολοκληρωθεί. Αφήνει την πιθανότητα να χρησιμοποιηθούν Αγκίστρι στον κώδικα του Kernel, καθιστώντας την χρήση του εξαιρετικά ευέλικτη και γενικά δεκτή από την ομάδα. Αυτά τα άγκιστρα αφήνουν μερικά πιθανά αποτελέσματα και μπορούν να συμπληρωθούν ως παράγοντες ενεργοποίησης για συγκεκριμένες περιπτώσεις.

 

Συμπέρασμα:

Ανάπτυξη Λογισμικού - Τι είναι ένας Γάντζος - Συμπεράσματα Οι διαδικασίες προγραμματισμού αγκίστρωσης είναι αποτελεσματικές και ανοίγουν ένα εύρος πιθανών αποτελεσμάτων για τους μηχανικούς λογισμικού, ωστόσο θα πρέπει να χρησιμοποιούνται με ειδοποίηση, καθώς περιλαμβάνουν μια πιο εξέχουσα πολυπλοκότητα στη ροή των διαδικασιών και αλλάζουν την πρώτη τη διεξαγωγή των λειτουργικών συστημάτων, των εφαρμογών ή άλλων τομέων λογισμικού, καθιστώντας δύσκολη την κατανόηση του σκεπτικού του λογισμικού. Εκτός από αυτό, όπως διευκρινίστηκε προηγουμένως σε αυτό το άρθρο, η χρήση αυτών των συστημάτων χωρίς πρότυπο μπορεί να υποβαθμίσει την εκτέλεση των εφαρμογών.

Αφήστε μια απάντηση

 
GTranslate Please upgrade your plan for SSL support!
GTranslate Your license is inactive or expired, please subscribe again!