Blog

9 Mer 2017

Développement de logiciels: Qu'est-ce qu'un crochet?

Développement de logiciels: Qu'est-ce qu'un crochet?

Nous devrions savoir sur quelques types de crochet.

Qu'est-ce qu'un crochet?Dans le développement de logiciels, Hooking est une idée qui permet de changer la conduite d'un programme. Le code de possibilité vous propose de changer la première conduite de quelque chose sans changer votre code de la classe de comparaison. Ceci est fini en écrasant les stratégies de crochet.

Ce type d'utilisation est extrêmement utile en raison de l'ajout de nouvelles fonctionnalités aux applications, encourageant en outre la correspondance entre les procédures alternatives et les messages du système. Les hameçons ont tendance à réduire l'exécution du système en augmentant la charge de préparation que le système doit effectuer pour chaque message. Il devrait être introduit juste au moment requis et évacué à la première occasion.

Imaginez que vous utilisez un système de gestion des clients (SGC) d'un tiers et que vous souhaitiez qu'un super-administrateur soit averti par e-mail chaque fois qu'un autre message a été distribué et que cette conduite n'est pas celle par défaut de l'appareil. Il y aurait quelques routes vers l'avant:

Changer le code source du CMS n'est pas une idée intelligente, après tout dans la mise à jour suivante de l'appareil, vous devrez faire face à la difficulté de perdre votre changement ou ne pas avoir la capacité de continuer tout rafraîchi;

  • Faire de votre propre système de gestion de contenu une autre pensée terrible, tout compte fait, vous n'avez pas assez d'énergie ou de ressources suffisantes pour faire de nouvelles choses ou même continuer à fabriquer;
  • Explorer la probabilité d'utiliser un crochet, c'est-à-dire, vérifier si le CMS regarde dans des modules ou des modules extérieurs pour les éléments d'un nom offert à exécuter à la minute désirée, pour cette situation, la distribution de nouveaux messages.
  • La partie terre-à-terre de l'utilisation des crochets varie généralement d'un appareil à l'autre. La principale position favorable des crochets n'est pas de changer le premier code. Dans tous les manuels de bonnes pratiques de tous les appareils open source qui ont des mises à jour intermittentes, le mantra qui se refond ne change pas le centre. Malgré le fait de se rafraîchir inimaginable, tout individu qui viendra plus tard faire l'entretien ne pensera pas au changement, et la personne qui en parle à peine est vous, pas l'appareil.

L'extensibilité est un autre point de vue privilégié de l'utilisation de stratégies de hook qui permettent à l'application d'augmenter ses interfaces stables. Les stratégies Hook découplent les interfaces stables et la conduite d'un espace de variété pouvant émerger de l'instanciation d'une application pour un paramètre spécifique.

Solutions technologiques innovantes offre une formation en développement logiciel à Gurgaon, Delhi NCR en Inde.

Crochets comme modèles de conception

Il est intriguant de noter que de nombreux (tous) plans de contour illustrent la sémantique des hameçons. Ils parlent de la façon d'exécuter des sous-systèmes de zones à problèmes. Certains dépendent de la règle du développement du détachement: Résumé, Usine, Constructeur, Commandement, Interprète, Observateur, Prototype, État et Stratégie.

D'autres dans les deux exemples d'unification et de développement de partition: Template Method et Bridge.

La sémantique est généralement communiquée dans le nom de la technique de crochet (par exemple, dans la commande, la stratégie est appelée execute ()).

Accrocher une table de méthode virtuelle

Développement de logiciels - Qu'est-ce qu'un Hook - Les techniques 1Virtual sont associées à des stratégies statiques, mais comme les techniques virtuelles peuvent être modifiées, le compilateur ne connaît pas l'adresse d'une capacité virtuelle spécifique lorsque vous l'appelez dans votre code. Le compilateur assemble donc une VMT (Virtual Method Table), qui permet d'interroger les adresses de capacité lors de l'exécution. Chaque stratégie virtuelle est activée lors de l'exécution via le VMT. La VMT d'une question contient toutes les stratégies virtuelles pour ses précurseurs, ainsi que celles qu'elle proclame. Par conséquent, les techniques virtuelles utilisent plus de mémoire que les stratégies d'éléments, en dépit du fait qu'elles sont plus rapides.

Puisque VMT est une table qui contient les pointeurs avec des adresses de mémoire pour les capacités d'interface, ce qui devrait être fait est de remplacer la première adresse de mémoire par une adresse d'un travail de crochet légitime. Le long de ces lignes, la technique appelée sera écrasée, et la nouvelle conduite convoitée de la capacité sera exécutée.

API de hook

Développement de logiciels - Qu'est-ce qu'un Hook-Point? 2La procédure d'API Hooking vous permet vraiment de réinventer les éléments du système de travail. Avec la possibilité de capturer ces frais, vous pouvez modifier leurs paramètres en modifiant l'activité qui serait effectuée initialement.

Il est concevable, par exemple, d'annuler un enregistrement spécifique, d'empêcher l'exécution d'une application et d'exiger une affirmation de la part du client pour épargner une archive au cercle, et cetera.

En effet, la plus grande coupe de décision est dans le domaine de la sécurité, par exemple, antivirus et antispyware. Quoi qu'il en soit, il y a des circonstances dans notre développement ordinaire où l'API Hooking, peut être l'issue principale.

Interface de programmation L'accrochage, dans notre cas particulier, implique l'obtention d'une API à partir du système d'exploitation, ou de toute DLL, et de changer son exécution typique à un autre endroit, d'autant plus exactement, à une autre capacité. Il y a fondamentalement deux approches:

EAT et IAT: tous les fichiers EXE / DLL contiennent des API pour importer et tarifer des tables. Ces tables contiennent des pointeurs indiquant le point d’entrée de l’API. En changeant ces pointeurs, en les faisant indiquer notre rappel, nous avons un crochet. Quoi qu'il en soit, si ce fichier EXE / DLL n'importe pas les API, cette stratégie ne fonctionnera pas.

Écrasement simplifié du code: Comme indiqué précédemment, dans le cas où il serait concevable d'ajouter un appel à notre rappel vers le début du code API, nous pourrions le "connecter", ce qui ferait fonctionner notre capacité à n'importe quel moment. Quoi qu’il en soit, il ya un problème: si, après le traitement de notre code, nous devions appeler la première API, nous aurions recours à notre rappel, et une inondation de pile serait créée. Une solution consiste à réparer le crochet pour qu’il puisse appeler l’API, le réessayer une fois qu’il est exécuté. Quoi qu’il en soit, au milieu de ce centre, quelques appels d’API peuvent être effectués et n’exécuteraient pas notre rappel;

Inline Hook est le point où nous obtenons les principales directives d'une capacité, et nous négocions pour un saut, une poussée ou un appel pour notre capacité.

Lecture prescrite: système de travail Windows sous-tend également API de hook. Nous devrions savoir comment fonctionne l'accrochage à l'API Windows?

Occasion d'accrocher

Développement de logiciel - Qu'est-ce qu'un Hook - Point Les techniques de hook de 3As découplent les interfaces stables et la conduite d'un espace de variété qui peut émerger de l'instanciation d'une application pour un paramètre particulier se produit une inversion de contrôle. Les gestionnaires d'objets permettent de modifier les étapes de préparation. À la fin de la journée, lorsqu'une occasion se présente, le gestionnaire répond à des stratégies de raccourci sur des objets pré-inscrits qui exécutent des activités de préparation à une occasion particulière. Cas d'occasions: messages de fenêtre, paquets arrivant des ports de correspondance.

À l'intérieur de IAT Hooking

Développement de logiciels - Qu'est-ce qu'un Hook-Point? Le processus 4Each sous Windows comporte une table appelée Import Address Table (IAT), qui stocke des pointeurs vers les capacités envoyées par les DLL de chaque procédure. Cette table est renseignée progressivement avec l'adresse des éléments des DLL au moment de l'exécution.

En utilisant des capacités particulières, nous pouvons rendre la table IAT accessible en écriture, en étant concevable pour changer son adresse par une adresse d'une capacité personnalisée, en re-indiquant la table en lecture - simplement après ce changement. Au moment où la procédure tente d'appeler la capacité, son adresse est obtenue dans la table IAT et un pointeur est renvoyé. Comme la table IAT a été changée, la capacité personnalisée est mise en place de la première capacité et le code infusé dans la procédure est obtenu.

Netfilter Hook

Développement de logiciels - Qu'est-ce qu'un Hook - Point 5Netfilter est un sous-système de pièces Linux plus remarquable que 2.4. Il est chargé de séparer les paquets, NAT, pare-feu, redirection, entre autres. Netfilter est exceptionnellement extensible et sa documentation est terminée. Cela laisse la possibilité d'utiliser Hooks dans le code du noyau, rendant son utilisation extrêmement flexible et généralement reçue par le groupe. Ces crochets produisent quelques résultats concevables et peuvent servir de déclencheurs pour des occasions spécifiques.

Conclusion:

Développement de logiciel - Qu'est-ce qu'un crochet - conclusionLes procédures de programmation d'accrochage sont efficaces et ouvrent une gamme de résultats concevables pour les ingénieurs en logiciel, mais elles doivent être utilisées avec alerte car elles impliquent une plus grande complexité dans le flux de procédures et modifient le premier la conduite du système d'exploitation, des applications ou d'autres segments de logiciels, ce qui rend difficile la compréhension de la raison d'être des logiciels. En dehors de cela, comme indiqué précédemment dans cet article, l’utilisation de ces systèmes sans paradigme peut entraver l’exécution des applications.

&bsp

GTranslate Your license is inactive or expired, please subscribe again!