Blog

9 Mer 2017

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

/
Posté par

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 votre propre CMS est une autre pensée terrible, tout compte fait, vous n'avez pas suffisamment d'énergie ou d'actifs suffisants pour faire de nouvelles choses ou même garder ce qu'il faut 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. Le principe de position favorable des crochets n'est pas de changer le premier code. Dans tous les grands manuels de pratique de tous les appareils open source qui ont des mises à jour intermittentes, le mantra qui se rechape ne change pas le centre. Malgré les rafraîchissements inimaginables, tout individu qui viendra plus tard faire l'entretien ne pensera pas au changement, et la personne qui en discute à 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

Les techniques 1Virtual sont amenées dans un chemin indiscernable des stratégies statiques, mais comme les techniques virtuelles peuvent être changées, le compilateur ne connait pas l'adresse d'une capacité virtuelle spécifique quand vous l'appelez dans votre code. Le compilateur assemble donc une table de méthode virtuelle (VMT), qui permet d'interroger les adresses de capacité en cours d'exécution. Chaque stratégie virtuelle unique est activée lors de l'exécution via le VMT. Le VMT d'une question contient toutes les stratégies virtuelles pour ses précurseurs, et en plus ceux qu'il proclame. Par conséquent, les techniques virtuelles utilisent plus de mémoire que les stratégies d'éléments, bien qu'elles soient 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 2La procédure de l'API Hooking vous permet vraiment de réinventer les éléments du système de travail. Avec la possibilité de capturer de tels frais, vous pouvez modifier leurs paramètres en changeant 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: tout EXE / DLL contient une API pour importer et comparer les 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 cet EXE / DLL n'importait pas d'API, cette stratégie ne fonctionnera pas;

Écrasement de code simple: Comme indiqué précédemment, dans le cas où il était concevable d'ajouter un appel à notre rappel vers le début du code API, nous pourrions "l'accrocher", rendant notre capacité à tout moment où l'API a été appelée. Quoi qu'il en soit, il y a un problème: si, après le traitement de notre code, nous devions appeler la première API, nous retomberions sur notre callback, et un flood serait créé. Un arrangement est de fixer le crochet pour avoir la capacité d'appeler l'API, en le réessayant 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 ne pas exécuter 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 logiciels - Qu'est-ce qu'un crochet 3As techniques de crochet découpler des 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 un renversement de contrôle. Les gestionnaires d'objets occasionnels modifient les étapes de préparation. À la fin de la journée, lorsqu'une occasion se produit, le gestionnaire répond à des stratégies de décrochage sur des objets pré-inscrits qui exécutent des activités de préparation particulières. Cas d'occasions: messages de fenêtre, paquets venant des ports de correspondance.

 

À l'intérieur de IAT Hooking

Développement de logiciels - Qu'est-ce qu'un processus 4Each Hook-Point dans Windows a une table appelée Table d'adresses d'importation (IAT), qui stocke des pointeurs sur les capacités envoyées par les DLL de chaque procédure. Cette table est remplie progressivement avec l'adresse des éléments des DLL lors 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 point de connexion 5Netfilter est un sous-système de pièces Linux plus remarquable que 2.4. Il est en charge de la séparation des paquets, NAT, firewall, redirection, entre autres. Netfilter est exceptionnellement extensible et sa documentation est terminée. Il 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 laissent quelques issues concevables et peuvent remplir en tant que déclencheurs pour des occasions spécifiques.

 

Conclusion:

Développement de logiciels - 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 logiciels, mais il doit être utilisé avec vigilance, car ils comprennent une intrication plus importante dans le flux de procédures et de modifier le premier la conduite des systèmes d'exploitation, des applications ou d'autres segments de logiciels, rendant difficile la compréhension de la logique du logiciel. Autre que cela, comme indiqué précédemment dans cet article, l'utilisation de ces systèmes sans paradigme peut annuler l'exécution des applications.

Laisser un commentaire

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